【发布时间】:2014-09-01 14:15:43
【问题描述】:
现在我意识到这个问题被问了很多,我向你保证我已经对这个主题进行了大量搜索,尝试了一些脚本并尝试了来自统一资产商店的序列化程序。但我就是找不到我需要的东西。
下一个关卡只有在击败前一个关卡后才会解锁,因此它需要记住哪些关卡已被击败/解锁,当您加载时,您可以选择任何解锁的关卡,每个关卡的最高分也需要记住并且只有如果新的分数较高则替换,较低的分数不需要保存。
我一直在谷歌上找到的是如何保存关卡中发生的所有对象和东西,但我不需要在关卡中保存,我的关卡真的很短,需要一口气玩完。
编辑: 这是我在玩家击败关卡后将 1 添加到 levelIndex 的脚本 我的目标是在玩家在开始菜单中按下加载后,会弹出一个新菜单,玩家将能够从所有解锁的关卡中进行选择,选择后,关卡将加载。
(我目前对这个问题的了解在 // 行)
#pragma strict
var normalParticle : ParticleSystem;
var teleportParticle : ParticleSystem;
var teleportSound : AudioClip;
var ignoreListenerPause: boolean;
// var levelIndex : int;
function Start() {
teleportParticle.Stop();
}
function OnTriggerEnter(other : Collider)
{
if(other.tag == "Player"){
teleportParticle.Play();
normalParticle.Stop();
for (var o : GameObject in GameObject.FindGameObjectsWithTag("Virus"))
{
var comp : Component = o.GetComponent(ChaseScript);
if (comp != null)
{
comp.active = false;
}
}
yield WaitForSeconds (0.5);
audio.ignoreListenerPause = true;
audio.PlayOneShot(teleportSound);
yield WaitForSeconds (3.9);
//levelIndex++;
//PlayerPrefs.SetInt("Last_Level", levelIndex);
Application.LoadLevel(Application.loadedLevel+1);
}
}
function OnTriggerExit(other : Collider)
{
teleportParticle.Stop();
normalParticle.Play();
}
我之前找到了一个教程,解释了如何实现我想要的,但它对于一个有很多关卡的游戏并不有效,他在每个关卡完成时使用一个脚本,并为每个关卡使用 if's,我的游戏大约有 50 个所以我更喜欢更好/更清洁的方式是视频:http://forum.unity3d.com/threads/unity-level-unlocking-system-using-playerprefs.146955/。你可以在 10:10 和 14:14 看到他的脚本。
提前致谢:)
【问题讨论】:
-
看来 json 对你的问题来说可能有点矫枉过正,我已经更新了我的答案。
标签: unity3d unityscript