【发布时间】:2012-07-30 23:41:33
【问题描述】:
我有一个玩家class、NPC class、BattleManager class 和游戏class。
玩家类存储/获取/设置玩家统计数据,例如健康、耐力、等级、经验。 NPC 类似,但适用于 NPC。游戏class 实例化玩家class 和NPC class。游戏玻璃有两种游戏状态,战斗和非战斗。
当玩家处于战斗状态时,GameState进入战斗状态,当战斗结束时,它切换到非战斗状态。
我想做的是让 BattleManager class 管理 NPC 和玩家之间的战斗,但是,由于玩家和 NPC 对象是在 Game 类中实例化的,我需要知道如何传递该对象或访问它来自 BattleManager 而无需实例化一个新的。
任何人都可以建议它如何工作的一般流程吗?我知道这是错误的,但有没有办法做类似Game.Player.Health -= damage; 的事情?例如,在玩家class 是public int Health get/set 内,当在 Game 类中实例化 Player 类时,如何从其他类编辑健康?有没有办法传递 Player object 或者只是从其他类访问在 Game 类中创建的实例化对象?
【问题讨论】:
-
我建议您阅读一些设计模式。它们是针对常见问题(例如您的问题)的精心设计的解决方案。您应该使用玩家应该做的所有事情(即 methods )为玩家建模,例如
TakeDamage。责任链也包含在一些设计模式中。 -
public event BattleStarted ITSON和public delegate void BattleStarted(object sended, BattleStartedEventArgs e)和class BattleStartedEventArgs : EventArgs { public Player One {get;set;} public NPC Two [get;set;} }
标签: c# object xna-4.0 instantiation