Unity3D初学者RestartButton。在场景之间共享信息?

时间:2016-01-22 16:44:32

标签: c# unity3d menu uibutton

我想要一个适用于所有级别的重启菜单,因为我加载级别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"。

我清楚了吗?抱歉我的英语不好,并提前感谢你。

2 个答案:

答案 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()。