我想在另一个脚本的Start()之前从一个脚本运行Start()。可能吗?你能选择脚本执行的顺序吗?
答案 0 :(得分:4)
我不完全确定Start()
,但您可以配置Awake
,OnEnable
和Update
的脚本执行订单。转到菜单编辑/项目设置,然后像manual section中所述设置您的首选项。因此,如果Start
也受到影响,您可能需要进一步调查 - 我认为这与Update
一般情况下,我建议您仔细使用此功能。如果您运行此列表中包含太多脚本的情况,则表明存在一些设计问题。
答案 1 :(得分:1)
如果你有一个脚本(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个月或更长时间之前就可以了。最糟糕的是,你把这个项目交给另一个程序员。然后你有&#34;隐形&#34;由于它们不在代码中,因此很难调试新错误的依赖项。
答案 2 :(得分:0)
您可以做的通常是首先按照您希望的方式执行您想要的脚本。但是,假设你想在第一个脚本的末尾运行另一个脚本,你可以使用它来引用一个函数(用你希望在第一个脚本之后的脚本替换SecondScriptName,然后用函数替换FunctionFromSecondScript)那个剧本)
<SecondScriptName>().FunctionFromSecondScript();
然后,您可以按照您希望的顺序依次调用所有函数。
如果我犯了错误,请原谅我,因为这是我第一次帮助其他程序员的评论,而且我现在正在崭露头角。
希望这会有所帮助:)