C# 如何访问从MonoBehavior继承的类

C# 如何访问从MonoBehavior继承的类,c#,unity3d,monodevelop,C#,Unity3d,Monodevelop,我的问题比标题要复杂一些: 我有一个GUI控制器类,它控制GUI,我想创建一个游戏内购买菜单。在这个菜单中,我可以选择武器,如果我有足够的钱,我可以买它们。我必须访问他们的数据,如价格、描述或名称 问题: -为了访问它们的数据,我必须从类中实例化一个对象,在访问数据之前必须运行start函数。 -主武器类继承自MonoBehavior,因此我无法从该类实例化对象 可能的解决办法: -我可以实例化一个游戏对象,其中包含作为脚本组件的类,然后我可以访问它的数据。但我认为这不是一个好的解决方案 问题:

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

问题: -为了访问它们的数据,我必须从类中实例化一个对象,在访问数据之前必须运行start函数。 -主武器类继承自MonoBehavior,因此我无法从该类实例化对象

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

问题: 我应该把信息储存在别的地方吗?在本地数据库还是什么?我认为将信息存储在类中是一个好主意,但我不再那么确定了


提前感谢您的回答

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

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

武器属性对象可以通过多种方式制作和访问。一个建议是拥有一个存储库,如果对象是单例的,可以使用该存储库获取对该对象的引用,或者返回一个新的引用


顺便说一句,这是一个相当广泛的问题,“正确”的答案可能取决于您拥有多少数据以及您打算如何使用它,或者可能是一个最佳实践问题。因此,它可能更适合于或。

您可以显示类结构吗..?类层次结构如下所示:例如,我在USP类的Start函数中设置了价格,。由于Price成员是在武器类中声明的,所以我不能将其设置为static。