最大数组范围限制

Max array range limit

我正在为玩家有 3 颗心的 2D 游戏编写代码。

如果玩家与炸弹预制件发生碰撞,他将失去 1 颗心。如果玩家与 heartPrefab 发生碰撞,他将赢得额外的一颗心。如果他连续 3 次与炸弹预制件发生碰撞,则游戏结束。

红心贴图如下。数组 0(3 颗心)数组 1(2 颗心)数组 2(1 颗心)。

我在限制阵列时遇到问题!我想知道如何得到以下响应:如果玩家有 3 颗心并与 heartPrefab 碰撞,只有对象被摧毁,玩家拥有的心数没有变化。

下面的代码可以用来获得和给予额外的红心。但是当我与一个 heartPrefab 碰撞时,我已经有 3 颗心(最多),我得到错误:索引超出范围数组。

我该如何进行? C# 尽可能回答

using UnityEngine;
using System.Collections;
using UnityEngine;
using System.Collections;

public class Heart : MonoBehaviour
{


    public Texture2D[] initialHeart;
    private int heart;
    private int manyHeart;

    void Start ()
    {

        // The game start with 3 hearts at RANGE 0
        GetComponent<GUITexture> ().texture = initialHeart [0];
        heart = initialHeart.Length;

    }


    void Update ()
    {

    }

    public bool TakeHearts ()
    {
        if (heart < 0) {

            return false;

        }

        if (manyHeart < (heart - 1)) {

            manyHeart += 1;
            GetComponent<GUITexture> ().texture = initialHeart [manyHeart];
            return true;


        } else {

            return false;

        }   
    }

    public bool AddHearts ()
    {
        if (heart <= 2) {

            return false;

        }

        if (manyHeart < (heart + 1)) {

            manyHeart -= 1;
            GetComponent<GUITexture> ().texture = initialHeart [manyHeart];
            return true;


        } else {

            return false;

        }   
    }
}

您使 if 语句过于复杂(除非有其他原因)...var manyHeart 和 heart 总是成反比关系。只需使用:

public bool AddHearts ()
{
    if (manyHeart > 0) {
        manyHeart -= 1;
        GetComponent<GUITexture> ().texture = initialHeart [manyHeart];
        return true;
    } else {
        return false;
    }   
}