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
将创建一个新变量当你加载一个新场景时。这个新对象仍然不是静态的,因此完全不同。我希望这有帮助。如果您仍然感到困惑,我建议您阅读一些单一模式的文章,因为除此之外还有很多方法可以实现它。
我不知道下面代码的销毁部分有什么问题。我试图在整个场景中只保留 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
将创建一个新变量当你加载一个新场景时。这个新对象仍然不是静态的,因此完全不同。我希望这有帮助。如果您仍然感到困惑,我建议您阅读一些单一模式的文章,因为除此之外还有很多方法可以实现它。