2014-02-06 49 views
0

我有一個MonoBehavior屬性,按以下方式確定:團結的行爲屬性,檢查沒有設置,打印空但不== NULL

public GameObject whatever = null; 

我將它設置爲實際的遊戲物體上的參考其中一些將其留在其他地方。基本上,它是一個可選屬性。現在,當我在程序中測試時會發生最瘋狂的事情:

Debug.Log(whatever + " " + (whatever == null)); 

這打印:「null False」。我不知道如何繼續。我想要的是能夠在代碼中對其進行空測試。 (我曾嘗試刪除= null,並沒有改變)。統一似乎正在創造一些包裝或什麼。這是一個完整的還原再現問題:

using UnityEngine; 
using System.Collections; 

public class TestBehavior : MonoBehaviour 
{ 
    public GameObject whatever; 

    // Use this for initialization 
    void Start() 
    { 
     Debug.Log("logical: " + whatever + " " + (whatever == null)); // prints null True 
     Print(whatever); 
    } 

    public void Print<T>(T anObject) 
    { 
     Debug.Log("Now it gets nuts: " + anObject + " " + (anObject == null)); // prints null False 
    } 
} 
+0

'null'在連接期間被當作空字符串對待,所以它應該輸出「false」。 –

+0

另外,您不應該將泛型參數與'null'進行比較,請參閱http://stackoverflow.com/a/864860/238419。雖然,這仍然不應該導致你看到的問題.. –

回答

0

試圖實例化一個團結的行爲時,我都經歷過類似的行爲 - 有一些事情生病了解引擎蓋下回事。

對此的一個快速解決方案可能是引用特定的腳本而不是整個遊戲對象 - 尤其是因爲您需要跨越訪問的大部分內容都包含在另一個腳本中(例如HP)或者同樣可訪問如果whatever是MonoBehaviour

相關問題