2016-03-07 34 views
0

我有从一个切换按钮接收布尔输入(布尔T1),并设置一个布尔域(hydro.t1Bool)与所述布尔从肘节这样接收到的脚本答:创建和操作一个静态变量

HydroElectric hydro; 
public bool t1; 

public void turbine1State (bool t1) { 
     hydro.t1Bool = t1; 
    } 

我有一个脚本乙与函数(水力发电对象的内部),它返回一个值,根据这个字段布尔:

public float ControlPanel() 
     { 
      turbina1 = t1Bool ? 1.5F : 0; 
      prod = turbina1 ;//+ turbina2 + turbina3; 
      return prod; 
     } 

然后我具有从调用的ControlPanel()功能的脚本C对象Hydroeletric并在屏幕上显示它:

producao.text = hydro.ControlPanel().ToString(); 

我的问题是,我需要使此hydro.t1Bool静态这个动态工作。但要使t1Bool静态我需要使其类静态,但是我不能有一个构造函数(我有)我不能声明实例成员,我的脚本A不会工作,因为我不能声明变量静态类型。

如何使t1Bool静态并避免所有这些限制?

+2

您不需要将class标记为'static'以在其中包含静态成员。 – Sinatr

+1

看来你的一些使用过的类(脚本是否有点用词表示是否表示类本身或它们包含的文件)需要将某些其他类的实例作为依赖关系。他们可以在构造函数中获得这样的依赖性参数 - http://programmers.stackexchange.com/questions/177649/what-is-constructor-injection –

+0

这个***不应该是一个静态的***,并且没有连接静。作为一个新的爱好者程序员,你几乎不可思议的是你需要使用静态。事实上,你是完全“打破”整体如何运作的全部想法!!!! ***只是“找到”游戏对象/组件,就像已经解释过的180亿次。或者干脆拖动一个Inspector变量***。它不是那么容易。 – Fattie

回答

0

你并不需要有类被声明为静态具有静态成员

public class HydroElectric 
    { 
     public static string t1Bool { get; set; } 
    } 

但其在非静态类的静态成员是不好的做法。在OOP类中是为了隐藏其成员。

+0

确实。在基于场景的范例中,一个* ECS Component *上的“静态”概念完全令人沮丧。 – Fattie

+0

那么,如何去做呢? –