Example #1
0
    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);
    }
Example #2
0
    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());
    }