Я работаю над кодом для 2D-игры, в которой игрок имеет 3 сердца.Максимальный предел диапазона массивов
Если игрок сталкивается с бомбойPrefab, он теряет 1 сердце. Если игрок сталкивается с heartPrefab, он получает дополнительное сердце. Если он сталкивается 3 раза подряд с bombPrefab, игра заканчивается.
Текстура сердец выглядит следующим образом. Массив 0 (3 сердца) массив 1 (2 сердца) массив 2 (1 сердце).
У меня проблема с ограничением массива! Я хочу знать, как получить следующий ответ: если игрок имеет 3 сердца и сталкивается с heartPrefab, уничтожается только объект, нет никакого изменения количества сердец, которые у игрока есть.
Код ниже работает, чтобы взять и дать дополнительные сердца. Но когда я сталкиваюсь с одним heartPrefab, и у меня уже есть 3 сердца (максимум), я получаю ошибку: index out out range array.
Как я могу продолжить? 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;
}
}
}
Можем ли мы увидеть код, который инициализирует 'initialHeart'? – Quantic
@Quantic Я создал GameObject (переименован в Hearts) внутри Unity, добавил GuiTexture и Heart Script, я могу установить массив с помощью инспектора =] –
'if (manyHeart <(heart + 1))' должно быть 'if (manyHeart> 0) 'Я думаю. –