0

我有一个包含 GameStates 类实例的 GameServices 类。
GameStates 类有一个名为 GameState 的公共枚举和一个名为 CurrentGameState 的静态变量。

我的问题是,我可以从 GameStates 类访问 CurrentGameState,但不能访问它自己的 GameState 枚举,而它是公共的。

游戏服务类

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;
        }
    }
}

难道我做错了什么?

提前致谢,
马克

4

3 回答 3

3

您应该可以访问它。由于您已在GameStates类中定义它,因此该类型的全名将是:

SpaceGame.Game.GameStates.GameState

如果仍然无法解决,那么您可能会遇到命名空间问题,这应该始终有效:

global::SpaceGame.Game.GameStates.GameState
于 2012-11-13T19:10:38.847 回答
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
        }
    }
}
于 2012-11-13T19:13:16.950 回答
0

基本上,不要在其他类中使用枚举(或类)。使用它们时有很多并发症。

此外, CurrentGameState 不是静态的(至少在您提供的代码中),并且您说它应该是静态的,因此更改它应该可以工作。

于 2012-11-13T19:12:28.397 回答