因此,假设我的Equipable类中有以下数据类型:
public enum Slot { Primary, Secondary };
public enum Primary {RocketLauncher, SniperRifle };
public enum Secondary { MachineGun };
我声明它们可以在编辑器中使用,如下所示:
public Slot slot;
public Primary equipable;
这将导致编辑器中出现以下内容:
我怎样才能动态更改equipable
类型才能看到类似的内容?
注意:
我正在重写一个游戏并试图让它保持整洁。我能够通过一点额外的努力来解决这个问题,但我主要想知道是否可以使用数据类型和使用声明来玩游戏。
谢谢!
答案 0 :(得分:1)
您可以创建自定义类型而不是枚举,然后使用这样的多态:
public class WeaponInventory : MonoBehaviour
{
public Equipable primarySlot;
public Equipable secondarySlot;
}
public abstract class Equipable : MonoBehaviour
{
public Slot slot;
public enum Slot
{
Primary,
Secondary
}
}
Equipable 现在是一个抽象的 MonoBehaviour 组件,需要具体实现:
[System.Serializable]
public class PrimaryEquipable : Equipable
{
public Type type;
public enum Type
{
RocketLauncher,
SniperRifle,
}
}
和
[System.Serializable]
public class SecondaryEquipable : Equipable
{
public Type type;
public enum Type
{
MachineGun,
UnderwaterPulseRifle
}
}
请注意,具体的 MonoBehaviour 组件需要放在他们自己的.cs文件中,该文件与该类名称相同,否则Unity会抱怨。
现在,如果将其中一个组件的标题拖到检查器字段上,则可以切换两个插槽。所以主要武器进入辅助插槽。 (在这种情况下,我会重新考虑 primary 和 secondary 的双重使用,也许可以解决武器插槽阵列和主要的武器类型等)
答案 1 :(得分:0)
要将广告位从Primary
更改为Primary
:
slot = Slot.Secondary;
对于equipable
,您无法将其更改为MachineGun
,因为MachineGun
枚举中未定义Primary
。
可以使用
将equipable
更改为MachineGun
equipable = Primary.MachineGun;
如果您的Primary
枚举为public enum Primary { RocketLauncher, SniperRifle, MachineGun };