0

GameStatesクラスのインスタンスを含むGameServicesクラスがあります。
クラスGameStatesには、GameStateという名前のパブリック列挙型とCurrentGameStateという名前の静的変数があります。

私の問題は、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;
        }
    }
}

私は何か間違ったことをしていますか?

よろしくお願いします、
マーク

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 に答える