Unity 中的空類別實例故障排除
Unity 開發人員經常遇到空類別實例,即使參數分配看似正確。這通常源自於繼承自 MonoBehaviour
.
MonoBehaviour
難題
繼承自MonoBehaviour
的腳本成為Unity元件,受其生命週期管理。 這意味著直接使用 new
關鍵字建立實例是不正確的。 Unity 要求使用特定方法進行實例化。
正確實例化:GameObject.AddComponent()
對於像「Rule」這樣的 MonoBehaviour
衍生類,實例化應該利用 GameObject.AddComponent()
:
<code class="language-C#">Rule rule2 = null; void Start() { rule2 = gameObject.AddComponent<Rule>(); }</code>
這確保了與 Unity 系統的正確整合。
實例化非MonoBehaviour
類別
如果 'Rule' 不是繼承自 MonoBehaviour
,則 new
關鍵字是可接受的:
<code class="language-C#">Rule rule2 = null; void Start() { rule2 = new Rule(3); }</code>
這裡,直接實例化和參數賦值如預期般運作。
回呼函數注意事項
較舊的 Unity 版本在將 new
與 MonoBehaviour
衍生類別一起使用時表現出微妙的問題;像 Start()
這樣的回呼函數可能無法正確觸發。雖然這在新版本中可能不太明顯,但最佳實踐仍然要求使用正確的實例化方法。
重點
正確的實例化取決於您的類別是否繼承自MonoBehaviour
。 對 GameObject.AddComponent()
衍生類別使用 MonoBehaviour
,對其他類別使用 new
可防止空引用錯誤並確保 Unity 中正確的腳本行為。
以上是儘管參數分配正確,為什麼我的 Unity 類別實例仍為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!