我正在尝试找到适当的词来描述我所遇到的问题,希望这可以解释这个问题。
我在两个不同的类中有两个 Update()方法,其中一些功能依赖于另一个的数据。代码A依赖于代码B的数据,使用 Debug.Log()我发现代码B的更新()正在执行代码A的更新()< /强>
我的问题是,是否有一个开箱即用的方法来控制Update方法的Call堆栈?如果它是如何完成的?如果没有,是否有人可以使用任何技术来解决问题。我意识到我可以在代码B中创建可以在更新中从代码A调用以解决问题的方法,但我很想知道是否有其他方法可以解决问题。
答案 0 :(得分:4)
来自Unity&#39; reference manual:
默认情况下,不同脚本的Awake,OnEnable和Update函数按脚本加载的顺序调用(这是任意的)。但是,可以使用“脚本执行顺序”设置修改此顺序。
那应该可以解决你的问题。
答案 1 :(得分:0)
基本机制可以用 locks 表示。
作为一个例子,让我们假设A的块依赖于B的块。你可以控制&#34;依赖&#34;这样:
//B script:
var BLogicPerformed = false;
//...
//Code on which A depends:
function Update(){
if (BLogicPerformed == false){
//your operations...
BLogicPerformed = true;
}
}
//------------------------------------------------
//A script:
//...
//Code that depends on B:
function Update(){
if (this.GetComponent("B").BLogicPerformed == true){
//Perform logic that depends on B
this.GetComponent("B").BLogicPerformed = false;
}
}
(与布尔值的丑陋比较,其中只是为了尽可能清楚地保持代码: - ))
我在Unityscript中编程,由于您的问题都标有unityscript和c#,我希望这对您来说足够了。
答案 2 :(得分:0)
如果只有它可以在其中一个脚本中使用LateUpdate()而不是Update()