C# 在Unity中的其他脚本中重新启动一个脚本

C# 在Unity中的其他脚本中重新启动一个脚本,c#,unity3d,C#,Unity3d,如何在其他脚本中重新启动一个脚本? 我试过这个,但不起作用 Ball.Start(); 从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() 如果您指

如何在其他脚本中重新启动一个脚本? 我试过这个,但不起作用

Ball.Start();
从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()

如果您指的是完全重置单一行为,您可以删除/添加它:

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

您是否尝试过
Ball.Reset()
?根据文档:Start在脚本生命周期中只调用一次。问题在于您已停止脚本,但无法再次启动它?根据,您可以通过使用
SetActive
启用/禁用并实现
OnEnabled
方法来重新启动脚本。您希望“重新启动”做什么?如果将
Start
设置为公共函数,则可以从其他脚本调用它(只要有对象可调用)。如果在控制台窗口中看到错误,它们是什么?如果没有,发生了什么或没有发生什么,这与你的预期有什么不同?@ShawnicHedgehog它也不起作用。是的,Start()在脚本的生命周期中只调用了一次,因此我想再次启动这个脚本。我有一个制作Arkanoid等级的脚本,我想重置球的寿命。@JohnOdom,我可以用它来制作脚本吗,但它不起作用,我想知道它是用于游戏对象的。