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中文网其他相关文章!