Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity2D:生成脚本的问题_C#_Unity3d_Spawn - Fatal编程技术网

C# Unity2D:生成脚本的问题

C# Unity2D:生成脚本的问题,c#,unity3d,spawn,C#,Unity3d,Spawn,所以基本上我有一个繁殖脚本(2D游戏),在繁殖延迟后在敌人身上繁殖。我还添加了一个敌人预制阵列,这样SpawnerScript将在一个随机敌人中生成。然而,我在转换过程中的随机位置(也称为3D立方体)中的预制中产生了一些问题。你看,当我玩游戏时,我的产卵器没有在任何地方产卵,我确保我已经包括了我想要产卵的敌人的大小。并确保我已经安装了预制件。我还确保我的unity项目文件没有bug。也许我的代码错了,我不确定 我的生成脚本: public float RateOfSpawn = 1; publi

所以基本上我有一个繁殖脚本(2D游戏),在繁殖延迟后在敌人身上繁殖。我还添加了一个敌人预制阵列,这样SpawnerScript将在一个随机敌人中生成。然而,我在转换过程中的随机位置(也称为3D立方体)中的预制中产生了一些问题。你看,当我玩游戏时,我的产卵器没有在任何地方产卵,我确保我已经包括了我想要产卵的敌人的大小。并确保我已经安装了预制件。我还确保我的unity项目文件没有bug。也许我的代码错了,我不确定

我的生成脚本:

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,也只会一直实例化一个游戏对象。