首页 > 解决方案 > C#类看不到另一个类的静态方法

问题描述

我的一个 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它本身。

标签: c#unity3dstaticvisibility

解决方案


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

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

推荐阅读