在另一个脚本的 Start() Unity C# 之后执行脚本的 Start()
Execute an script's Start() after another script's Start() Unity C#
我想 运行 一个脚本的 Start() 刚好在另一个脚本的 Start() 之前。可能吗?您可以选择脚本的执行顺序吗?
我不太确定 Start()
但您可以配置 Awake
、OnEnable
和 [=13] 的 脚本执行顺序 =].转到菜单编辑/项目设置并设置您的首选项,如 manual section 中所述。因此,您可能想进一步调查 Start
是否也受到影响 - 我相信它与 Update
有点相关
总的来说,我会建议谨慎使用此功能。如果您 运行 遇到此列表中脚本过多的情况,则表明存在一些设计问题。
如果你有一个脚本 (A) 意味着 运行 一个接一个 (B),我想这意味着 A 依赖于 B。在这种情况下,你应该让 B 调用 A 传递所需的数据.
public class A : MonoBehaviour
{
public void Init(State state){}
}
public class B : MonoBehaviour
{
private State state;
void Start()
{
this.state = SetState();
this.gameObject.GetComponent<A>().Init(this.state);
}
}
这可能是 运行 防止长时间调试的唯一方法。事实上,如果你使用脚本执行顺序,直到你有很多 类 并且你已经在该项目上工作了 6 个月或更长时间。最糟糕的是,您将项目交给了另一个编码员。然后你有 "invisible" 与新错误的依赖关系,你很难调试,因为它们不在代码中。
您可以做的通常是先执行您想要的脚本。但是,假设您想要 运行 第一个脚本末尾的另一个脚本,您可以通过使用它来引用一个函数(将 SecondScriptName 替换为您想要在第一个脚本之后使用的脚本,然后替换 FunctionFromSecondScript使用该脚本中的函数)
<SecondScriptName>().FunctionFromSecondScript();
然后您可以按任意顺序依次调用所有函数。
如果我犯了错误,请原谅我,因为这是我第一次帮助另一个程序员发表评论,我自己目前也是一个崭露头角的人。
希望这对您有所帮助:)
我想 运行 一个脚本的 Start() 刚好在另一个脚本的 Start() 之前。可能吗?您可以选择脚本的执行顺序吗?
我不太确定 Start()
但您可以配置 Awake
、OnEnable
和 [=13] 的 脚本执行顺序 =].转到菜单编辑/项目设置并设置您的首选项,如 manual section 中所述。因此,您可能想进一步调查 Start
是否也受到影响 - 我相信它与 Update
总的来说,我会建议谨慎使用此功能。如果您 运行 遇到此列表中脚本过多的情况,则表明存在一些设计问题。
如果你有一个脚本 (A) 意味着 运行 一个接一个 (B),我想这意味着 A 依赖于 B。在这种情况下,你应该让 B 调用 A 传递所需的数据.
public class A : MonoBehaviour
{
public void Init(State state){}
}
public class B : MonoBehaviour
{
private State state;
void Start()
{
this.state = SetState();
this.gameObject.GetComponent<A>().Init(this.state);
}
}
这可能是 运行 防止长时间调试的唯一方法。事实上,如果你使用脚本执行顺序,直到你有很多 类 并且你已经在该项目上工作了 6 个月或更长时间。最糟糕的是,您将项目交给了另一个编码员。然后你有 "invisible" 与新错误的依赖关系,你很难调试,因为它们不在代码中。
您可以做的通常是先执行您想要的脚本。但是,假设您想要 运行 第一个脚本末尾的另一个脚本,您可以通过使用它来引用一个函数(将 SecondScriptName 替换为您想要在第一个脚本之后使用的脚本,然后替换 FunctionFromSecondScript使用该脚本中的函数)
<SecondScriptName>().FunctionFromSecondScript();
然后您可以按任意顺序依次调用所有函数。
如果我犯了错误,请原谅我,因为这是我第一次帮助另一个程序员发表评论,我自己目前也是一个崭露头角的人。
希望这对您有所帮助:)