2017-05-26 80 views

回答

3

我不能完全肯定,但Start()可以配置腳本執行順序的AwakeOnEnableUpdate。轉到菜單編輯/項目設置並設置您的偏好,如manual section中所述。因此,如果Start也受到影響,您可能需要進一步調查 - 我認爲它與Update有關

一般而言,我會建議仔細使用此功能。如果你運行這個列表中有太多腳本的情況,這表明有一些設計問題。

+0

我99%肯定'Start()'也受到影響。 – Draco18s

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個月或更長時間之前,情況良好。最糟糕的是,您將該項目交給另一個編碼器。然後,由於它們不在代碼中,所以你很難調試的新bug具有「隱形」依賴性。

0

你可以做的事通常是先做你想要的腳本,然後你會喜歡它。但是可以說你想在第一個腳本的末尾運行另一個腳本,你可以通過使用this來引用一個函數(用第二個腳本代替SecondScriptName,然後用函數替換FunctionFromSecondScript該腳本)

<SecondScriptName>().FunctionFromSecondScript(); 

然後,您可以按照您希望的順序依次調用所有函數。

如果我犯了一個錯誤,請原諒我,因爲這是我的第一個意見,以幫助另一位程序員,我目前是一個萌芽的我自己。

希望這會有所幫助:)

相關問題