Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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# 统一实例化_C#_Unity3d - Fatal编程技术网

C# 统一实例化

C# 统一实例化,c#,unity3d,C#,Unity3d,基本上,我做了一个非常简单的游戏,有积木掉落,我有基本的C#知识,但我不能自己真正弄清楚我将如何去做。基本上,我在你必须避免的中间、左边和右边掉3个街区。我已经做了一个实例化脚本,在1到4秒内随机在每个繁殖位置繁殖它们,但有时它会意外地繁殖所有3个!我只需要一个检查,看看是否已经产卵2左右,然后不要产卵在中间,反之亦然。你们能帮帮我吗?谢谢顺便说一句,这是我当前的繁殖脚本 public GameObject spawn; private float spawnTime;

基本上,我做了一个非常简单的游戏,有积木掉落,我有基本的C#知识,但我不能自己真正弄清楚我将如何去做。基本上,我在你必须避免的中间、左边和右边掉3个街区。我已经做了一个实例化脚本,在1到4秒内随机在每个繁殖位置繁殖它们,但有时它会意外地繁殖所有3个!我只需要一个检查,看看是否已经产卵2左右,然后不要产卵在中间,反之亦然。你们能帮帮我吗?谢谢顺便说一句,这是我当前的繁殖脚本

     public GameObject spawn;
     private float spawnTime;

     void Start()
     {  
         spawnTime = Random.Range(1, 5);
         Invoke("Spawn", spawnTime); 
     }

     void Spawn()
     {
         spawnTime = Random.Range(1, 5);
         Instantiate(spawn, transform.position, Quaternion.identity);
         Invoke("Spawn", spawnTime);   
     } 
编辑:

公共类随机产卵器:单行为 {

公共游戏对象生成;
私有浮动时间=1;
void Start()
{
if(GameObject.FindGameObjectsWithTag(“多维数据集”).Length<2)
{
产卵时间=随机范围(1,3);
调用(“繁殖”,繁殖时间);
}
}
void Spawn()
{
if(GameObject.FindGameObjectsWithTag(“多维数据集”).Length<2)
{
产卵时间=随机范围(1,3);
实例化(spawn、transform.position、Quaternion.identity);
调用(“繁殖”,繁殖时间);
}
}

}

您可以在块上添加一个标记,比如说
,然后在实例化一个标记之前,您可以执行
GameObject.FindGameObjectsWithTag(“块”)
将返回一个数组,然后您只需验证该数组的长度

void Spawn()
{
    if(GameObject.FindGameObjectsWithTag("Block").Length < 2){
        Instantiate(spawn, transform.position, Quaternion.identity);
    }
    spawnTime = Random.Range(1, 5);
    Invoke("Spawn", spawnTime);   
} 
void Spawn()
{
if(GameObject.FindGameObjectsWithTag(“块”).Length<2){
实例化(spawn、transform.position、Quaternion.identity);
}
产卵时间=随机范围(1,5);
调用(“繁殖”,繁殖时间);
} 

你也可以有一个
静态
变量,你可以在生成一个块时增加该变量,在销毁一个块时减少该变量。

你可以在你的块上添加一个标记,比如说
,然后在实例化一个之前,你可以执行
游戏对象。FindGameObjectsWithTag(“块”)
将返回一个数组,然后您只需验证该数组的长度

void Spawn()
{
    if(GameObject.FindGameObjectsWithTag("Block").Length < 2){
        Instantiate(spawn, transform.position, Quaternion.identity);
    }
    spawnTime = Random.Range(1, 5);
    Invoke("Spawn", spawnTime);   
} 
void Spawn()
{
if(GameObject.FindGameObjectsWithTag(“块”).Length<2){
实例化(spawn、transform.position、Quaternion.identity);
}
产卵时间=随机范围(1,5);
调用(“繁殖”,繁殖时间);
} 


你也可以有一个
static
变量,你可以在生成一个块时增加变量,在销毁一个块时减少变量。

哇,这比我想象的要简单得多,谢谢你的帮助!实际上我现在遇到了一个错误,它说GameObject不包含长度的定义。编辑:我修复了它,这是一个简单的错误,我不熟悉unity api,犯了我一生中最简单的错误哈哈,很抱歉打扰你,谢谢你的帮助@enyap您确定您使用的是
FindGameObjectsWithTag
而不是
FindWithTag
吗?我忘记了使用FindGameObjectWithTag时的“s”,但无论如何,这个脚本仍然允许生成2个以上的变量,我尝试了一系列不同的变量和比较,出于某种原因,它允许生成3个,然而,如果我将其设置为0,则不允许生成任何,这没有任何意义。我想不出是什么happening@enyap你能编辑你的问题并展示你的脚本在修改后的样子吗?哇,这比我想象的要简单得多,谢谢你的帮助!实际上我现在遇到了一个错误,它说GameObject不包含长度的定义。编辑:我修复了它,这是一个简单的错误,我不熟悉unity api,犯了我一生中最简单的错误哈哈,很抱歉打扰你,谢谢你的帮助@enyap您确定您使用的是
FindGameObjectsWithTag
而不是
FindWithTag
吗?我忘记了使用FindGameObjectWithTag时的“s”,但无论如何,这个脚本仍然允许生成2个以上的变量,我尝试了一系列不同的变量和比较,出于某种原因,它允许生成3个,然而,如果我将其设置为0,则不允许生成任何,这没有任何意义。我想不出是什么happening@enyap您能否编辑您的问题并显示更改后脚本的外观?此脚本是否附加到正在生成的块?@CNuts不是,但现在我已将其应用到正在生成的每个多维数据集,当它们坠落时,它会将它们彼此叠加在一起。哈哈。我将向正在生成的多维数据集添加一个毁灭者脚本,并将它们销毁,如果有超过2个的多维数据集,也许这会解决问题,我会发回。这确实有效,但我认为你的方法会更好,我找到了它不起作用的原因,有一次Unity崩溃了,它没有在我的立方体对象上保存我的标签!哈哈!但现在实际上它们只生成一次,然后再也不会生成。这是因为您需要在if语句之外调用
invoke
,就像我在回答中给出的示例一样。此脚本是否附加到正在生成的块上?@CNuts不是,但现在我已将其应用到正在生成的每个多维数据集上,当它们坠落时,它会将它们彼此叠加在一起。哈哈。我将向正在生成的多维数据集添加一个毁灭者脚本,并将它们销毁,如果有超过2个的多维数据集,也许这会解决问题,我会发回。这确实有效,但我认为你的方法会更好,我找到了它不起作用的原因,有一次Unity崩溃了,它没有在我的立方体对象上保存我的标签!哈哈!但现在实际上它们只繁殖一次,然后再也不会繁殖。这是因为你需要在if语句之外调用
invoke
,就像我在回答中给出的例子一样。
void Spawn()
{
    if(GameObject.FindGameObjectsWithTag("Block").Length < 2){
        Instantiate(spawn, transform.position, Quaternion.identity);
    }
    spawnTime = Random.Range(1, 5);
    Invoke("Spawn", spawnTime);   
}