我想要一个适用于所有级别的重启菜单,因为我加载级别1,这个脚本在空游戏对象上将整数设置为1。
using UnityEngine;
using System.Collections;
public class SetRestart : MonoBehaviour {
public int Setrestart = 1;
void awake ()
{
DontDestroyOnLoad (this);
}
}
当您失败时,您将进入下一个名为LostMenu的场景。您可以选择重新启动正在播放或退出的级别。所以在这里我创建了一个按钮来重新启动并将此脚本附加到它:
using UnityEngine;
using System.Collections;
public class RestartButton : MonoBehaviour
{
public int Setrestart;
void Start()
{
if (Setrestart == 1) {
Application.LoadLevel("Main");
}
}
}
(计划是制作50个等级,50个if语句,这只是第一个被称为" Main"的第一个,每个等级都有自己的数字)。 问题是,当我点击按钮时没有任何反应(屏幕截图:http://prntscr.com/9tf4dd),当我加载LostMenu屏幕时,int没有任何反应,并且在调查器中它处于0时,在名为:&的关卡场景中#34;主"我说要给它' int = 1。'数字1保留在" Main"场景并没有进入菜单场景。
第1级是场景:"主要"。
丢失时重启的菜单是场景:" LostMenu"。
我清楚了吗?抱歉我的英语不好,并提前感谢你。答案 0 :(得分:0)
我使用静态'Globals'类来在Unity中的场景之间保存数据。
您可以使用类似的内容来存储您所玩的最后一个级别的名称。
public static class Globals
{
public static string LastLevel {get; set;}
}
然后你可以在关卡的开头写这个字符串,并在你的重启按钮处理程序中读取它。
答案 1 :(得分:0)
为了让RestartButton
了解Setrestart
中存储的SetRestart
值,您需要使用{{1}向GO发送引用 } 零件。现在SetRestart
正在检查其自己的 RestartButton
值,默认值为0.这就是它无法正常工作的原因。
相反,你需要这个:
Setrestart
GameObject.Find并不是很棒,性能明智,但对于一次性查找,它没什么问题。还有其他获取引用的方法,但是对于持续跨场景更改的对象,这是唯一的方法(注意我将GameObject引用保存到字段中,而不是必需这里这是一种很好的做法,所以你一直都没有GO.Find()。