zoukankan      html  css  js  c++  java
  • 关于UnityEngine.Object

    UnityEngine.Object重写了==运算符和!=运算符。

    //
    // Operators
    //
    public static bool operator == (Object x, Object y);
    public static bool operator != (Object x, Object y);

    当GameObject被销毁后,Class类并不是真正null,只是使用==运算符和!=运算符时,Unity会把它当作null值处理。

    Lua代码

    local go = CS.UnityEngine.GameObject('go')
    CS.UnityEngine.GameObject.DestroyImmediate(go)
    
    if (go ~= nil) then
        go.name = 'xxx'
    end

    在LUA里游戏对象在销毁后的判空实际上是有问题的。LUA示例代码里go不会为nil

    解决方案就是在C#代码里扩展一个判空的方法,然后在LUA里调用该方法。

    注意事项

    UnityEngine.GameObject go = new UnityEngine.GameObject(); 
    Debug.Log(go == null); // false
    
    UnityEngine.Object obj = new UnityEngine.Object();
    Debug.Log(obj == null); // true
  • 相关阅读:
    HDU4611+数学
    HDU4612+Tarjan缩点+BFS求树的直径
    HDU4602+推导公式
    HDU4607+BFS
    HDU1353+贪心
    HDU4545+LCS
    HDU4548+素数
    HDU4539+状态压缩DP
    HDU2110+母函数
    HDU1569+最大点权集
  • 原文地址:https://www.cnblogs.com/TravelingLight/p/12102559.html
Copyright © 2011-2022 走看看