[英]Arrayoutofbounds before destroying Unity3D GameObject
我期望这个对象一旦超过Array的数量就会自行销毁,但是,它抛出ArrayOutOfBounds。 我想知道是否会解决这个问题。
我也尝试过:
if (ObjectSprite[spriteNumber + 1] == null)
我以为这可以用,但是我是新手,所以我被困在这里
public class DestroyableObject : MonoBehaviour {
public GameObject coin;
public int spriteNumber = 0;
public Sprite[] ObjectSprite;
void Update ()
{
SpriteUpdate();
}
void SpriteUpdate()
{
this.GetComponent<SpriteRenderer>().sprite = ObjectSprite[spriteNumber];
if (spriteNumber > ObjectSprite.Length)
{
Instantiate(coin, this.transform.position, Quaternion.identity);
Destroy(this.gameObject);
}
}
}
您正在尝试访问数组,然后检查spriteNumber
是否大于数组。 您应该首先检查spriteNumber
是否超出范围,然后尝试访问ObjectSprite
。
void SpriteUpdate()
{
// if we're within the bounds of the array
if (spriteNumber < ObjectSprite.Length)
{
this.GetComponent<SpriteRenderer>().sprite = ObjectSprite[spriteNumber];
}
// if we're outside the bounds of the array
else
{
Instantiate(coin, this.transform.position, Quaternion.identity);
Destroy(this.gameObject);
}
}
请注意,if语句中的条件已被翻转; 当spriteNumber
小于数组长度时,它将仅在if块内执行代码。 还提供了else
子句,当先前的条件不再成立时(它将超出数组的范围),它将实例化硬币并销毁对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.