【发布时间】:2019-11-03 16:08:27
【问题描述】:
我制作了我的第一个 Unity3D 游戏。这是一款具有无限道路的赛车游戏。我也做了一些捡硬币。 问题是当我拿起硬币然后我去商店菜单看看它是否添加到总硬币中,直到我玩下一轮才会添加,然后我之前收集的硬币将被添加。 这就像延迟什么的。
是不是因为不知道如何在不同的场景中使用一个值?或者它,是别的东西。 有人告诉我使用 PlayerPrefs,我在我的脚本中使用了它,但为此,我的意思是硬币的数量,我不知道如何使用它。
下面的脚本是我的玩家脚本,我在其中计算拾取硬币和其他一些与玩家相关的东西。我只带了Ontrigger和count相关的代码。
void Start () {
CameraAnimation = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Animator>();
_GameManager = GameObject.FindGameObjectWithTag("GameManager").GetComponent<GameManager>();
_AudioSource = GetComponent<AudioSource>();
count = 0;
SetCountText ();
}
void OnTriggerEnter(Collider other){
if(other.gameObject.tag == "Coins") {
count = count + 1;
SetCountText ();
}
}
public void SetCountText(){
CountText.text = count.ToString ();
}
下面的代码是我的calculateCoin,其中我将收集到的硬币计数添加到以前的值中,并在商店场景文本框中显示总数:
public class CalculateCoin : MonoBehaviour{
// Use this for initialization
public static int Coin = 10000;
public Text ShowCoin;
void Start () {
ShowCoin.text = PlayerPrefs.GetInt("Coin").ToString();
Coin =PlayerPrefs.GetInt("Coin")+Player.count;
PlayerPrefs.SetInt ("Coin", Coin);
}
}
【问题讨论】:
-
我猜这个问题取决于你在计算硬币的数量时,现在你是在
Start方法中进行的,该方法在脚本附加到它的对象被实例化时调用,所以它只在关卡开始时调用,将方法名称更改为其他名称并根据需要调用它。