不能通过单独的脚本使按钮不可交互

本文关键字:按钮 交互 脚本 单独 不能 | 更新日期: 2023-09-27 18:18:03

我正在尝试在加载某个场景(游戏邦注:即游戏关卡)后使按钮具有交互性。它是菜单场景中的一个按钮,代表加载的场景本身(在播放后可选择关卡)。

问题是这样的:如果用户通过了某个级别,比如级别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'(指向AllowTut2方法).

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

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

现在如果我将按钮设置为静态,也就是改变

public Button tutorial2;

public static Button tutorial2;

那么我就没有办法将场景中的按钮对象分配给附带脚本中的这个变量。

有人知道这个问题的解决办法吗?

提前感谢!

不能通过单独的脚本使按钮不可交互

如果你想使用静态变量并使用检查器进行赋值你可以使用singleton,在这里你可以学习它