【问题标题】:Save/loading in unity3d在 unity3d 中保存/加载
【发布时间】: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


【解决方案1】:

如果数据足够简单,比如跳到第 3 步时只有一两个变量。

  1. 创建类来保存有关进度的数据
  2. 用json序列化类得到字符串
  3. 将数据存储在 PlayerPrefs 中

保存

PlayerPrefs.SetInt("Last_Level", levelIndex);
PlayerPrefs.Save();

加载

int levelIndex = PlayerPrefs.GetInt("Last_Level", 0);

【讨论】:

  • 谢谢您的回答,我在过去的一个小时里一直在尝试这个,但我认为 json 现在对我来说太复杂了,我已经在使用 PlayerPrefs 时遇到了问题,应该从我在线阅读的内容来看,它比 json 容易得多。另外,我目前正在使用 unityscript,因为我发现它比 c# 更容易,而且我能找到的关于 json 示例的几乎所有内容都在 c# 中,因为我在此评论中没有足够的字符,如果可以的话,我将编辑我的问题并提供更多详细信息给我提供一些例子,我想我会更容易理解它:) 提前谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多