【发布时间】:2020-01-02 22:00:02
【问题描述】:
我正在Unity上制作2D游戏,我有一个脚本可以保存我的硬币价值,但是当我获得更多硬币后打开它时它并没有保存。
这是我保存数据的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Coin : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D other)
{
if(other.gameObject.tag == "Player")
{
PlayerPrefsManager.coins += 1;
PlayerPrefsManager.UpdateCoins();
}
}
}
还有我显示数据的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CoinsDisplay : MonoBehaviour
{
private Text text;
void Start()
{
text = GetComponent<Text>();
}
void Update()
{
string[] temp = text.text.Split('X');
text.text = temp[0] + "X: " + PlayerPrefsManager.coins;
}
}
玩家偏好管理器脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerPrefsManager : MonoBehaviour
{
public const string Coins = "Coins";
public static int coins;
void Start()
{
coins = PlayerPrefs.GetInt("Coins");
}
public static void UpdateCoins()
{
PlayerPrefs.SetInt("Coins", coins);
coins = PlayerPrefs.GetInt("Coins");
PlayerPrefs.Save();
}
}
【问题讨论】:
-
您不应该使用 PlayerPrefs 来存储游戏状态。
-
@Draco18snolongertrustsSE 是正确的。话虽如此,您在玩游戏时看到硬币的数量更新了吗?