我有一个GameServices类,它包含一个GameStates类的实例 GameStates类有一个名为GameState的公共枚举和一个名为CurrentGameState的静态var。
我的问题是,我可以从GameStates类访问CurrentGameState,但不是GameState枚举它自己,而是公开的。
GameServices类
using System;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using SpaceGame.UI;
using SpaceGame.Content;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
namespace SpaceGame.Game
{
public class GameServices
{
public static ContentLoader ContentLoaderService;
public static UIHandler UIHandlerService;
public static GameStates GameStatesService;
public static void Initialize(ContentManager contentManager, GraphicsDevice graphicsDevice)
{
ContentLoaderService = new ContentLoader(contentManager);
UIHandlerService = new UIHandler(graphicsDevice);
GameStatesService = new GameStates();
}
}
}
GameStates类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SpaceGame.Game
{
public class GameStates
{
public GameState CurrentGameState { get; set; }
public enum GameState
{
Settings,
Splash,
SpaceShipyard
}
public GameStates()
{
CurrentGameState = GameState.Splash;
}
}
}
我做错了吗?
先谢谢,
标记
答案 0 :(得分:3)
您应该可以访问它。由于您已在GameStates
类中定义了它,因此该类型的全名将为:
SpaceGame.Game.GameStates.GameState
如果仍然无法解决,那么您可能会遇到名称空间问题,这应该始终有效:
global::SpaceGame.Game.GameStates.GameState
答案 1 :(得分:2)
如果您尝试从同一名称空间访问它,则必须执行类似
的操作GameStates.GameState state = GameStates.GameState.Settings
如果你这样做,但它不起作用,我现在无法帮助你。
这是我做的一个例子。它为我编译。
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
A.AEnum a = A.AEnum.a;
}
}
public class A
{
public enum AEnum
{
a,b
}
}
}
答案 2 :(得分:0)
基本上,不要在其他类中使用枚举(或类)。使用它们时有许多复杂情况。
另外,CurrentGameState不是静态的(至少在你提供的代码中),你说它应该是,所以改变它应该有效。