如何为游戏创建一个游戏实体类,它将动态扩展新方法?

时间:2013-01-27 13:55:53

标签: c# class collections xna game-engine

所以,我有一个基本动作的玩家类。在游戏过程中,他解锁了新的能力。我不知道如何在播放器类中存储新动作。确切地说 - 我知道如何,但我的方法太乱了,我想清理代码。另外,我想向敌人添加一些这些能力。换句话说,每个游戏实体(期望墙,可能是:D)应该有一个集合,我可以添加扩展实体功能的方法。我该怎么做?对不起,如果我的问题太过于抽象

1 个答案:

答案 0 :(得分:2)

创建一个动作词典:

public Dictionary<string,Action> NameActionDic = new Dictionary<string,Action>();

然后你可以像这样填充它:

player.NameActionDic["jump"] = ()=>{ player.velocity.Y -= 5; };

并像这样使用:

if (KeyboardButtonPressed(Keys.ArrowUp))  // this is just an example
    player.NameActionDic["jump"]();

只需将人口代码放在郊区(单独的void方法,也许是玩家的构造函数),否则会干扰您的编辑和继续能力,因为它是一个lambda表达式。