Unity3D将值脚本传递给其他脚本

时间:2013-07-19 12:07:13

标签: c# unity3d nullreferenceexception

我有两个脚本。第一个脚本BallControl附加在GameObject上。第二个脚本Hero附加在其他GameObject上。 当我尝试将值Hero传递给BallControl时,我收到一条错误消息:“NullReferenceException:对象引用未设置为对象的实例” 如何解决此问题或如何将附加在对象上的值脚本传递给附加在其他对象上的其他脚本?谢谢你的时间。

using UnityEngine;
using System.Collections;

public class BallControl : MonoBehaviour {

    public int life = 0;
    public GameObject hero;

    void Update () {

        Hero obj = GetComponent<Hero>();
        life = obj.lifeBall; 
        if(life==20){
            print("GameOver");
        }   
    }
}

//

using UnityEngine;
using System.Collections;

public class Hero : MonoBehaviour {

    public int lifeBall = 0;
    public GameObject ball;

    void Update () {
        lifeBall++;
    }

}

1 个答案:

答案 0 :(得分:3)

正如您所说,Hero附加到另一个游戏对象,您需要从另一个对象获取引用。假设GameObject hero是包含Hero组件的组件,而不是您需要的组件:

        Hero obj = hero.GetComponent<Hero>();

确保您已将英雄的游戏对象拖至控球游戏对象的成员hero

无论如何,如果你声明public Hero hero而不是public GameObject hero并将英雄的游戏对象拖到它上面,生活会更容易。比你不需要拨打GetComponent但可以直接使用它。