C#类看不到另一个类的静态方法
Posted
技术标签:
【中文标题】C#类看不到另一个类的静态方法【英文标题】:C# class can't see static method of another class 【发布时间】: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/项目中?
【参考方案1】:
编辑:
编辑后,现在很明显问题出在哪里。
尝试将您的电话 GameLoader.LoadScene("bla");
移动到一个方法中。
如果您希望在实例化处理程序时调用此方法,您可以将其移至构造函数。
示例:
public UiHandlerMenu()
GameLoader.LoadScene("bla");
【讨论】:
我什至在 Unity 中从 VS 2019 更改为 VS 2017,但仍然没有。当然,不幸的是 Unity 和 VS 重启并没有真正起作用。 您是否尝试过删除 ``` public static void LoadScene(string sceneName) `` 中的代码,然后再次清理和重建? 是的,我试过了。我什至删除了脚本文件并重新创建了它。没有结果。 如果你不需要实例化 GameLoader 类,你可以尝试在类中添加静态,否则我也没有想法:public static class GameLoader ... 查看您的编辑。GameLoader.LoadScene() 真的在类中,而不是在方法/构造函数中吗?那是错误以上是关于C#类看不到另一个类的静态方法的主要内容,如果未能解决你的问题,请参考以下文章