C# 创建和操作静态变量

C# 创建和操作静态变量,c#,unity3d,C#,Unity3d,我有一个脚本a,它从切换按钮接收bool输入(bool t1),并使用从切换按钮接收的bool设置bool字段(hydro.t1Bool),如下所示: HydroElectric hydro; public bool t1; public void turbine1State (bool t1) { hydro.t1Bool = t1; } 我有一个脚本B,其中有一个函数(在Hydrogent对象内部),该函数根据以下字段Bool返回一个值: public floa

我有一个脚本a,它从切换按钮接收bool输入(bool t1),并使用从切换按钮接收的bool设置bool字段(hydro.t1Bool),如下所示:

HydroElectric hydro;
public bool t1;

public void turbine1State (bool t1) {
         hydro.t1Bool = t1;
    }
我有一个脚本B,其中有一个函数(在Hydrogent对象内部),该函数根据以下字段Bool返回一个值:

public float ControlPanel ()
        {
            turbina1 = t1Bool ? 1.5F : 0;
            prod = turbina1 ;//+ turbina2 + turbina3;
            return prod;
        }
然后我有一个脚本C,它从对象Hydroelectric调用ControlPanel()函数,并在屏幕上显示它:

producao.text = hydro.ControlPanel().ToString();
我的问题是,我需要使这个hydro.t1Bool成为静态的,这样动态才能工作。但是要使t1Bool成为静态的,我需要使它的类成为静态的,但是我不能有一个构造函数(我有),我不能声明实例成员,我的脚本a也不能工作,因为我不能声明静态类型的变量


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

您不需要将类声明为静态的,就可以拥有静态成员

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

但在非静态类中使用静态成员是一种糟糕的做法。在OOP中,类意味着隐藏其成员。

您不需要将类标记为
static
,就可以在其中包含静态成员。似乎您使用的一些类(无论是表示类本身还是表示它们所包含的文件,使用脚本这个词有点错误)需要将另一些类的实例作为依赖项。它们可以在其构造函数中获得作为参数的依赖项-这不应该是静态的,也不应该与静态相连接。作为一个新的程序员爱好者,你几乎不可能需要使用静力学。事实上,你完全“打破”了统一是如何运作的整个观念!!!!只需“找到”游戏对象/组件,正如180亿次解释的那样。或者简单地拖动一个Inspector变量。如果你必须在某个地方有一个静态类,那么它可能会复制。。。所以,这是一个“全球性的”。。例如,保存分数或用户的昵称或任何东西。。去做吧。但是在
monobhavior
Component
s中不能有静态。这是毫无意义的,也行不通。在基于场景的范例中,ECS组件上的“静态”概念完全是古怪的。那么,如果不是这样,怎么做呢?