数组索引超出范围错误

本文关键字:范围 错误 索引 数组 | 更新日期: 2023-09-27 18:14:31

我使用这段代码从数组中生成一个随机对象:

using UnityEngine;
using System.Collections;
public class enemySpawner : MonoBehaviour {
    public GameObject[] enemies; 
    int enemyNo;
    public float maxPos = 6.9f;
    public float delayTimer = 0.75f;
    float timer; 
    void Start () {
        timer = delayTimer;
    }
    void Update () {
        timer -= Time.deltaTime;
        if (timer <= 0) {
            Vector3 enemyPos = new Vector3 (transform.position.x, Random.Range (5.0f, -5.5f), transform.position.z);
            //enemyNo = Random.Range (0,8);    
            enemyNo = Random.Range (0, enemies.Length);
            Instantiate (enemies[enemyNo], enemyPos, transform.rotation);
            timer = delayTimer;
        }
    }
}    

问题是我想在不同的场景中做同样的事情。每个场景都有不同数量的对象用于数组(在检查器中设置),所以因为它们不完全相同,所以我得到了这个错误:

IndexOutOfRangeException: Array index is out of range.

我有什么不同的做法吗?或者我应该为每个场景写一个新剧本?

数组索引超出范围错误

您需要获得数组的当前长度,因此您不能超出当前数组范围。

enemyNo = Random.Range (0, enemies.Length)