本文共 1061 字,大约阅读时间需要 3 分钟。
Unity3D中的枚举类型通常默认为单选,但有时候我们需要实现多选功能。这只需要通过脚本实现即可。以下是具体实现步骤:
首先,我们需要创建两个新的C#脚本:EnumFlags
和EnumFlagsDrawer
。
EnumFlags
脚本打开EnumFlags
脚本,添加如下代码:
using UnityEngine;public class EnumFlags : PropertyAttribute{}
这个脚本继承自PropertyAttribute
,用来为属性添加自定义属性。这里不需要额外的字段,仅仅是标记我们的属性应受EnumFlagsDrawer
处理。
EnumFlagsDrawer
脚本打开EnumFlagsDrawer
脚本,添加如下代码:
using UnityEngine;using UnityEditor;[CustomPropertyDrawer(typeof(EnumFlags))]public class EnumFlagsAttributeDrawer : PropertyDrawer{ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { property.intValue = EditorGUI.MaskField(position, label, property.intValue, property.enumNames); }}
这个脚本继承自PropertyDrawer
,添加了一个OnGUI
方法。这个方法定义了如何绘制属性界面。当使用EnumFlags
属性时,OnGUI
会使用EditorGUI.MaskField
绘制一个多选框。
在脚本中使用如下方式:
public enum solt{ solt1, solt2, solt3}[sazenFlags]public solt example = solt.solt1;
solt1
、solt2
、solt3
是枚举值。[sazenFlags]
注释添加到枚举属性上(可以根据项目需要调整注释名称)。这样,下一次在Unity中编辑这些属性时,EnumFlagsDrawer
会将它们作为多选框显示。
转载地址:http://rqzxz.baihongyu.com/