2015-05-07 187 views
-1

如何在其他腳本中重新啓動一個腳本? 我想這一點,但它不工作在Unity中的其他腳本中重新啓動一個腳本

Ball.Start(); 
+0

您是否嘗試過'Ball.Reset()'?根據文檔[這裏](http://docs.unity3d.com/ScriptReference/MonoBehaviour.Start.html):在腳本的生命週期中開始被調用一次。問題是你已經停止腳本,但不能再次啓動它? –

+0

根據[Unity Answers](http://answers.unity3d.com/questions/704368/how-to-restartrerun-a-script.html),您可以通過使用「SetActive」來啓用/禁用並執行腳本'OnEnabled'方法。 –

+1

你期望「重啓」做什麼?如果你將'Start'設爲公共函數,你可以從其他腳本調用它(只要你有一個對象來調用它)。如果您在控制檯窗口中看到錯誤,它們是什麼?如果沒有,發生了什麼或沒有發生什麼,以及這與你所期望的有什麼不同? – rutter

回答

4

從Unity手冊:

Like the Awake function, Start is called exactly once in the lifetime of the script. 

你可以做的是這樣的:

void Start() 
{ 
    Init(); 
} 

public void Init() 
{ 
    // Some logic here 
} 

那麼你可以只請致電Init()從任何你想要的地方。

如果你指的是完全重置MonoBehaviour,你可以刪除/添加:

Destroy(gameObject.GetComponent<MyMonoBehaviour>()); 
gameObject.AddComponent<MyMonoBehaviour>();