无法通过单独的脚本

时间:2015-10-17 12:16:48

标签: c# button unity3d static

我尝试在加载某个场景(播放级别)后使按钮可以互动。它是菜单场景中的一个按钮,表示加载的场景本身(播放后可选择级别)。

问题是:如果用户通过某个级别,比如级别1,则级别2被加载,并且会调用静态方法:

public static void AllowTut2()
{
    Tut2Allowed = true; //public static bool initialised in this script
    tutorial2.interactable = true; //tutorial2 is a button in the "menu scene"
}

为了清楚变量的来源,这是同一个脚本的一部分:

public class LevelSelectScript : MonoBehaviour {

public Button tutorial2;
public static bool Tut2Allowed = false; 
//...some other variables

  void Start () 
  {
  tutorial2 = tutorial2.GetComponent<Button>();
  tutorial2.enabled = false;    //more later on
  ///... some other code
  }
}

现在问题是这个错误:需要一个对象引用来访问非静态成员`LevelSelectScript.tutorial2&#39; (指方法AllowTut2)。

似乎我无法通过给定的静态方法(在另一个脚本中调用)更改tutorial2.interactable。

它基本上说按钮tutorial2是非静态的,因此不能在静态方法中使用它。

现在,如果我将按钮设为静态,即改变

public Button tutorial2;

public static Button tutorial2;

然后我无法将场景中的按钮对象分配给附加脚本中的此变量。

是否有人知道这个问题的解决方案?

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您想使用静态变量并且还使用检查器进行分配,您可以使用单例,here是您可以学习它的地方