И така, имам клас играч с основни действия. По време на играта той отключва нови способности. Не знам как да съхранявам нови действия в класа на играча. За да бъда точен - знам как, но методът ми е твърде объркан и искам да изчистя кода. Освен това искам да добавя към враговете някои от тези способности. С други думи, всеки обект на игра (очаквайте стени, може би :D) трябва да има колекция, към която мога да добавя методи, които разширяват функционалността на обекта. Как да направя това? Съжалявам, ако въпросът ми е твърде абстрактен
Как да създадете клас на игрален обект за игра, която ще бъде разширена с нови методи динамично?
Отговори (1)
Създайте речник на действията:
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
метод, може би конструктор на играча), или той ще попречи на възможността ви за редактиране и продължаване, защото това е ламбда израз.
person
user1306322
schedule
27.01.2013
О, изглежда това, което търся! Благодаря ти!
- person edwing; 27.01.2013
EntityCanDo = Functionality.Jump | Functionality.Run
или списък с действия? - person Cyral   schedule 27.01.2013