我正在用Unity制作一款小型2D RPG游戏。主要理念是玩家可以拥有多个"类别"。在他们的库存中。我说的不是代码中的职业对象,而是典型的RPG职业,如战士、盗贼、盗贼、法师等。玩家应该能够随时切换到他们想要使用的任何职业。所有的类都是不同的。它们都有3个被动加成,4个技能/法术,而且法术变化很大。话虽如此,我正在努力寻找一种方法,如何以一种最有意义的方式编程这些类及其相应的技能集,并使用最少的计算机资源。我在考虑使用c#类(对象类)来实现这一点,但很难使用继承,因为游戏内的类有非常不同的奖励和能力。我想我可以有一个类来存储所有技能共有的变量,比如法力使用和冷却时间。但我如何在没有50种不同职业的情况下编程这些能力呢?
有没有人有关于如何构建这个的设计想法,或者我必须为每个游戏中的类创建一个完整的类?
听起来你只需要一个类:RpgClass。记住:类建模行为,而不是数据。为什么路虎揽胜需要一个与法拉利不同的c#类来存储它的属性?它们有不同的引擎,不同的轮胎,不同的特性,但这些都不需要继承。
所以你会有一个类RpgClass(或者想到更好的东西),它有像Name
,Spells
,Abilities
,Bonuses
这样的属性,你在运行时用不同的字符串和对象实例填充。
然后你会有类Spell
,Ability
,Bonus
,再做同样的事情。只有当它们的实现不同时,才会开始子类化。