【问题标题】:Cannot use public static bool in another script不能在另一个脚本中使用公共静态布尔
【发布时间】:2021-11-11 16:50:38
【问题描述】:

我有一个脚本(称为 PauseMenu1),它只包含以下行:

public static bool IsOn = false;

我可以通过键入在第二个脚本(处理光线投射)中访问它

if (PauseMenu1.IsOn)
            return;

在第二个脚本中。当暂停菜单处于活动状态时,这可以很好地防止光线投射。 现在这是我的问题:如果我粘贴“if (PauseMenu1.IsOn) return;”插入第三个脚本(FirstPersonController 或 MouseLook,它们是标准资产脚本),它给了我一个错误,上面写着:

“错误 CS0103 名称 'PauseMenu1' 在当前上下文中不存在”。

第二个脚本(光线投射),其中

if (PauseMenu1.IsOn)
            return;

行作品,还包括以下几行:

[SerializeField] GameObject pauseMenu;

    public void Start()
    {
        PauseMenu1.IsOn = false;
    }
public void TogglePauseMenu()
    {
        pauseMenu.SetActive(!pauseMenu.activeSelf);
        PauseMenu1.IsOn = pauseMenu.activeSelf;
    }

将这些粘贴到其他脚本中会给我同样的错误:

“错误 CS0103 名称 'PauseMenu1' 在当前上下文中不存在”

【问题讨论】:

  • 它们是否都包含在同一个命名空间中?
  • 抱歉,“他们”是什么意思?
  • 第三个脚本和PauseMenu1
  • 我不这么认为,我不确定那是什么意思。
  • 您需要将 PauseMenu1 设为公共静态类才能以这种方式访问​​它。

标签: c# unity3d static boolean


【解决方案1】:

找到了答案。它位于称为标准资产的文件夹中,因此在其他所有内容之前编译。

https://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html

【讨论】:

    猜你喜欢
    • 2018-05-22
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2016-06-01
    • 2020-05-09
    • 2010-10-19
    • 1970-01-01
    • 2018-11-07
    相关资源
    最近更新 更多