切换按钮不起作用

时间:2015-12-24 23:58:11

标签: c# unity3d

我的播放状态中有3个切换按钮,如下所示:

public void ShowIt()
        {
            HydroElectric ec = new HydroElectric();

            ec.t1Bool = GUI.Toggle (new Rect (25, 55, 100, 50), ec.t1Bool, "Turbina 2 MW");

            ec.t2Bool = GUI.Toggle (new Rect (25, 95, 100, 50), ec.t2Bool, "Turbina 3 MW");

            ec.t3Bool = GUI.Toggle (new Rect (25, 135, 100, 50), ec.t3Bool, "Turbina 1 MW");

            GUI.Box (new Rect (Screen.width - 100, 60, 80, 25), ec.prod.ToString ());      // PRODUCED ENERGY  
         }

此按钮应更改t1Boolt2Boolt3Bool的值,这些更改应反映在此脚本中:

using System;
using UnityEngine;
namespace Assets.Code.PowerPlants
{
    public class HydroElectric
    {
        public bool t1Bool;
        public bool t2Bool;
        public bool t3Bool;

        public static int turbina1;
        int turbina2;
        int turbina3;

        public float prod;

        public HydroElectric ()
        {
         t1Bool = true;
         t2Bool = true;
         t3Bool = false;
         prod = 0f; 
        }

        public float HydroControlPanel ()
        {
            turbina1 = t1Bool ? 2 : 0;
            turbina2 = t2Bool ? 3 : 0;
            turbina3 = t3Bool ? 1 : 0;

            prod = turbina1 + turbina2 + turbina3;
            return prod;
        }
    }
}

我在控制台中没有错误但是切换按钮在播放模式下根本不起作用,就像值被锁定,我无法选中或取消选中按钮一样,它们只是保持原样。

你知道为什么吗?

1 个答案:

答案 0 :(得分:1)

每次调用与GUI相关的函数时,您都在重新创建HydroElectric,显然没有反映出更改,并且您得到了您所说的行为。

将这行代码从该函数移到其他地方,例如在构造函数中,它将表现正常。