Arn*_*aud 0 c# unity-game-engine
我有一个对象,我可以在调试控制台中打印其属性(如“名称”、“id”等)。在下一行,我打印对象本身,然后得到“null”。有点像这样:
Debug.Log($"Item name is {item.name}");
Debug.Log($"Item is {item}");
if (item == null)
{
Debug.Log("Yes, item is null!");
}
Run Code Online (Sandbox Code Playgroud)
因此第一行将打印正确的名称,第二行将打印“null”。第三行打印“是的,项目为空!”。
这怎么可能?(我不知道这是否相关,但这发生在 Unity 代码中。)
谢谢你,阿诺。
那是因为UnityEngine.Object重载了==,!=和bool运算符。
https://docs.unity3d.com/ScriptReference/Object-operator_eq.html
Unity对象在被销毁后将等于null,但您仍然可以访问其部分属性。
您可以使用以下条件来检查 Unity 对象是否完全为空。
(object)item == null
Run Code Online (Sandbox Code Playgroud)