4

オブジェクトをインスタンス名と一致させることが可能かどうか知りたいのですが。

私が得た:

class AnimatedEntity : DrawableEntity
{
    Animation BL { get; set; }
    Animation BR { get; set; }
    Animation TL { get; set; }
    Animation TR { get; set; }
    Animation T { get; set; }
    Animation R { get; set; }
    Animation L { get; set; }
    Animation B { get; set; }

    Orientation orientation ;

    public virtual int Draw(SpriteBatch spriteBatch, GameTime gameTime)
    {
        //draw depends on orientation
    }
}

enum Orientation { 
    SE, SO, NE, NO, 
    N , E, O, S, 
    BL, BR, TL, TR, 
    T, R, L, B 
}

Orientationは列挙型で、Animationはクラスです。

同じ名前のオリエンテーションから正しいアニメーションを呼び出すことはできますか?

4

2 に答える 2

3

アニメーションをプロパティに保存する代わりに、辞書を使用してみませんか?

Dictionary<Orientation, Animation> anim = new Dictionary<Orientation, Animation> {
    { Orientation.BL, blAnimation },
    { Orientation.BR, brAnimation },
    { Orientation.TL, tlAnimation },
    { Orientation.TR, trAnimation },
    { Orientation.T, tAnimation },
    { Orientation.R, rAnimation },
    { Orientation.L, lAnimation },
    { Orientation.B, bAnimation }
};

その後、を使用anim[orientation]して適切なアニメーションにアクセスできます。

于 2013-03-01T00:41:58.260 に答える
1

確かに、aDictionaryは良いオプションです。Animationアニメーションが外部から設定される場合は、インデックスを持つこともできます。

class AnimatedEntity : DrawableEntity
{
    Dictionary<Orientation, Animation> Animations { get; set; }

    public AnimatedEntity()
    {
        Animations = new Dictionary<Orientation, Animation>();
    }

    public Animation this[Orientation orientation] 
    { 
        get{ return Animations[orientation]; }
        set{ Animations[orientation] = value;}
    }

    Orientation Orientation { get; set; }

    public void Draw(SpriteBatch spriteBatch, GameTime gameTime)
    {
        Animation anim = Animations[Orientation];
    }
}

次のように使用されます:

AnimatedEntity entity = new AnimatedEntity();
entity[Orientation.B] = bAnimation;
entity[Orientation.E] = eAnimation;
entity[Orientation.SE] = seAnimation;
于 2013-03-01T01:05:58.433 に答える