You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中Tooltip UI样式丢失问题求助(附C#代码)

解决方法
  • 检查预设UI框组件状态
    打开itemText预设,确认作为UI框的Image组件:

    • 已勾选启用(Enabled)
    • 颜色的Alpha值不为0(透明状态会导致看不见)
    • 在Hierarchy中,Image节点位于文本组件下方(避免被文本遮挡)
  • 修正UI坐标转换错误
    你当前传递的transform.position是世界空间坐标,若物品栏是UI元素,需转换为UI本地坐标,否则Tooltip可能被渲染到屏幕外。修改DisplayItemInfo方法中的位置处理:

    public void DisplayItemInfo(string itemName, string itemDescription, Vector3 worldPos)
    {
        if (_currentItemInfo != null)
        {
            Destroy(_currentItemInfo.gameObject);
        }
        
        // 将世界坐标转换为InventoryPanel的本地UI坐标
        Vector2 localPos;
        RectTransformUtility.ScreenPointToLocalPointInRectangle(
            _inventoryPanel.GetComponent<RectTransform>(), 
            Camera.main.WorldToScreenPoint(worldPos), 
            null, 
            out localPos
        );
    
        localPos.x -= 80;  
        localPos.y += 40;
        
        _currentItemInfo = Instantiate(_itemInfoPrefab, localPos, Quaternion.identity, _inventoryPanel);
        _currentItemInfo.GetComponent<ItemInfo>().SetUp(itemName, itemDescription);
    }
    
  • 验证父对象与层级设置

    • 确认_inventoryPanel的Canvas渲染模式与Tooltip预设一致(比如都是Overlay,或匹配的World Space设置)
    • 检查_inventoryPanel是否带有RectMask2D组件,若有,需确保Tooltip的位置在裁剪区域内,或临时禁用该组件测试
    • 查看Tooltip实例的Sorting Layer和Order in Layer,确保层级高于物品栏UI,不会被其他元素覆盖
  • 确认预设引用正确性
    检查GameManager中的_itemInfoPrefab是否指向你设计好的带UI框的预设,而非仅包含文本的错误对象


内容的提问来源于stack exchange,提问作者Malgosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 23:45:01