C# 重新加载场景后禁用游戏对象(Unity)

C# 重新加载场景后禁用游戏对象(Unity),c#,unity3d,C#,Unity3d,所以基本上我有一个成就画布,其中我有7个文本对象作为chieldren。每个按钮都表示,如果您完成了一定数量的级别,则该文本将被禁用,而另一个按钮将被启用,这使我能够通过按该按钮获取货币 通过按下一个按钮,我希望永远禁用该按钮,同时我还希望再次启用文本。有什么办法吗?您可以使用静态变量来确保即使重新启动场景,变量也保持不变 然后,如果单击按钮,则需要设置该静态变量,并启用文本框 您还需要检查Start()方法中static变量的当前状态,以在场景重新启动时显示或启用按钮和文本游戏对象 静态示例:

所以基本上我有一个成就画布,其中我有7个文本对象作为chieldren。每个按钮都表示,如果您完成了一定数量的级别,则该文本将被禁用,而另一个按钮将被启用,这使我能够通过按该按钮获取货币


通过按下一个按钮,我希望永远禁用该按钮,同时我还希望再次启用文本。有什么办法吗?

您可以使用
静态变量来确保即使重新启动场景,变量也保持不变

然后,如果单击按钮,则需要设置该
静态
变量,并启用
文本框

您还需要检查
Start()
方法中
static
变量的当前状态,以在场景重新启动时显示或启用
按钮
文本
游戏对象

静态示例:

[序列化字段]
私人文本;
[序列化字段]
私人按钮;
私有静态按钮禁用=false;
私有void Start(){
//如果buttonDisabled为false,则禁用文本
//如果buttonDisabled为true,则启用文本。
text.gameObject.SetActive(按钮禁用);
//如果buttonDisabled为true,则禁用按钮
//如果buttonDisabled为false,则启用按钮。
button.gameObject.SetActive(!buttonDisabled);
}
私有无效禁用按钮单击(){
//将静态变量设置为true。
buttonDisabled=true;
//启用文本游戏对象。
text.gameObject.SetActive(true);
//禁用按钮游戏对象。
button.gameObject.SetActive(假);
}

或者,您可以使用
PlayerPrefs
来保持状态,即使用户重新启动整个应用程序

基本上与使用静态变量的操作相同,但是可以使用相应的方法设置并获取
PlayerPrefs
PlayerPrefs.SetInt()
PlayerPrefs.GetInt()

玩家参考示例:

[序列化字段]
私人文本;
[序列化字段]
私人按钮;
私有void Start(){
//获取PlayerPrefs的当前状态,默认为0。
bool buttonDisabled=PlayerPrefs.GetInt(“canvasDisabled”,0)=1;
//如果buttonDisabled为false,则禁用文本
//如果buttonDisabled为true,则启用文本。
text.gameObject.SetActive(按钮禁用);
//如果buttonDisabled为true,则禁用按钮
//如果buttonDisabled为false,则启用按钮。
button.gameObject.SetActive(!buttonDisabled);
}
私有无效禁用按钮单击(){
//将PlayerPrefs整数设置为1。
PlayerPrefs.SetInt(“画布禁用”,1);
//启用文本游戏对象。
text.gameObject.SetActive(true);
//禁用按钮游戏对象。
button.gameObject.SetActive(假);
}