玩家启动并收集燃料罐,燃料存放在更大的油箱中,然后加载下一张地图。收集的燃料设置为 0。在第二张地图中,收集了燃料,但当你存放它时,分数将被覆盖,而不是添加到。
using UnityEngine;
using UnityEngine.UI;
public class ScoreManager : MonoBehaviour
{
public static ScoreManager instance;
//script refs
GasTransfer gt;
LevelLoader levelLoader;
//text refs
public Text ScoreText;
public Text StoredFuel;
//bools ints
public int collectedfuel = 0;
private int score;
public int storedFuel;
public bool fuelDelivered;
private void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
else if (instance != null)
Destroy(gameObject);
}
public void Start()
{
gt = FindObjectOfType<GasTransfer>();
levelLoader = FindObjectOfType<LevelLoader>();
}
// Update is called once per frame
public void Update()
{
ScoreText.text = collectedfuel.ToString();
if (Input.GetKey(KeyCode.F) && gt.isAtpump)
{
score = collectedfuel;
storedFuel = collectedfuel;
StoredFuel.text = score.ToString();
fuelDelivered = true;
}
if (fuelDelivered)
{
gt.pressF.SetActive(false);
levelLoader.LoadNextLevel();
}
}
public void AddFuel()
{
collectedfuel += 5;
}
public void RemoveFuel()
{
collectedfuel -= 5;
if(collectedfuel < 0)
collectedfuel = 0;
}
}
看了几个视频,教程,unity教程。这就是我走到这一步的方式。我只是找不到合适的单词组合来添加到现有分数中。
你的分数被覆盖而不是被添加的可能原因是在你的更新方法中,当你按下 f 并且你在加油时,你将分数设置为收集的燃料是什么。这意味着无论以前存在的分数都将被新值替换。你需要在你的等号旁边添加一个 +,类似于你在 AddFuel 和 RemoveFuel 中的方式。
score += collectedfuel;
storedFuel += collectedfuel;
这将增加价值而不是给他们新的价值。