如何根据对象是什么设计上下文菜单?
我正在寻找“右键单击选项”行为的解决方案。 基本上,当右键单击游戏时,游戏中的所有项目都可以根据对象的不同显示一组选项。 右键单击不同情况的示例: 库存:头盔显示选项(装备,用途,掉落,描述) 银行:头盔显示选项(Take 1,Take X,Take All,Description) 楼层:头盔显示选项(“乘车”,“在这里行走”,“描述”) 显然,每个选项都以某种方式指向执行所说内容的特定方法。这是我要解决的问题的一部分。对于单个项目有这么多的潜在选项,我如何以不至于太混乱的方式设计班级? 我曾考虑过继承,但是这可能会很漫长,而且链条可能很大。 我已经考虑过使用接口,但这可能会限制我一点,因为我无法从Xml文件加载项目数据并将其放入通用的“ Item”类中。 我将期望的最终结果基于一个名为Runescape的游戏。可以在游戏中右键单击每个对象,并根据其位置以及位置(存货,楼层,银行等)显示不同的选项集,供玩家进行交互。 我将如何实现这一目标?首先,我应该采用哪种方法,决定应该显示哪些选项,单击后如何调用相应的方法。 我正在使用C#和Unity3D,但是提供的任何示例都不必与它们中的任何一个相关,因为我追求的是与实际代码相反的模式。 非常感谢您的帮助,如果我在问题或期望的结果中不清楚,请发表评论,我会尽快解决。 到目前为止,这是我尝试过的: 实际上,我已经设法实现了一个通用的“ Item”类,其中包含了不同类型项目的所有值(额外攻击,额外防御,成本等)。这些变量由Xml文件中的数据填充。 我曾考虑过将每个可能的交互方法都放置在Item类中,但是我认为这是令人难以置信的混乱且糟糕的形式。我可能仅通过使用一个类而不将其子类化为不同的项目而采用了错误的方法来实现这种系统,但这是我可以从Xml加载数据并将其存储在类中的唯一方法。 我之所以选择从Xml文件中加载我的所有物品,是因为该游戏可以容纳40,000多个物品。如果我的数学正确,则每个项目的班级很多。