"对象参考"在脚本中需要

时间:2015-11-04 16:03:32

标签: c# unity3d

我目前正在研究狐狸和狐狸。兔子模拟,我完全坚持"育种"。

我建立模拟的方式,使用了三个脚本; “TheGame”,“FoxScript”和“RabbitScript。由于狐狸和兔子基本相同,我们可以减少这三到两个脚本; “RabbitScript”和“TheGame”。 RabbitScript附在相应的预制件上; “rabbitPrefab”,而TheGame附加到一个空的GameObject。

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

我已尝试使用此方法实例化基元,并且它可以正常工作。

附在兔子脚本中的品种功能:

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

TheGame脚本中的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++;
} 

注意:(我认为很多代码似乎毫无意义,所以事先回答任何问题:我使用对撞机来处理所涉及的代理之间的交互,并且据我所知,这需要一个刚性的人。他们开始使用刚体摔倒,即使没有质量,所以我不得不转向重力。标签也是我对碰撞手柄所需要的理解。我可以跳过计数并只计算清单,但现在这不重要)< / p>

它不断要求对象引用,我只是无法弄清楚如何解决这个问题?

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

1 个答案:

答案 0 :(得分:0)

我假设此行发生了对象引用错误?:

GameObject rabbit = Instantiate(RabbitPrefab) as GameObject;

如果是这种情况,可能是因为没有设置预制件,即脚本不知道RabbitPrefab是什么。

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

public GameObject theRabbitPrefab;

GameObject rabbit = Instantiate(theRabbitPrefab) as GameObject;

如果不是这种情况,您可以将问题编辑到收到错误的位置吗?当然错误说明错误产生的代码行是什么? :)

编辑:从Diego,如果是这种情况,你可以添加刚体并在预制件中配置它,你不需要在每个新兔子的代码中都这样做!