c# - 这是我应该编码我的游戏以在玩家死亡后重置分数的正确方式吗?
问题描述
一旦玩家死亡,分数不会达到 0。
我尝试了各种不同的方法和改变价值观,但似乎没有任何效果。
{
//when the player's box collider collides with another box collider
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
//scene moves to a game over screen
SceneManager.LoadScene("Player Death");
//Reset score everytime player dies
void resetScore()
{
PlayerPrefs.SetInt ("Score", 0);
}
}
}
// Start is called before the first frame update
void Start()
{ }
// Update is called once per frame
void Update()
{
}
}
它只是从它停止的地方开始建立分数,并没有按照我的程序进行。
解决方案
您是否尝试在玩家死亡时立即重置分数?我假设你在游戏开始时重置它。尝试在玩家死亡后立即执行此操作,或者在创建新游戏/玩家时在构造函数中使用它。目前尚不清楚您是如何实现它的,如果您发布更多代码会有所帮助。
[编辑] 首先,您声明了 ResetScore 方法,但您没有调用它来执行。因此,您需要在“OnTriggerEnter”方法之外声明它,然后在方法内部调用它,如下所示:
ResetScore();
其次,为什么不尝试使用属性而不是 SetInt?
public int Score { get; set;}
然后你可以像这样改变它:
if (other.gameObject.tag == "Player")
{
Player.Score = 0;
//scene moves to a game over screen
SceneManager.LoadScene("Player Death");
//Reset score everytime player dies
}
推荐阅读
- serialization - 将 PostGIS 中的数据序列化为 JSON
- r - gganimate 根据时间为多条路径设置动画
- android - RecyclerView 适配器不适用于黄油刀
- mysql - 创建过程mysql CRUD时出错
- vim - Vim 在插入模式退出时禁用 make
- java - Java 客户端 SSL 重新协商
- javascript - 将 promise 与 resolve & reject 转换为异步函数的正确方法(puppeteer)
- python - PLY 可以处理输入而不将其全部加载到内存中吗?
- python - 氢包原子编辑器——奇怪的显示
- iot - Beaglebone Black:如何以编程方式打开/关闭引脚?