C# 是否在单击时将预置重置为初始状态?

C# 是否在单击时将预置重置为初始状态?,c#,unity3d,C#,Unity3d,当我点击一个按钮时,我如何在Unity中将一个预置重置为它的初始状态 绝对初学者,不知道从哪里开始。任何帮助都将不胜感激。谢谢 最简单的方法可能是销毁这个对象,并从这个预置中实例化一个新对象 您可以创建某种ButtonManager脚本,该脚本保存对当前活动对象的引用,当单击按钮时,它将销毁该按钮并在其位置创建一个新的按钮,如下所示: class ButtonManager:MonoBehavior { //您可以将inspector中的预置拖动到此字段 公共游戏对象预制; 游戏对象actObj

当我点击一个按钮时,我如何在Unity中将一个预置重置为它的初始状态


绝对初学者,不知道从哪里开始。任何帮助都将不胜感激。谢谢

最简单的方法可能是销毁这个对象,并从这个预置中实例化一个新对象

您可以创建某种ButtonManager脚本,该脚本保存对当前活动对象的引用,当单击按钮时,它将销毁该按钮并在其位置创建一个新的按钮,如下所示:

class ButtonManager:MonoBehavior
{
//您可以将inspector中的预置拖动到此字段
公共游戏对象预制;
游戏对象actObject;
//将此方法设置为在按钮菜单中启动
void OnClick()
{
销毁(actObject);
actObject=实例化(预置);
}
}

另一种方法(在生产和更大的游戏中更好地优化和更可取)是只编写某种重置函数,以还原对此对象所做的所有更改。

正如蒂克内所说,在启动游戏时,您必须缓存(保存)值(在
void start(){}
方法上),然后,无论何时按下按钮(在按钮的.onClick方法上),您都会希望重置这些值

另一个可以让你免于缓存你想要重置的每个值的潜在繁琐工作的策略是,简单地销毁游戏对象并使用预置重新实例化它

void OnReset(){
  var resetGameobject = Gameobject.Instantiate(myPrefab);
  Destroy(this);
}

如果您经常重置,那么第二种方法可能会遇到一些性能问题,但在您的情况下,这可能不会成为一个问题


如果您需要更详细的演练/代码示例,请告诉我。

您需要将实际状态数据存储在某个位置,然后手动重置。除非你想要一个编辑器工具,但我假设这是在游戏运行期间。