qq_45159119 2022-03-23 09:49 采纳率: 0%
浏览 128

C# 使用Unity时出现NullReferenceException问题

Unity报错:NullReferenceException: Object reference not set to an instance of an object
Farm.Inventory.showItemToolTip.OnPointerEnter (UnityEngine.EventSystems.PointerEventData eventData) (at Assets/script/inventory/UI/showItemToolTip.cs:17)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerEnterHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:29)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

NullReferenceException: Object reference not set to an instance of an object
Farm.Inventory.showItemToolTip.OnPointerExit (UnityEngine.EventSystems.PointerEventData eventData) (at Assets/script/inventory/UI/showItemToolTip.cs:26)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerExitHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:36)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

using UnityEngine;
using UnityEngine.EventSystems;
namespace Farm.Inventory{
    [RequireComponent(typeof(slotUI))]
    public class showItemToolTip : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler
    {
        private slotUI slotUI;
        private inventoryUI inventoryUI=>GetComponentInParent<inventoryUI>();
        private void Awake() {
            slotUI=GetComponent<slotUI>();
        }
        public void OnPointerEnter(PointerEventData eventData)
        {
            if(slotUI.itemAmount!=0) {
                inventoryUI.itemtooltip.gameObject.SetActive(true);
                inventoryUI.itemtooltip.SetupToolTip(slotUI.itemDetails,slotUI.slotType);
            } else {
                inventoryUI.itemtooltip.gameObject.SetActive(false);
            }
        }

        public void OnPointerExit(PointerEventData eventData)
        {
            inventoryUI.itemtooltip.gameObject.SetActive(false);
        }
    }
}



  • 写回答

2条回答 默认 最新

  • 甜艮菜 2022-03-23 11:56
    关注
    if(slotUI.itemAmount!=0) {
                    inventoryUI.itemtooltip.gameObject.SetActive(true);
                    inventoryUI.itemtooltip.SetupToolTip(slotUI.itemDetails,slotUI.slotType);
     } 
    else {
                    inventoryUI.itemtooltip.gameObject.SetActive(false);
     }
    

    是在这一段中 inventoryUI 或者 inventoryUI.itemtooltip 为null
    大概率是

    inventoryUI=>GetComponentInParent<inventoryUI>();//这里获取不成功
    

    可以用print(inventoryUI) 检查一下是否输出为 Null

    评论

报告相同问题?

问题事件

  • 创建了问题 3月23日

悬赏问题

  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)