我在Unity3D中有一个应用程序是为Android开发的,你可以收集游戏币。每次我开始游戏时,我的硬币数量都会被初始化为0,即使我使用setint和getint来尝试在下次玩家玩游戏时保存硬币数量。
完全不确定为什么不存硬币,有什么想法吗?(可能是因为我有点傻)。
using UnityEngine;
using System.Collections;
public class pickupCoin : MonoBehaviour {
public int amountOfCoins;
public AudioClip coinPing;
public AudioSource playerAudio;
void Start () {
if(PlayerPrefs.GetInt("TotalCoinsPlayerPrefs") == null){
PlayerPrefs.SetInt("TotalCoinsPlayerPrefs", 0);
}
amountOfCoins = PlayerPrefs.GetInt("TotalCoinsPlayerPrefs");
}
void OnCollisionEnter(Collision other){
if(other.gameObject.name.Contains("coin")){
playerAudio.PlayOneShot(coinPing);
amountOfCoins+=1;
PlayerPrefs.SetInt("TotalCoinsPlayerPrefs", amountOfCoins);
Debug.Log("amount of coins is: " + amountOfCoins);
Debug.Log("Player Prefs Coin Amount Is" + PlayerPrefs.GetInt("TotalCoinsPlayerPrefs").ToString());
Destroy(other.gameObject);
}
}
}
最佳答案
你用来检查PrimeRePF存在的测试(PlayerPrefs.GetInt("TotalCoinsPlayerPrefs") == null
)是“错误的”。正确的方法是调用HasKey函数。
基本上,我认为您当前的测试总是返回true,并且在游戏开始时playerpref的内容总是初始化为0
。
关于c# - PlayerPrefs.SetInt和.GetInt产生了不良影响,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23197790/