Non Monobehaviour属性创建NullReferenceException

时间:2017-08-16 21:31:01

标签: c# unity5 unity2d

我是Unity / C#的新手,我无法找到问题的答案:0

我有一个脚本(selectCharacter),它将一个脚本(Knight)添加到游戏对象中。 Knight脚本调用方法" SetResource(true)"。此方法创建NullReferenceException。该问题是由属性"私有属性健康"生成的。 (属性是非Monobehaviour类)但我不知道为什么,因为我去了骑士脚本 manuel到游戏对象一切都很好。

感谢您的帮助,抱歉我的英语不好。

    public class SelectCharacter : MonoBehaviour {
       void Start () {
          gameObject.AddComponent(typeof(Knight));
       }
    }

    public class Knight : PlayerStandardAttribute
    {
       void Start () {
       SetResource(true)
       }
    }

    public class PlayerStandardAttribute : MonoBehaviour {

       private Attribute health;

       public void SetResource(bool healthP) {
          if (healthP == true){
          Debug.Log(health.ToString());
          health.CurrentBar = GameObject.Find("HealthBar").GetComponent<Bar>();        
          }
    }

1 个答案:

答案 0 :(得分:0)

在调用SetResource之前,您需要创建一个Attribute实例并将其分配给运行状况。这将是:

void Start () {
   health = new Attribute();
   SetResource(true);
   }