最大数组范围限制
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;
}
}
我正在为玩家有 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;
}
}