Ich arbeite an Code für ein 2D-Spiel, in dem der Spieler 3 Herzen hat.Maximale Array-Bereichsgrenze
Wenn der Spieler mit einem bombPrefab kollidiert, verliert er 1 Herz. Wenn der Spieler mit einem heartPrefab kollidiert, gewinnt er ein zusätzliches Herz. Wenn er 3 Mal hintereinander mit einem bombPrefab kollidiert, endet das Spiel.
Die Herzen Textur ist wie folgt. Array 0 (3 Herzen) Array 1 (2 Herzen) Array 2 (1 Herz).
Ich habe ein Problem, das Array zu begrenzen! Ich möchte wissen, wie man die folgende Antwort erhält: Wenn der Spieler 3 Herzen hat und mit einem heartPrefab kollidiert, wird nur das Objekt zerstört, es gibt keine Änderung in der Anzahl der Herzen, die der Spieler hat.
Der folgende Code funktioniert zu nehmen und geben zusätzliche Herzen. Aber wenn ich mit einem heartPrefab kollidiere, und ich habe bereits 3 Herzen (Maximum) bekomme ich den Fehler: Index ist out Range Array.
Wie soll ich fortfahren? C# Antwort, wenn möglich
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;
}
}
}
Können wir den Code sehen, der 'initialHeart' initialisiert? – Quantic
@Quantic Ich habe GameObject (in Hearts umbenannt) in Unity erstellt, GuiTexture und Heart Script hinzugefügt, ich kann das Array durch Inspector =] –
'if (manyHeart <(heart + 1))' sollte 'if (manyHeart> 0) 'Ich denke. –