我收到错误而且我不知道为什么。从错误中我可以看出第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";
}
}
}
答案 0 :(得分:3)
制作cactus
预制件。
然后创建一个公共变量:
public GameObject cactus;
然后通过de Editor将预制件拖放到脚本变量中。然后你可以实例化。
if(cactus != null)
{
GameObject g = Instantiate(cactus, new Vector3(xCoB, childVector3.y, zCoB), randomRotation) as GameObject;
g.name = "cactus";
}
答案 1 :(得分:1)
如果预制件位于根资源文件夹中,则很容易。如果您希望它们位于Resources的子文件夹中,则会有所不同。您需要在。
中创建“Prefabs”文件夹因为您使用的是Javascript
在资产/资源中给出一个名为“Your Prefab.prefab”的预制件:
var NewGameObject : GameObject = Resources.Load("Your Prefab"),Vector3.zero,Quaternion.identity);
这将允许您引用该预制件,并将其加载到内存中。
如果您希望在资产/资源的文件夹中包含预制件或更多预制件,则必须执行以下操作:
2a上。在Assets / Resources中创建一个名为“Prefabs”的文件夹。
2B。在那里创建您的文件夹(例如“Resources / Prefabs / Your Prefab Folder”);
2c中。给出一个名为“Your Prefab.prefab”的预制件:
var NewGameObject : GameObject = Resources.Load("Prefabs/Your SubFolder/Your Prefab"),Vector3.zero,Quaternion.identity);
注意:
不要忘记删除“.prefab”扩展程序。
Unity手册指出,您可以从Resources加载资源,而无需提供包含文件夹名称的路径。当然关于预制件(和javascript?)似乎不是真的(Unity 4.6)。