2016-06-15 42 views
0

在我的团结游戏单位可以拿起一个新的武器。有四个相关的类;单位,子弹(这两个都是游戏物体上的monobehaviour类),武器,弹头(都不应该作为3D空间中的游戏对象存在)。实施武器依赖(单位/武器/弹丸/弹头)[Unity3D C#]

除了各种属性(伤害,射程等)之外,武器实例必须存储弹头和射弹作为属性;前者是一个类实例,后者是一个预制件。武器级有一种射击方法,可以实例化射弹,瞄准它,应用弹头并重新装填。

我遇到过这个问题,因为没有继承monobehaviour的类,或者是脚本对象,不能在编辑器窗口(或通过代码知道我的知识)中分配预制件。并且脚本对象也不能在编辑器中分配。我不能通过检查员或代码将武器或武器分配给武器。像这样将scriptableobject和monobehaviour类串起来会破坏我的代码。

我以前的工作是通过为单元类指定预制参考以及拍摄方法。目前有一个基地弹头和基地武器班,从中派生出儿童,这就是我希望它留下来的方式。但是我对于如何将所有武器方法和属性放入单位课程感到不满意,因为我希望将武器的射击功能放入武器中(这很合理?),并将武器的单位与武器分开。

实施该系统的最佳方式是什么?

+0

我讨厌这么说,但是你应该考虑版本控制(就像你提到的那样,它“曾经工作过”)。 – MiningSam

+0

@MiningSam这总是很好的建议,但它并不重要,因为问题是试图让monobehaviour和非类进行交互,并且抛出错误,我不知道如何最好地解决该实现。 – inappropriateCode

回答

1

所以,你想要武器从BaseWeapon继承,但如果你这样做,你不能直接从MonoBehaviour继承,你需要它来设置Prefab引用。

我看到它的方式,最好的办法就是将BaseWeapon作为一个接口来实现,然后每个武器都实现这个接口,同时也继承了MonoBehaviour。

+0

谢谢!只是为了确认,在这种情况下,你的意思是说接口基本武器从monobehaviour继承吗?我在检查员中分配甚至monobehaviour脚本时遇到问题;在这种情况下,将武器脚本分配给单位的武器脚本字段。根据你的建议,你说这应该是可行的? – inappropriateCode

+1

我的意思是,BaseWeapon不必从任何东西继承。这是一个界面。 作为一个类的武器继承于MonoBehaviour。这使您可以引用预制和脚本以及您想要实现的任何其他功能。武器还实现了BaseWeapon接口,让它可以访问BaseWeapon类中的所有方法和变量。在这种情况下,它基本上允许你的武器类同时继承两个类。 – DisturbedNeo

+0

当然,如果你真的想要,我猜BaseWeapon也可以继承MonoBehaviour,没有什么可以阻止你这样做。我不确定那将如何相互作用。 – DisturbedNeo