Unity:单击升级时按Null参考按钮

时间:2017-11-12 20:17:25

标签: c# unity3d

我有一个问题,可能来自我的经验不足,我想添加一个带有两个按钮的升级菜单。如果你点击第一个按钮,hp得到提升,然后我想让它自己禁用,但这是另一个故事。第二个按钮也是如此,但这次它会增加伤害。代码是我的UpgradeMenuUI,它位于GUI元素GmaeOBject下,如下所示。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;    

public class UpgradeMenuUI : MonoBehaviour {    

    private Stats stats;
    private DamageScript dmg;    

    public void HpUpgrade()
    {
       line 16 error// stats.maxVal += 20;
    }

    public void DmgUpgrade()
    {
        same error for this button// dmg.playerDamage += 10;
    }
}

在我的DamageScript脚本中,存在公共int玩家损坏; ,我在这里访问,为了健康,它来自Stats脚本,我将它与UI健康栏链接:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

[Serializable]
public class Stats
{
    [SerializeField]
    private BarScript bar;
    public float maxVal;
    public float currentVal;

    public float CurrentVal
    {
        get
        {
            return currentVal;
        }

        set
        {
            this.currentVal = Mathf.Clamp(value, 0, maxVal);
            bar.Value = currentVal;
        }
    }

    public float MaxVal
    {
        get
        {
            return maxVal;
        }    
        set
        {
            this.maxVal = value;
            bar.MaxValue = value;
        }
    }

    public void Initialize()
    {    
        this.MaxVal = maxVal;
        this.CurrentVal = currentVal;
    }
}

我想要的只是当我点击按钮时相应的单位进行改进。我通过OnClick为每个按钮添加空白,但是当我按下我的两个按钮时,我收到此错误:

NullReferenceException:未将对象引用设置为对象的实例 UpgradeMenuUI.HpUpgrade()(在Assets / Scripts / Level1 / UpgradeMenuUI.cs:16) UnityEngine.Events.InvokableCall.Invoke(System.Object [] args)(at

真的很长,这是第一部分。

有什么想法吗? 谢谢!

0 个答案:

没有答案