C# - Unity3d 在游戏中保存一些变量?
C# - Unity3d save some variables in game?
我会确保当我关闭游戏时,他会自动保存一些变量(分数),并在开始后显示它们?
为此,我需要使用这些来保存浮点数吗?
void Awake
void Load
或者我需要这些?
public void Load
public void Save
你能告诉我一些有效的示例代码行吗?谢谢
一个好的选择是使用 OnEnable
和 OnDisable
event functions.
using UnityEngine;
public class GameSaver : MonoBehaviour
{
int _score;
void OnEnable()
{
_score = PlayerPrefs.GetInt("Player Score");
}
void OnDisable()
{
PlayerPrefs.SetInt("Player Score", score);
}
void Update()
{
// change the _score during the game execution.
}
}
确保您附加脚本的对象在整个游戏中都存在。您也可以在需要时从您的代码中手动调用这些函数。
当然,您可以创建自己的方法,称为 Load
和 Save
或 Serialize
和 Deserialize
,然后从 OnEnable
和 OnDisable
,像那样:
void OnEnable()
{
Load();
}
void Load()
{
_score = PlayerPrefs.GetInt("Player Score");
}
从编程玩家的角度来看,这看起来会更好,但程序的工作方式几乎相同。
您可能也更喜欢使用 Awake
和 OnApplicationQuit
等方法,但您仍然需要您的游戏对象从头到尾都处于活动状态,因此这没有多大意义。
如果你需要保存的不仅仅是几个变量,你可能想看看所谓的 Unity Serializer。
我会确保当我关闭游戏时,他会自动保存一些变量(分数),并在开始后显示它们?
为此,我需要使用这些来保存浮点数吗?
void Awake
void Load
或者我需要这些?
public void Load
public void Save
你能告诉我一些有效的示例代码行吗?谢谢
一个好的选择是使用 OnEnable
和 OnDisable
event functions.
using UnityEngine;
public class GameSaver : MonoBehaviour
{
int _score;
void OnEnable()
{
_score = PlayerPrefs.GetInt("Player Score");
}
void OnDisable()
{
PlayerPrefs.SetInt("Player Score", score);
}
void Update()
{
// change the _score during the game execution.
}
}
确保您附加脚本的对象在整个游戏中都存在。您也可以在需要时从您的代码中手动调用这些函数。
当然,您可以创建自己的方法,称为 Load
和 Save
或 Serialize
和 Deserialize
,然后从 OnEnable
和 OnDisable
,像那样:
void OnEnable()
{
Load();
}
void Load()
{
_score = PlayerPrefs.GetInt("Player Score");
}
从编程玩家的角度来看,这看起来会更好,但程序的工作方式几乎相同。
您可能也更喜欢使用 Awake
和 OnApplicationQuit
等方法,但您仍然需要您的游戏对象从头到尾都处于活动状态,因此这没有多大意义。
如果你需要保存的不仅仅是几个变量,你可能想看看所谓的 Unity Serializer。