我在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/

10-09 21:05