C# - Unity3d 在游戏中保存一些变量?

C# - Unity3d save some variables in game?

我会确保当我关闭游戏时,他会自动保存一些变量(分数),并在开始后显示它们?

为此,我需要使用这些来保存浮点数吗?

void Awake
void Load

或者我需要这些?

public void Load
public void Save

你能告诉我一些有效的示例代码行吗?谢谢

一个好的选择是使用 OnEnableOnDisable 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.
    }
}

确保您附加脚本的对象在整个游戏中都存在。您也可以在需要时从您的代码中手动调用这些函数。

当然,您可以创建自己的方法,称为 LoadSaveSerializeDeserialize,然后从 OnEnableOnDisable,像那样:

void OnEnable()
{
    Load();
}

void Load()
{
    _score = PlayerPrefs.GetInt("Player Score");
} 

从编程玩家的角度来看,这看起来会更好,但程序的工作方式几乎相同。

您可能也更喜欢使用 AwakeOnApplicationQuit 等方法,但您仍然需要您的游戏对象从头到尾都处于活动状态,因此这没有多大意义。

如果你需要保存的不仅仅是几个变量,你可能想看看所谓的 Unity Serializer