unity3d 对象引用在UNITY中运行时取消自身赋值

jvlzgdj9  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(277)

我试图引用包含一个脚本的网格对象,该脚本包含我的inventorygrid类。我引用了另一个附加到ui摄像头的脚本。

它的分配是这样的:

我试着这样引用它:

public class InventoryController : MonoBehaviour
{
    [SerializeField] private InventoryGrid selectedInventoryGrid;
 
    private void Update()
    {
        if (selectedInventoryGrid = null)
        {
            Debug.Log("InventoryGrid IS null.");
            return;
        }
 
 
        selectedInventoryGrid.GetTileGridPosition(Input.mousePosition);
    }
}

但是,当试图运行引用的类和方法时,我得到“对象引用未设置为对象的示例”。我注意到我分配的“选定库存网格”在运行游戏时会取消分配。

unftdfkk

unftdfkk1#

selectedInventoryGrid = null

应该是的

selectedInventoryGrid == null

我在没有意识到的情况下将其设置为null。

gorkyyrv

gorkyyrv2#

你有两个问题。第一个是@developerLewis提到的。

if (selectedInventoryGrid = null)
    {
        Debug.Log("InventoryGrid IS null.");
        return;
    }

如果你正在检查null,它应该是“==”而不是“=”。
第二个问题是这个字段:

[SerializeField] private InventoryGrid selectedInventoryGrid;

我认为Unity的某些版本有一个bug(或者它一直像这样工作?),如果您的字段是PRIVATE,但已为其分配了[SerializeField]属性,则会删除引用。
解决方案是,您需要将该字段设置为PUBLIC。

public InventoryGrid selectedInventoryGrid;

相关问题