【发布时间】:2015-08-31 05:33:17
【问题描述】:
我一直在关注 Udemy 上的通过制作游戏(在 Unity 4.6.3 中)学习编程课程的 Block Breaker 部分。我决定在比赛中走一条稍微不同的道路,挑战自己。但是我有一些问题。所以这个想法是,当一个球击中屏幕底部的对撞机(名为 lostCollider)时,玩家将失去 1 条生命(其中有 5 条生命)。从目前我的游戏的屏幕截图中可以看出,有 5 颗心,每颗都附有一个精灵。我想要的是让球击中 lostCollider 并根据 lossCollider 被击中的次数改变心的精灵。但是我不断收到此错误消息:
代码如下:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class LoseCollider : MonoBehaviour {
private LevelManager levelManager;
public Sprite[] lives;
public GameObject lives1;
public GameObject lives2;
public GameObject lives3;
public GameObject lives4;
public GameObject lives5;
private int amountHit;
private int maxHit = 5;
void Start () {
levelManager = GameObject.FindObjectOfType<LevelManager>();
}
void OnTriggerEnter2D (Collider2D trigger) {
print ("Trigger");
}
void OnCollisionEnter2D (Collision2D collision) {
LoadSprites ();
print ("Collider");
amountHit++;
print (amountHit);
if(amountHit == maxHit){
levelManager.LoadLevel("Lose");
}
}
void LoadSprites () {
int spriteIndex = 1;
lives1.GetComponent<SpriteRenderer>().sprite = lives[spriteIndex];
if(amountHit >= 1){
print ("Hit 1");
lives1.GetComponent<SpriteRenderer>().sprite = lives[spriteIndex];
} else if(amountHit >= 2){
print ("Hit 2");
lives2.GetComponent<SpriteRenderer>().sprite = lives[spriteIndex];
} else if(amountHit >= 3){
print ("Hit 3");
lives3.GetComponent<SpriteRenderer>().sprite = lives[spriteIndex];
} else if(amountHit >= 4){
print ("Hit 4");
lives4.GetComponent<SpriteRenderer>().sprite = lives[spriteIndex];
} else if(amountHit >= 5){
print ("Hit 5");
lives5.GetComponent<SpriteRenderer>().sprite = lives[spriteIndex];
}
}
【问题讨论】:
-
没有任何代码(请将代码放在这里而不是别处),唯一的答案是 - 不要尝试访问 >= 到数组大小的索引。