C# class 看不到另一个 class 的静态方法

C# class can't see static method of another class

我 运行 在我的一个 Unity 项目中遇到了一些可访问性问题。我创建了一个不继承自 MonoBehaviour 的 class。它有一个方法 public static void LoadScene(string sceneName).

当我尝试从另一个 class 调用此方法时,出现语法错误。这是我使用静态方法的第一个脚本:

public class GameLoader
{
   public static void LoadScene(string sceneName)
   {
       SceneManager.LoadSceneAsync(sceneName);
   }
}

这是我的另一个脚本:

public class GameHandler : MonoBehaviour
{
   private void Start()
   {
       GameLoader.LoadScene("MyScene");    //Syntax error
   }
}

通常情况下,我会对可能出现的问题有所了解,但在这种情况下,GameHandlerGameLoader 识别为 class,但在点 (GameLoader.),它根本找不到任何 属性 或函数。当我尝试在点后面写任何东西时出现语法错误。

我做了一些实验,似乎我不会跨另一个名为 GameLoader 的 class,并且还添加了必要的命名空间。

我在这里很迷路,希望有人能帮助我。

原码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();
          }
       }
   }
}

错误信息:

Severity Code Description Project File Line Suppression State Error IDE1007 The name 'GameLoader.LoadScene' does not exist in the current context.

并且 LoadScene 本身也有同样的错误。

编辑: 编辑后,问题所在就很明显了。 尝试将您的调用 GameLoader.LoadScene("bla"); 移动到一个方法中。 如果您希望在实例化您的处理程序时调用此方法,您可以将其移至构造函数。 示例:

public UiHandlerMenu() {
    GameLoader.LoadScene("bla");
}