Unity3D - GameControl总是空的?

时间:2015-11-10 06:02:10

标签: unity3d persistence unityscript destroy

我不知道下面代码的销毁部分有什么问题。我试图在整个场景中只有1 GameControl持续存在。似乎每次切换回此场景时,我的GameControl都会被视为空,并且会生成一个新的GameControl,并且我最终会持续存在多个GameControl

供参考:我尝试将代码从18:24移植到此link

的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 ()
 {
 }

1 个答案:

答案 0 :(得分:0)

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

static var control : GameControl;

简单来说,static表示此变量将在所有脚本中保持相同的值,因此检查if(control == null)将始终保持为真,因为当您GameObject时, df[c(which(grepl(toupper("Datsun"),toupper(rownames(df))))+1,which(grepl(toupper("valiant"),toupper(rownames(df))))-1) , ] 将创建一个新变量加载一个新场景。这个新对象仍然不是静态的,因此完全不同。我希望这有帮助。如果你仍然感到困惑,我建议你阅读一些单一的模式文章,因为有很多方法可以实现它。