Unity:价值仍未更新 - 更新

时间:2017-11-12 22:22:59

标签: c# unity3d unity5 unity3d-2dtools

更新: 答案中的代码没有起作用,但我有一些进展,但我仍然遇到问题。更新。

这是我的UpgradeUI脚本:

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

OnClick函数也可以与Debug.Log一起使用。下面的代码是Stats脚本,它也更新了我的HealthUI。

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

[Serializable]
public class Stats
{
    public static Stats st;
    [SerializeField]
    private BarScript bar;
    public float maxVal;
    public float currentVal;
    public int playerDamage = 20;


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

我做了一点进步。我放置了这段代码: public void HpUp () { stats.maxVal += 20; stats.currentVal += 20; } public void DmgUp() { stats.playerDamage += 10; }

进入我的PlayerManager,它与我共享的Stats脚本连接,我的健康状况确实更新了。我删除了UpgradeMenuUI。现在的问题是我的伤害没有更新。实际上它更新了,但价值并没有达到我需要的地方。我添加了一个

 public int playerDamage;

在我的Stats脚本中。在我的伤害脚本中,我计算了我的玩家和敌人的伤害,我改变了

  aiManager.Enemy1Damage(playerDamage); to
      aiManager.Enemy1Damage(stats.playerDamage);

我将我的playerDamage从Stats调用到我的Damage脚本中:      public Stats stats;   和

 public void Awake()
     {
         stats = new Stats();
     }

所以问题是如果我改变我的Stats脚本中的playerDamage  this: public int playerDamage;

public int playerDamage = 20;

当我击中AI时,该值确实有效并且我的玩家伤害确实是20。但是在检查员中,我的损坏(统计脚本中的公共int)是0,如果我按下升级损坏按钮,它会上升10(这是我在我的PlayerManager脚本中设置的内容:

 public void DmgUp()
 {
     stats.playerDamage += 10;
 }

),但这并没有以任何方式影响价值20.所以它只是没用,就像抽空气一样。我不知道如何使公共int playerDamage从OnClick更新。如果让它只是playerDamage;没有数字没有更新,损害赔偿为0。

1 个答案:

答案 0 :(得分:1)

您将统计数据作为单身人士,但正在按钮上访问它的新实例。尝试更改:

public void HpUpgrade()
{
    stats.maxVal = (int)(stats.Instance.maxVal += hpUp);

}
public void DmgUpgrade()
{
    dmg.playerDamage = (int)(stats.Instance.maxVal += dmgUp);
}

我无法确定您是否确认您的OnClick事件正在触发按钮。如果他们不是,请确保您的场景中有EventSystem游戏对象。