Class 统一的动态类型?
假设我的Equipable类中有以下数据类型:Class 统一的动态类型?,class,unity3d,types,enums,Class,Unity3d,Types,Enums,假设我的Equipable类中有以下数据类型: public enum Slot { Primary, Secondary }; public enum Primary {RocketLauncher, SniperRifle }; public enum Secondary { MachineGun }; 我声明它们在编辑器中可用,如下所示: public Slot slot; public Primary equipable; 这将导致编辑器中出现以下内容: 如何动态更改equi
public enum Slot { Primary, Secondary };
public enum Primary {RocketLauncher, SniperRifle };
public enum Secondary { MachineGun };
我声明它们在编辑器中可用,如下所示:
public Slot slot;
public Primary equipable;
这将导致编辑器中出现以下内容:
如何动态更改equitable
类型以查看类似的内容
注:
我正在改写一个游戏,并试图保持它非常整洁。我可以通过一点额外的努力来实现这一点,但我最想知道的是,我是否可以通过使用数据类型和使用声明玩游戏来实现这一点
谢谢 将插槽从
主
更改为主
:
slot = Slot.Secondary;
对于equitable
,您不能将其更改为MachineGun
,因为MachineGun
未在主
枚举中定义
可以将装备
更改为机枪
equipable = Primary.MachineGun;
如果您的
Primary
enum是public enum Primary{RocketLauncher,sniperifle,MachineGun}代码>您可以创建自定义类型而不是枚举,然后像这样使用多态性:
public class WeaponInventory : MonoBehaviour
{
public Equipable primarySlot;
public Equipable secondarySlot;
}
public abstract class Equipable : MonoBehaviour
{
public Slot slot;
public enum Slot
{
Primary,
Secondary
}
}
Equipable现在是一个抽象的单行为组件,需要有一个具体的实现:
[System.Serializable]
public class PrimaryEquipable : Equipable
{
public Type type;
public enum Type
{
RocketLauncher,
SniperRifle,
}
}
及
请注意,具体的MonoBehavior组件需要放在自己的.cs文件中,该文件与类同名,否则Unity会抱怨
现在,如果将其中一个组件的标题拖到inspector字段上,两个插槽都可以切换。因此,主武器进入辅助插槽。(在这种情况下,我会重新考虑主要和次要武器的双重使用,可能会选择一系列武器槽和主要武器类型等。)
[System.Serializable]
public class SecondaryEquipable : Equipable
{
public Type type;
public enum Type
{
MachineGun,
UnderwaterPulseRifle
}
}