C# Unity2D:生成脚本的问题
所以基本上我有一个繁殖脚本(2D游戏),在繁殖延迟后在敌人身上繁殖。我还添加了一个敌人预制阵列,这样SpawnerScript将在一个随机敌人中生成。然而,我在转换过程中的随机位置(也称为3D立方体)中的预制中产生了一些问题。你看,当我玩游戏时,我的产卵器没有在任何地方产卵,我确保我已经包括了我想要产卵的敌人的大小。并确保我已经安装了预制件。我还确保我的unity项目文件没有bug。也许我的代码错了,我不确定 我的生成脚本:C# Unity2D:生成脚本的问题,c#,unity3d,spawn,C#,Unity3d,Spawn,所以基本上我有一个繁殖脚本(2D游戏),在繁殖延迟后在敌人身上繁殖。我还添加了一个敌人预制阵列,这样SpawnerScript将在一个随机敌人中生成。然而,我在转换过程中的随机位置(也称为3D立方体)中的预制中产生了一些问题。你看,当我玩游戏时,我的产卵器没有在任何地方产卵,我确保我已经包括了我想要产卵的敌人的大小。并确保我已经安装了预制件。我还确保我的unity项目文件没有bug。也许我的代码错了,我不确定 我的生成脚本: public float RateOfSpawn = 1; publi
public float RateOfSpawn = 1;
public float spawnTime = 2;
public GameObject[] enemy;
void Start(){
InvokeRepeating ("addEnemy", spawnTime, spawnTime);
}
void Spawn () {
// Random position within this transform- 3Dcube
var x1 = transform.position.x - GetComponent<Renderer> ().bounds.size.x / 2;
var x2 = transform.position.x + GetComponent<Renderer> ().bounds.size.x / 2;
var spawnPoint = new Vector2 (Random.Range (x1, x2), transform.position.y);
int enemyIndex = enemy.Length;
Instantiate (enemy[enemyIndex],spawnPoint,Quaternion.identity);
}
}
股票的公开浮动率=1;
公共浮动时间=2;
公开游戏对象[]敌人;
void Start(){
InvokeRepeating(“addEnemy”,spawhtime,spawhtime);
}
void Spawn(){
//此变换中的随机位置-三维立方体
var x1=transform.position.x-GetComponent().bounds.size.x/2;
var x2=transform.position.x+GetComponent().bounds.size.x/2;
var spawnPoint=newvector2(Random.Range(x1,x2),transform.position.y);
int enemyIndex=敌方长度;
实例化(敌人[enemyIndex],繁殖点,四元数.identity);
}
}
谢谢:)您必须调用适当的函数才能使其工作
void Start()
{
InvokeRepeating ("Spawn", spawnTime, spawnTime);
}
您必须调用“Spawn”
,而不是“addEnemy”
同时更改实例化instanatate,以获得正确的实例化
Instantiate (enemy[Random.Range (0, enemyIndex)], spawnPoint, Quaternion.identity);
敌人[Random.Range(0,enemyIndex)]
帮助您从敌人索引数组0
到enemyIndex-1
中选择随机敌人
异常的原因是将数组的长度作为索引。最大索引限制始终为长度-1。谢谢,但我遇到了以下错误:IndexOutOfRangeException:数组索引超出范围。SpawnScript.Spawn()导致IndexOutOfRangeException的原因是您试图访问一个不存在的数组元素。您必须在enemyIndex变量中减去1:int-enemyIndex=敌方.Length-1;是的,根据需要编辑。如果是整数范围,则“最大限制”是独占的。所以不需要减法。OP putting direct length导致了异常。即使OP从长度中减去1,也只会一直实例化一个游戏对象。