Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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/react-native/7.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
Unity3d ArgumentException:要实例化的预置为null_Unity3d_Instantiation_Unityscript - Fatal编程技术网

Unity3d ArgumentException:要实例化的预置为null

Unity3d ArgumentException:要实例化的预置为null,unity3d,instantiation,unityscript,Unity3d,Instantiation,Unityscript,我犯了一个错误,我不知道为什么。从错误中我可以看出第12行有问题,我想 脚本较大,但不需要解决问题。 但如果你真的需要它,你可以要求它 代码如下: if(RandomInt==2) { var randomNumberB = Random.Range(3,5); for(var b = 0; b < randomNumberB; b++) { var xCoB = childVector3.x + Random.Range(0,10); va

我犯了一个错误,我不知道为什么。从错误中我可以看出第12行有问题,我想

脚本较大,但不需要解决问题。 但如果你真的需要它,你可以要求它

代码如下:

if(RandomInt==2) {
    var randomNumberB = Random.Range(3,5);
    for(var b = 0; b < randomNumberB; b++) {
        var xCoB = childVector3.x + Random.Range(0,10);
        var zCoB = childVector3.z + Random.Range(0,10);
        var randomRotationB = Quaternion.Euler(0,Random.Range(0,360),0);
        var chancheB = Random.Range(0,2);
        if(chancheB == 0) {
            var bushC = Instantiate(bushes[Random.Range(0,bushes.length)], Vector3(xCoB, childVector3.y, zCoB), randomRotationB);
            bushC.transform.name = "bush";
        } else {
            Instantiate(cactus, Vector3(xCoB, childVector3.y, zCoB), randomRotationB).transform.name = "cactus";
        }
    }
}
if(RandomInt==2){
var randomNumberB=随机范围(3,5);
对于(var b=0;b
制作
仙人掌
预制件

然后创建一个公共变量:

 public GameObject cactus;
然后通过de编辑器将预置拖放到脚本变量中。然后可以实例化

 if(cactus != null)
 {
    GameObject g = Instantiate(cactus, new Vector3(xCoB, childVector3.y, zCoB), randomRotation) as GameObject;

    g.name = "cactus";
 }

如果根资源文件夹中有预置,这很容易。如果希望它们位于资源的子文件夹中,则情况有所不同。您需要在中创建一个“Prefables”文件夹

因为您使用的是Javascript

  • 给定资产/资源中名为“Your prefact.prefact”的预置:

    var NewGameObject : GameObject = Resources.Load("Your Prefab"),Vector3.zero,Quaternion.identity);
    
    这将允许您将对该预置的引用加载到内存中

  • 如果希望在资产/资源中的文件夹中包含一个或多个预置,则必须执行以下操作:

    2a。在资产/资源中创建一个名为“Prefables”的文件夹

    2b。在那里创建您的文件夹(例如“资源/预制件/您的预制件文件夹”)

    2c。给定一个名为“Your prefact.prefact”的预置:

  • 注:

    别忘了删除“.prefable”扩展名


    Unity手册声明,您可以从资源加载资产,而无需提供带有文件夹名称的路径。当然,对于预置(和javascript?),这似乎不是真的(Unity 4.6)

    通过谷歌搜索发现:获取你想要实例化的预置并将其放入一个名为“资源”的文件夹中(你必须在项目文件夹中创建它)。将您希望实例化的预置放置在其中。
    var NewGameObject : GameObject = Resources.Load("Prefabs/Your SubFolder/Your Prefab"),Vector3.zero,Quaternion.identity);