脚本中需要的“对象引用”
我目前正在对狐狸&兔子进行仿真,而我完全停留在“繁殖”上。脚本中需要的“对象引用”
我建立了模拟的方式,使用了三个脚本; “TheGame”,“FoxScript”和“RabbitScript”。由于狐狸和兔子本质上是一样的,我们可以把这三个减到两个脚本; “RabbitScript”和“TheGame”。 RabbitScript附加到相应的预制件上; “rabbitPrefab”,而TheGame被附加到一个空的GameObject。
TheGame实例化一些RabbitPrefabs,然后移动,年龄和品种。由于构建应该在稍后阶段收集和呈现数据,所以兔子被包括在列表中以及被计数。这个列表可以在主要脚本中找到,当兔子繁殖时,后代需要包含在这个列表中,并加入柜台。
我试过用这种方法实例化一个原语,它的工作原理。
品种功能连接到兔剧本:
void Breed(){
float p = Random.Range (0.0f, 1.0f);
if (p < probability2breed) {
position = gameObject.transform.position;
TheGame.BreedRabbit(position);
}
}
而且BreedRabbit方法TheGame脚本:
public static void BreedRabbit(Vector3 position) {
GameObject rabbit = Instantiate(RabbitPrefab) as GameObject;
rabbit.transform.position = new Vector3(position);
Rigidbody gameObjectsRigidBody = rabbit.AddComponent<Rigidbody>();
rabbit.GetComponent<Rigidbody>().useGravity = false;
rabbit.name = "Rabbit#:" + rabbitCount;
rabbit.tag = "rabbittag";
rabbits.Add(rabbit);
rabbitCount++;
}
注:(我想了很多的代码似乎毫无意义,所以要事先回答任何问题:我使用碰撞器来处理所涉及的代理之间的相互作用,并且根据我的理解,这需要一个刚体。刚体开始下落,即使没有质量,也必须转动重力。是我的理解需要编辑碰撞handlig以及我可能会跳过计数,只是计算清单,但现在应该不重要)
它不断要求一个对象引用,我只是不明白这是如何解决?
错误消息:“一个对象引用是所必需的非静态字段方法或属性”
我假定在这条线?:
GameObject rabbit = Instantiate(RabbitPrefab) as GameObject;
如果出现对象引用错误情况就是这样,这可能是因为预制没有设置,即脚本不知道RabbitPrefab是什么。
你可以设定在脚本中的变量,然后将你的预制到相应的插槽中插入检查:
public GameObject theRabbitPrefab;
GameObject rabbit = Instantiate(theRabbitPrefab) as GameObject;
如果不是这种情况,你可以编辑你的问题是你在哪里得到错误?当然,错误指出错误正在从哪个代码行生成? :)
编辑:从迭戈,如果是这样的话,你可以添加刚体并将其配置在你的预制件中,而且你不需要在每个新兔子的代码中都做到这一点!
另请注意,如果是这种情况,则可以添加刚体并将其配置在预制,而且你不需要在每个新兔子的代码中执行它:) –
这是我在这里得到的错误。但是当我尝试访问或使用“rabbitCount”时,我也遇到了错误。 – NorwegianViking
rabbitCount在哪里定义? – Tom
请发布实际的错误消息(控制台中显示的错误消息) –
它是否提供了行号/类或脚本名称?如果是这样,请将其添加(并让我们知道您发布的代码中的哪一行对应,因此我们可以找出问题) –