예제 #1
0
 public void CheckInstance()
 {
     if (subDatas.Length < skillData.subSkills.Length)
     {
         LCHSkillSubData[] newAry = new LCHSkillSubData[skillData.subSkills.Length];
         for (int n = 0; n < skillData.subSkills.Length; n++)
         {
             if (n < subDatas.Length)
             {
                 newAry[n] = subDatas[n];
             }
             else
             {
                 newAry[n] = new LCHSkillSubData();
             }
         }
         subDatas = newAry;
     }
 }
    public void OnGUI1()
    {
        var   layourWidth30  = GUILayout.Width(30f);
        var   layourWidth80  = GUILayout.Width(80f);
        var   layourWidth20  = GUILayout.Width(20f);
        var   layourWidth100 = GUILayout.Width(100f);
        var   layourWidth200 = GUILayout.Width(200f);
        Color selectColor    = new Color(0.4f, 0.4f, 1.0f);

        if (null == roleData)
        {
            return;
        }

        if (SkillEditorData.Instance.CurSkillId.Length == 0)
        {
            return;
        }
        LCHSkillData skill = null;

        if (SkillEditorData.Instance.CurSkillId.Length > 0)
        {
            skill = SkillEditorData.Instance.skillsData.GetSkill(SkillEditorData.Instance.CurSkillId);
        }
        if (null == skill)
        {
            return;
        }
        EditorGUILayout.BeginHorizontal();
        int __index = EditorGUILayout.Popup("技能段数(总段数" + skill.subSkills.Length + "):", SkillEditorData.Instance.subSkillIndex, GetStringList(skill.subSkills.Length));

        if (__index != SkillEditorData.Instance.subSkillIndex)
        {
            SkillEditorData.Instance.skill.Release();
            SkillEditorData.Instance.subSkillIndex = __index;
        }

        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("添加段数"))
        {
            LCHSubSkill[]     newList    = new LCHSubSkill[skill.subSkills.Length + 1];
            LCHSkillSubData[] newSubList = new LCHSkillSubData[skill.subSkills.Length + 1];
            for (int i = 0; i < skill.subSkills.Length; i++)
            {
                newSubList[i] = SkillEditorData.Instance.skill.subDatas[i];
                newList[i]    = skill.subSkills[i];
            }
            int index0 = skill.subSkills.Length;
            newList [index0]   = new LCHSubSkill();
            newSubList[index0] = new LCHSkillSubData();
            skill.subSkills    = newList;
            SkillEditorData.Instance.skill.subDatas = newSubList;

            SkillEditorData.Instance.skillsData.SkillAddBoxCollider(SkillEditorData.Instance.CurSkillId, index0);
            SkillEditorData.Instance.skillsData.SkillLerpFloatChannel(index0, SkillEditorData.Instance.CurSkillId, -1, LCHChannelType.PosY);
            SkillEditorData.Instance.skillsData.SkillLerpFloatChannel(index0, SkillEditorData.Instance.CurSkillId, -1, LCHChannelType.PosZ);

            SkillEditorData.Instance.skillsData.SkillLerpFloatChannel(index0, SkillEditorData.Instance.CurSkillId, 0, LCHChannelType.PosY);
            SkillEditorData.Instance.skillsData.SkillLerpFloatChannel(index0, SkillEditorData.Instance.CurSkillId, 0, LCHChannelType.PosZ);

            SkillEditorData.Instance.skillsData.SkillLerpFloatChannel(index0, SkillEditorData.Instance.CurSkillId, 0, LCHChannelType.ScaleX, false);
            SkillEditorData.Instance.skillsData.SkillLerpFloatChannel(index0, SkillEditorData.Instance.CurSkillId, 0, LCHChannelType.ScaleY, false);
            SkillEditorData.Instance.skillsData.SkillLerpFloatChannel(index0, SkillEditorData.Instance.CurSkillId, 0, LCHChannelType.ScaleZ, false);


            SkillEditorData.Instance.skillsData.SkillEventChannel(SkillEditorData.Instance.CurSkillId, -1, LCHChannelType.Object, index0);
            SkillEditorData.Instance.skillsData.SkillEventChannel(SkillEditorData.Instance.CurSkillId, 0, LCHChannelType.Event, index0);
        }
        if (GUILayout.Button("删除段数"))
        {
            if (skill.subSkills.Length > 1)
            {
                LCHSubSkill[]     newList    = new LCHSubSkill[skill.subSkills.Length - 1];
                LCHSkillSubData[] newSubList = new LCHSkillSubData[skill.subSkills.Length - 1];
                for (int i = 0; i < skill.subSkills.Length - 1; i++)
                {
                    newSubList[i] = SkillEditorData.Instance.skill.subDatas[i];
                    newList[i]    = skill.subSkills[i];
                }
                skill.subSkills = newList;
                SkillEditorData.Instance.skill.subDatas = newSubList;
            }
        }

        EditorGUILayout.EndHorizontal();
        SpeceLine();
        var buttonRect = EditorGUILayout.BeginHorizontal();

        if (GUILayout.Button("添加对象", layourWidth80))
        {
            int _id = SkillEditorData.Instance.skillsData.SkillAddObject(SkillEditorData.Instance.CurSkillId, SkillEditorData.Instance.subSkillIndex);

            SkillEditorData.Instance.skillsData.SkillLerpFloatChannel(SkillEditorData.Instance.subSkillIndex, SkillEditorData.Instance.CurSkillId, _id, LCHChannelType.PosY);
            SkillEditorData.Instance.skillsData.SkillLerpFloatChannel(SkillEditorData.Instance.subSkillIndex, SkillEditorData.Instance.CurSkillId, _id, LCHChannelType.PosZ);
            SkillEditorData.Instance.skillsData.SkillEventChannel(SkillEditorData.Instance.CurSkillId, _id, LCHChannelType.Object, SkillEditorData.Instance.subSkillIndex);
        }
        if (GUILayout.Button("添加碰撞体", layourWidth80))
        {
            SkillEditorData.Instance.skillsData.SkillAddBoxCollider(SkillEditorData.Instance.CurSkillId, SkillEditorData.Instance.subSkillIndex);
        }

        EditorGUI.BeginDisabledGroup(null == anim);
        if (GUILayout.Button("原碰撞体", layourWidth80))
        {
            PopupWindow.Show(buttonRect, ColliderDialog.Show(anim.transform, OnColliderAdd, SkillEditorData.Instance.CurSkillId));
        }
        EditorGUI.EndDisabledGroup();

        EditorGUILayout.EndHorizontal();
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("音效", layourWidth80))
        {
            SkillEditorData.Instance.skillsData.SkillAddSound(SkillEditorData.Instance.subSkillIndex, SkillEditorData.Instance.CurSkillId);
        }


        EditorGUILayout.EndHorizontal();
        GUILayout.Label("对象列表:");

        scrollViewPos3 = GUILayout.BeginScrollView(scrollViewPos3, GUILayout.Height(120));

        {
            var rect = EditorGUILayout.BeginHorizontal();

            bool b0 = selectObjId == -1;
            if (b0)
            {
                EditorGUI.DrawRect(rect, selectColor);
            }
            if (EditorGUILayout.Toggle("", b0, layourWidth20))
            {
                selectObjId = -1;
            }

            EditorGUI.BeginDisabledGroup(true);
            GUILayout.TextField("角色", layourWidth80);
            EditorGUILayout.ObjectField(anim, typeof(Animation), false);
            GUILayout.Button("-", layourWidth30);
            EditorGUI.EndDisabledGroup();
            EditorGUILayout.EndHorizontal();
        }

        if (skill != null)
        {
            for (int i = 0; i < skill.subSkills[SkillEditorData.Instance.subSkillIndex].objs.Length; i++)
            {
                LCHObjectData obj  = skill.subSkills[SkillEditorData.Instance.subSkillIndex].objs[i];
                var           rect = EditorGUILayout.BeginHorizontal();
                bool          b0   = selectObjId == obj.id;
                if (b0)
                {
                    EditorGUI.DrawRect(rect, selectColor);
                }
                if (EditorGUILayout.Toggle("", b0, layourWidth20))
                {
                    selectObjId = obj.id;
                }
                obj.name = GUILayout.TextField(obj.name, layourWidth80);

                if (obj.type == 1)
                {
                    UpdateGameObject(obj);
                }
                else if (obj.type == 2 || obj.type == 3)
                {
                    EditorGUI.BeginDisabledGroup(true);
                    GUILayout.TextField("触发器");
                    EditorGUI.EndDisabledGroup();
                }
                else if (obj.type == 4)
                {
                    UpdateSound(obj);
                }
                if (GUILayout.Button("-", layourWidth30))
                {
                    if (selectObjId == obj.id)
                    {
                        selectObjId = -1;
                    }
                    SkillEditorData.Instance.skillsData.RemoveObject(skill.id, obj.id, SkillEditorData.Instance.subSkillIndex);
                }
                EditorGUILayout.EndHorizontal();
            }
        }
        GUILayout.EndScrollView();
        SpeceLine();
        GUILayout.Label("属性列表:");

        scrollViewPos4 = GUILayout.BeginScrollView(scrollViewPos4, GUILayout.Height(100));
        LCHObjectData selectObject = null;

        if (selectObjId > -1)
        {
            selectObject = skill.subSkills[SkillEditorData.Instance.subSkillIndex].GetObject(selectObjId);
            if (selectObject.type == 3)
            {
                var rect = EditorGUILayout.BeginHorizontal();
                //EditorGUI.BeginDisabledGroup(selectObject.type == 3);
                //selectObject.type
                GUILayout.Label("绑定对象", GUILayout.Width(80f));
                int bind0 = selectObject.propertys.GetValueInt("bind", 0);
                EditorGUI.BeginDisabledGroup(true);
                EditorGUILayout.TextField(selectObject.propertys.GetValue <string>("bind_name", ""));
                EditorGUI.EndDisabledGroup();
                EditorGUILayout.EndHorizontal();
            }
            if (selectObject.type != 4)
            {
                var rect = EditorGUILayout.BeginHorizontal();
                EditorGUI.BeginDisabledGroup(selectObject.type == 3);
                //selectObject.type
                GUILayout.Label("绑定方式", GUILayout.Width(80f));
                int bind0 = selectObject.propertys.GetValueInt("bind", 0);
                int bind  = EditorGUILayout.Popup(bind0, bindingStr, GUILayout.Width(100f));
                selectObject.propertys["bind"] = bind;
                if (bind == 2)
                {
                    selectObject.propertys["bind_name"] = EditorGUILayout.TextField(selectObject.propertys.GetValue <string>("bind_name", ""));
                    if (GUILayout.Button(".."))
                    {
                        PopupWindow.Show(rect, ChildsNameDialog.Show(OnBindNameCallBack, selectObject.propertys));
                    }
                }
                EditorGUI.EndDisabledGroup();
                EditorGUILayout.EndHorizontal();
            }
        }
        GUILayout.EndScrollView();
        SpeceLine();
        GUILayout.Label("事件属性:");
        GUILayout.BeginHorizontal();
        //1
        Dictionary <string, object> property_params = new Dictionary <string, object>();

        scrollViewPos5 = GUILayout.BeginScrollView(scrollViewPos5);
        if (skill != null)
        {
            if (null != SkillEditorWindow.selectEvent && null != SkillEditorWindow.selectEventChannel)
            {
                int objId        = SkillEditorWindow.selectEventChannel.objId;
                var _object_type = skill.subSkills[SkillEditorData.Instance.subSkillIndex].GetObjectType(objId);

                LCHChannelType _type = (LCHChannelType)SkillEditorWindow.selectEventChannel.type;
                if (_type == LCHChannelType.Event)
                {
                    GUILayout.BeginHorizontal();//2
                    PropertyHelper.DrawPropertyTips("激活状态");
                    bool eEnable = EditorGUILayout.Toggle(SkillEditorWindow.selectEvent.GetValue <bool>("enable", true));
                    SkillEditorWindow.selectEvent["enable"] = eEnable;
                    GUILayout.EndHorizontal();//2
                    string[]  sounds      = ArrayHelper.emptyStringList;
                    int[]     soundIds    = ArrayHelper.emptyIntList;
                    string [] objectNames = ArrayHelper.emptyStringList;
                    int[]     objectid    = ArrayHelper.emptyIntList;
                    if (null != SkillEditorData.Instance.skill)
                    {
                        SkillEditorData.Instance.skill.GetAllObjectList(objId, ref sounds, ref soundIds, ref objectNames, ref objectid, SkillEditorData.Instance.subSkillIndex);
                    }
                    if (eEnable)
                    {
                        property_params["sounds"]      = sounds;
                        property_params["soundIds"]    = soundIds;
                        property_params["objectNames"] = objectNames;
                        property_params["objectid"]    = objectid;
                        PropertyHelper.DrawPropertys(SkillEditorWindow.selectEvent, SkillEditorData.Instance.skillsData.GetEventTemp(), SkillEditorData.Instance.skillsData.GetEventNames(), property_params, _object_type);
                    }
                }
                else if (_type == LCHChannelType.Object)
                {
                    string [] anims = ArrayHelper.emptyStringList;

                    if (null != SkillEditorData.Instance.skill)
                    {
                        anims = SkillEditorData.Instance.skill.GetAnimList(objId, SkillEditorData.Instance.subSkillIndex);
                    }

                    property_params["anims"] = anims;
                    PropertyHelper.DrawPropertys(SkillEditorWindow.selectEvent, SkillEditorData.Instance.skillsData.GetObjecctTemp(), SkillEditorData.Instance.skillsData.GetObjectNames(), property_params, _object_type);
                }
                else if (_type == LCHChannelType.RoleState)
                {
                    string[] anims = ArrayHelper.emptyStringList;

                    if (null != SkillEditorData.Instance.skill)
                    {
                        anims = SkillEditorData.Instance.skill.GetAnimList(objId, SkillEditorData.Instance.subSkillIndex);
                    }

                    PropertyHelper.DrawPropertys(SkillEditorWindow.selectEvent, SkillEditorData.Instance.skillsData.GetRoleStateTemp(), SkillEditorData.Instance.skillsData.GetRoleStateNames(), null, _object_type);
                }
            }
        }
        GUILayout.EndScrollView();
        GUILayout.EndHorizontal();//1
    }