【发布时间】:2021-10-20 06:05:54
【问题描述】:
我的一个 Unity 项目遇到了一些可访问性问题。我创建了一个不继承自MonoBehaviour 的类。它有一个方法public static void LoadScene(string sceneName)。
当我尝试从另一个类调用此方法时,出现语法错误。这是我第一个使用静态方法的脚本:
public class GameLoader
{
public static void LoadScene(string sceneName)
{
SceneManager.LoadSceneAsync(sceneName);
}
}
这是我的另一个脚本:
public class GameHandler : MonoBehaviour
{
private void Start()
{
GameLoader.LoadScene("MyScene"); //Syntax error
}
}
通常,我会知道问题可能出在哪里,但在这种情况下,GameHandler 将 GameLoader 识别为类,但在点 (GameLoader.) 之后,它找不到任何属性或完全发挥作用。当我尝试在点之后写任何东西时,我会遇到语法错误。
我做了一些实验,似乎我不会跨越另一个名为 GameLoader 的类,并且还添加了必要的命名空间。
我很迷茫,希望有人能帮帮我。
原码GameLoader:
using UnityEngine.SceneManagement;
using UnityEngine;
namespace MyGame
{
namespace System
{
public class GameLoader
{
public static void LoadScene()
{
}
}
}
}
原UIHandler:
using UnityEngine;
using System;
namespace MyGame
{
namespace System
{
namespace UI
{
public class UIHandlerMenu : MonoBehaviour
{
GameLoader.LoadScene();
}
}
}
}
错误信息:
严重性代码描述项目文件行抑制状态 错误 IDE1007 当前上下文中不存在名称“GameLoader.LoadScene”。
LoadScene 本身也有同样的错误。
【问题讨论】:
-
如果您单击资产中的
GameLoader脚本一次,您是否在 Inspector 中看到了它的内容?还有其他编译器错误吗?你是在 Unity 中得到错误还是在你的 IDE 中得到错误? -
是的,我看到了它的内容,没有其他错误。
-
GameLoader 文件保存了吗?标签名称旁边是否有星号?
-
一切都保存了。
-
两个类是在同一个项目中还是
GameLoader在引用的dll/项目中?
标签: c# unity3d static visibility