这是我在团结世界中第一次测试2d游戏的主菜单:
我想保存高分,如果玩家按下"最佳分数"按钮我想向他们展示最好的分数^^,所以我想我需要使用外部文件来保存这类信息并在运行时打开它......怎么样?哪种文件最适合执行?
答案 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);
}