2014-10-08 37 views
-2

我的问题比标题更复杂一点: 我有一个GUIController类,它控制着GUI,我想创建一个游戏内购买菜单。在这个菜单中,我可以选择武器,如果我有足够的钱,我可以购买它们。我必须访问他们的数据,如价格,描述或名称。如何访问继承自monobehaviour的类

问题:
- 要访问他们的数据,我必须从类中实例化一个对象(启动函数必须在访问数据之前运行)。
- 主Weapon类是从MonoBehaviour继承的,所以我无法从类中实例化对象。

可能的解决方案:
- 我可以实例化一个包含类作为脚本组件的游戏对象,然后我可以访问它的数据。我认为这不是一个好的解决方案。

问题:
我应该在其他地方存储信息吗?在本地数据库或东西?我认为在课堂上存储信息是一个好主意,但我不再那么肯定。

谢谢您提前给出答案!

+0

你可以显示类结构..? – MethodMan 2014-10-08 15:15:06

回答

0

编辑:鉴于你的类层次结构静态变量的建议显然不会工作。编辑以提供另一种可能的解决方案。

您可以为Weapon属性创建一个新类,并为每种武器类型创建它的实例。这些可以从代码,数据库,配置文件等填充。在构建特定Weapon的实例时,您可以为其提供属性对象并跨所有属性的值进行复制。这可以通过使用反射来完成,以避免您必须为每个属性编写作业。

武器属性对象可以通过多种方式制作和访问。一个建议是有一个存储库可以用来获取对象的引用(如果它们是单例)或返回一个新的。顺便说一下,这是一个相当广泛的问题,“正确的”答案可能取决于您有多少数据以及您打算如何使用它,或者可能是最佳实践的问题。因此,它可能更适合于programmers.stackexchange.comgamedev.stackexchange.com

+0

类层次结构如下所示:http://i.imgur.com/t9BRHsr.jpg 例如,我在USP类的Start函数中设置价格。由于Price成员是在Weapon类中声明的,我不能将其设置为静态。 – ithuriel89 2014-10-08 17:37:02