You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中类成员引用脚本需绑定Inspector,方法参数无需的原因解析

Unity中两种脚本引用方式的差异解释

先看两种场景的代码:

场景1:Public字段引用

public class ExampleClass : MonoBehaviour
{
   public ScriptExample1 scriptexample1;

   public void Method()
   {
      scriptexample1.score++;
   }
}

这种情况必须在Inspector拖入脚本实例,否则会触发空引用异常,原因很直接:

  • scriptexample1是ExampleClass的类成员字段,默认初始值为null,没有指向任何实际的脚本实例。
  • Unity会将public的MonoBehaviour字段序列化到Inspector面板,目的是让你手动指定这个字段关联的场景/预制体中的ScriptExample1实例。如果不拖入,这个字段始终是null,调用scriptexample1.score自然会触发空引用。

场景2:方法参数引用

public class ExampleClass : MonoBehaviour
{
   public void Method(ScriptExample2 scriptexample2)
   {
      scriptexample2.score++;
   }
}

这种情况不需要在Inspector赋值,核心原因是:

  • scriptexample2是方法的参数,它的值不是由ExampleClass自身初始化的,而是在调用Method方法时,由调用方传入一个已经存在的ScriptExample2实例。
  • 比如其他脚本会通过exampleClassInstance.Method(已获取的ScriptExample2实例)这样的代码调用,此时参数已经是有效的实例,自然不需要在Inspector中提前赋值。

简单总结:前者是类自身持有一个引用,需要你明确告诉Unity这个引用指向哪个实例;后者是调用方法时临时传入现成的引用,类本身不需要提前持有该实例。

内容的提问来源于stack exchange,提问作者Alesf28

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:10:45