Unity3D - GameControl 始终为空?

Unity3D - GameControl always null?

我不知道下面代码的销毁部分有什么问题。我试图在整个场景中只保留 1 GameControl。似乎每次我切换回这个场景时,我的 GameControl 都被读取为 null 并生成一个新的 GameControl 并且我最终有超过 1 个 GameControl 坚持。

供参考:我试图从 link

将代码从 18:24 移植到 JavaScript

请指教

 #pragma strict

 var control : GameControl;

 function Awake () {
 Debug.Log("GameControl runs");

     if (control == null)
     {
         DontDestroyOnLoad(gameObject);
         control = this;
         Debug.Log(control);
     } else if (control != this)
     {
         Destroy(gameObject);
         Debug.Log("Destroy?");
     }
 }

 function Update ()
 {
 }

问题是您没有使用这样的静态变量:

static var control : GameControl;

简单来说,static 意味着这个变量将在您的所有脚本中保持相同的值,因此检查 if(control == null) 将始终保持为真,因为您的 GameObject 将创建一个新变量当你加载一个新场景时。这个新对象仍然不是静态的,因此完全不同。我希望这有帮助。如果您仍然感到困惑,我建议您阅读一些单一模式的文章,因为除此之外还有很多方法可以实现它。