将播放器信息保存在外部文件中

时间:2013-10-08 08:25:36

标签: unity3d unityscript

这是我在团结世界中第一次测试2d游戏的主菜单:

enter image description here

我想保存高分,如果玩家按下"最佳分数"按钮我想向他们展示最好的分数^^,所以我想我需要使用外部文件来保存这类信息并在运行时打开它......怎么样?哪种文件最适合执行?

4 个答案:

答案 0 :(得分:7)

除了上面的答案:

但是,除非您将这些类型转换为字符串或其他数据,否则PlayerPrefs不会处理和存储自定义类型和集合。将所需数据转换为JSON并将JSON字符串存储在PlayerPrefs中非常有用,然后在需要时再获取并解析该数据。这样做会增加另一层复杂性,但也会增加另一层保护和加密数据本身的能力。此外,根据Unity的文档,Web Player是目前唯一对PlayerPrefs有限制的平台:

  

每个网络播放器网址都有一个首选项文件,文件大小为   限制为1兆字节。如果超出此限制,则SetInt,SetFloat和   SetString不会存储该值并抛出PlayerPrefsException。

来源: http://docs.unity3d.com/Documentation/ScriptReference/PlayerPrefs.html

答案 1 :(得分:6)

写作:

PlayerPrefs.SetInt("score",5);
PlayerPrefs.SetFloat("volume",0.6f);
PlayerPrefs.SetString("username","John Doe");

// Saving a boolean value
bool val = true;
PlayerPrefs.SetInt("PropName", val ? 1 : 0);


PlayerPrefs.Save();

读:

int score = PlayerPrefs.GetInt("score");
float volume = PlayerPrefs.GetFloat("volume");
string player = PlayerPrefs.GetString("username");

bool val = PlayerPrefs.GetInt("PropName") == 1 ? true : false;

答案 2 :(得分:5)

最简单的解决方案是使用PlayerPrefs。它具有有限的空间和一小部分可以保存的数据(int,float,string),但它对于简单的游戏来说已经足够了。

如果需要保存更多空间或更复杂的数据结构,则必须将它们存储在文件系统本身上(如果有后端支持,则存储在服务器中)。 Unity不为此提供任何内置支持。

答案 3 :(得分:0)

C#就像这样

//these variables will send the values in.
public static string exampleString = "hi youtube"; //it needs to be public ans static
public static int exampleInt = 1;
public static float exampleFloat = 3.14;

//these vaibles will collect the saved values
string collectString;
int collectInt;
float collectFloat;

public static void Save () { //this is the save function
    PlayerPrefs.SetString ("exampleStringSave", exampleString);
    // the part in quotations is what the "bucket" is that holds your variables value
    // the second one in quotations is the value you want saved, you can also put a variable there instead
    PlayerPrefs.SetInt ("exampleIntSave", exampleInt);
    PlayerPrefs.SetFloat ("exampleFloatSave", exampleFloat);
    PlayerPrefs.Save ();
}

void CollectSavedValues () {
    collectString = PlayerPrefs.GetString ("exampleStringSave");
    collectInt = PlayerPrefs.GetInt ("exampleIntSave");
    collectFloat = PlayerPrefs.GetFloat ("exampleFloatSave");
)

void Awake () { //this is simialar to the start function
    Save ();
    CollectSavedValues ();
}


void Update () {
    Debug.Log (collectString);
    Debug.Log (collectInt);
    Debug.Log (collectFloat);
}