首页 > 解决方案 > 这是我应该编码我的游戏以在玩家死亡后重置分数的正确方式吗?

问题描述

一旦玩家死亡,分数不会达到 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()
    {

    }
}

它只是从它停止的地方开始建立分数,并没有按照我的程序进行。

标签: c#

解决方案


您是否尝试在玩家死亡时立即重置分数?我假设你在游戏开始时重置它。尝试在玩家死亡后立即执行此操作,或者在创建新游戏/玩家时在构造函数中使用它。目前尚不清楚您是如何实现它的,如果您发布更多代码会有所帮助。

[编辑] 首先,您声明了 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
    }

推荐阅读