最近我进入Unity并开始制作我的第一款游戏。我真的很开心,但最近我一直很生气。
我在游戏中制作了一个关卡系统(一旦完成第一级(所有关卡都是单独的场景),你就会进入下一个关卡)。我已经找到了如何使用application.loadlevel
等等。但我也想要关卡菜单(您可以通过点击按钮选择过去的关卡或当前关卡)来解决问题< strong>一旦您通过拾取多维数据集完成上一级别。不幸的是,我不知道怎么做,因为我的所有脚本都失败了。
请帮助我,并提前致谢,我是初学者,所以不要解释太先进的事情。告诉我在脚本中要做什么以及我需要写什么。如果我必须使用预制件,请告诉我这也让我感到困惑。
答案 0 :(得分:1)
首先,您需要保存已完成关卡的地方。这些信息必须以持久的方式保存,否则,您的玩家每次启动游戏时都必须重新启动整个游戏。有很多方法可以做到这一点,但PlayerPrefs可能是一个起点。
完成任何级别后(在加载下一个场景之前),请调用以下函数:
public void OnLevelCompleted()
{
// Retrieve name of current scene / level
string sceneName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
PlayerPrefs.SetInt( sceneName, 1 ) ; // Indicates the level is completed
}
然后,在您的家庭场景中,使用以下代码将脚本附加到按钮:
public string SceneName ; // Indicate which level this button must load once you click on it. Be carefull, the name must be the same as in your Build Settings
protected void Awake()
{
UnityEngine.UI.Button button = GetComponent<UnityEngine.UI.Button>();
if( button != null )
{
// Make the button load the given scene
button.onClick.AddListener( () => UnityEngine.SceneManagement.SceneManager.LoadScene( SceneName ) ) ;
// Make the button interactable only if the given scene / level has been completed
button.interactable = PlayerPrefs.GetInt( SceneName ) > 0 ;
}
else
Debug.LogWarning("No button component attached", this ) ;
}