";对象引用“;脚本中需要

本文关键字:脚本 quot 对象引用 | 更新日期: 2023-09-27 18:20:35

我目前正在开发一个fox&兔子模拟,我完全陷入了"繁殖"。

我构建模拟的方式,使用了三个脚本;"TheGame"、"FoxScript"answers"RabbitScript"。由于狐狸和兔子本质上是一样的,我们可以将这三个脚本减少为两个:"Rabbit Script"和《TheGame》。RabbitScript附在各自的预制件上;"rabbitDefault",而TheGame连接到一个空的GameObject。

游戏实例化了许多拉比前言,然后移动、老化和繁殖。由于构建应该在稍后阶段收集和呈现数据,因此兔子被包括在列表中并被计数。这个列表可以在主脚本中找到,当兔子繁殖时,后代需要包括在这个列表中,并添加到计数器中。

我尝试过用这个方法实例化一个基元,它很有效。

附在兔子身上的脚本中的Breed函数:

void Breed(){   
    float p = Random.Range (0.0f, 1.0f); 
    if (p < probability2breed) {        
            position = gameObject.transform.position;
            TheGame.BreedRabbit(position);  
    }
}

以及游戏脚本中的BreedRabbit方法:

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++;
} 

注意事项:(我认为这些代码中的很多似乎毫无意义,所以事先回答任何关于这方面的问题:我使用对撞机来处理相关代理之间的相互作用,据我所知,这需要刚体。有了刚体,它们开始下落,即使没有质量,所以我不得不转向重力。这些标签也符合我的理解,是处理碰撞所需的。我可能会跳过count,只需计算列表,但现在这应该无关紧要)

它一直在请求对象引用,而我只是不知道如何解决这个问题?

错误消息:"非静态字段方法或属性需要对象引用"

";对象引用“;脚本中需要

我假设对象引用错误发生在这一行?:

GameObject rabbit = Instantiate(RabbitPrefab) as GameObject;

如果是这种情况,可能是因为没有设置预置,也就是说,脚本不知道什么是拉比预置。

您可以在脚本中设置一个变量,然后将预制件拖到检查器的相应插槽中:

public GameObject theRabbitPrefab;

GameObject rabbit = Instantiate(theRabbitPrefab) as GameObject;

如果不是这样,你能把你的问题编辑到错误的地方吗?错误肯定会说明错误是从哪行代码生成的?:)

编辑:来自Diego,如果是这样的话,你可以添加刚体并在你的预制件中配置它,你不需要在代码中为每只新兔子做这件事!