void ShowStateData() { if (mCurStateGroup == 0) { return; } GUIContent c = null; excel_state_group stateExcel = excel_state_group.Find(mCurStateGroup); EditorGUILayout.LabelField("状态ID", string.Format("{0}", stateExcel.id)); stateExcel.name = EditorGUILayout.TextField("状态名称", stateExcel.name); c = new GUIContent("持续时间", "单位毫秒,填-1为永久存在"); stateExcel.duration = EditorGUILayout.IntField(c, stateExcel.duration); int[] values = Enum.GetValues(typeof(StateType)) as int[]; string[] texts = Enum.GetNames(typeof(StateType)); stateExcel.type = EditorGUILayout.IntPopup("状态类型", stateExcel.type, texts, values); c = new GUIContent("状态图标", "目录下的路径"); stateExcel.icon = EditorGUILayout.TextField(c, stateExcel.icon); EditorGUILayout.Separator(); c = new GUIContent("互斥组ID", "同ID的状态为互斥状态,填0则都不进行互斥判断"); stateExcel.mutexID = EditorGUILayout.IntField(c, stateExcel.mutexID); values = Enum.GetValues(typeof(StateMutexScope)) as int[]; GUIContent[] contents = new GUIContent[values.Length]; for (int i = 0; i < values.Length; ++i) { StateMutexScope v = (StateMutexScope)values[i]; contents[i] = new GUIContent(v.ToDescription()); } c = new GUIContent("互斥检测范围", "在该范围内的状态才参与互斥判断"); stateExcel.mutexScope = EditorGUILayout.IntPopup(c, stateExcel.mutexScope, contents, values); c = new GUIContent("互斥优先级", "当该状态与已有状态互斥时,保留优先级高的状态"); stateExcel.mutexPriority = EditorGUILayout.IntField(c, stateExcel.mutexPriority); c = new GUIContent("互斥同级跳转ID", "当该状态与已有状态互斥,并且优先级相同,则可以跳转到其他状态,一般用作状态升级,填0则不跳转只替换"); stateExcel.mutexNextID = EditorGUILayout.IntField(c, stateExcel.mutexNextID); }
public static string ToDescription(this StateMutexScope enumType) { Type type = typeof(StateMutexScope); try { FieldInfo info = type.GetField(enumType.ToString()); if (info == null) { return("Unkown"); } EnumDescriptionAttribute descAttribute = info.GetCustomAttributes(typeof(EnumDescriptionAttribute), true)[0] as EnumDescriptionAttribute; if (descAttribute != null) { return(descAttribute.Description); } } catch (Exception e) { Debug.LogWarning(e.Message); } return(type.ToString()); }