少年修仙传客户端基础资源
client_Wu Xijin
2018-10-21 6f8ed2e37f8762fb3501a671d0dca40bcd68edae
Assets/Editor/Actor/ActorEditor.cs
@@ -4,6 +4,7 @@
using UnityEditor;
using UnityEditor.Animations;
using TableConfig;
using System;
public class ActorEditor : EditorWindow
{
@@ -15,21 +16,66 @@
        _window.Show();
    }
    [MenuItem("程序/角色相关/卸载NPC动画状态机")]
    static void RemoveAnimator()
    {
        var _dict = Config.Instance.GetAllValues<NPCConfig>();
        int i = 0;
        foreach (var _model in _dict)
        {
            if (_model.NPCType != 0
             && _model.NPCType != 2
             && _model.NPCType != 3
             && _model.NPCType != 4
             && _model.NPCType != 5
             && _model.NPCType != 8
             && _model.NPCType != 9
             && _model.NPCType != 14
             && _model.NPCType != 16
             && _model.NPCType != 17
             && _model.NPCType != 18
             && _model.NPCType != 19)
            {
                continue;
            }
            if (string.IsNullOrEmpty(_model.MODE))
            {
                continue;
            }
        }
    }
    private enum BuildNpcType
    {
        Npc,
        Pet,
        Horse
    }
    private BuildNpcType m_NpcType;
    private bool m_GenerateNoExist = false;
    private bool m_GenerateAnimationClip = false;
    private bool m_GenerateController = false;
    private bool m_GeneratePrefab = false;
    private bool m_GenerateUIController = false;
    private int m_ModelResID;
    private int m_NpcID;
    private string m_ModelName;
    private string m_BuildName;
    public bool m_HighMesh;
    private NpcResourcesBuilder m_NpcResBuilder;
    private ModelResourcesBuilder m_ModelResBuilder;
    private void OnEnable()
    {
        ConfigManager.Instance.SyncLoadConfigs();
        Config.Instance.SyncLoadConfigs();
        m_NpcResBuilder = new NpcResourcesBuilder();
        m_ModelResBuilder = new ModelResourcesBuilder();
    }
@@ -40,39 +86,38 @@
        EditorGUILayout.LabelField("# 生成Npc角色资源 #");
        m_ModelName = EditorGUILayout.TextField("模型名称", m_ModelName);
        EditorGUILayout.BeginVertical();
        m_ModelName = EditorGUILayout.TextField("来源名", m_ModelName);
        m_BuildName = EditorGUILayout.TextField("生成名", m_BuildName);
        EditorGUILayout.BeginHorizontal();
        m_NpcType = (BuildNpcType)EditorGUILayout.EnumPopup("类型:", m_NpcType);
        m_HighMesh = EditorGUILayout.ToggleLeft("高模", m_HighMesh);
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.EndVertical();
        EditorGUILayout.BeginHorizontal();
        m_GenerateNoExist = GUILayout.Toggle(m_GenerateNoExist, "只生成不存在的");
        m_GeneratePrefab = GUILayout.Toggle(m_GeneratePrefab, "Prefab");
        m_GenerateAnimationClip = GUILayout.Toggle(m_GenerateAnimationClip, "Clips");
        m_GenerateController = GUILayout.Toggle(m_GenerateController, "Controller");
        m_GenerateUIController = GUILayout.Toggle(m_GenerateUIController, "UI_Controller");
        ResourcesBuilder.OnlyBuildNoExist = m_GenerateNoExist;
        ResourcesBuilder.IsBuildPrefab = m_GeneratePrefab;
        ResourcesBuilder.IsBuildAnimationClip = m_GenerateAnimationClip;
        ResourcesBuilder.IsBuildAnimatorController = m_GenerateController;
        ResourcesBuilder.IsBuildAnimatorUIController = m_GenerateUIController;
        EditorGUILayout.EndHorizontal();
        if (GUILayout.Button("单独生成", GUILayout.Height(24)))
        {
            m_NpcResBuilder.BuildNpc(m_ModelName);
            m_NpcResBuilder.BuildNpc(m_ModelName, m_BuildName, (int)m_NpcType, m_HighMesh);
        }
        if (GUILayout.Button("生成所有", GUILayout.Height(24)))
        if (GUILayout.Button("按照给定的NPC配置信息生成"))
        {
            bool _result = EditorUtility.DisplayDialog("温馨提醒", "生成所有换装资源将会耗费比较长的时间, 请记得几点, 是否是需要生成所有的资源, 如果不是, 记得可以去掉不生成的资源,是不是不需要生成已经存在的资源, 如果不需要, 记得勾选[只生成不存在的]", "确认生成", "我按错了");
            if (_result)
            {
                var _dict = ConfigManager.Instance.GetAllValues<NPCConfig>();
                foreach (var _model in _dict)
                {
                    if (string.IsNullOrEmpty(_model.MODE))
                    {
                        continue;
                    }
                    m_NpcResBuilder.BuildNpc(_model.MODE);
                }
                BuildAllUIAnimatorController();
            }
        }
@@ -84,18 +129,18 @@
        if (GUILayout.Button("单独生成", GUILayout.Height(24)))
        {
            m_ModelResBuilder.BuildModelRes(m_ModelResID);
            m_ModelResBuilder.BuildModelRes(m_ModelResID, m_HighMesh);
        }
        if (GUILayout.Button("所有翅膀", GUILayout.Height(24)))
        {
            var _dict = ConfigManager.Instance.GetAllValues<ModelResConfig>();
            var _dict = Config.Instance.GetAllValues<ModelResConfig>();
            foreach (var _item in _dict)
            {
                if (_item.Type == (int)E_ModelResType.Wing)
                {
                    m_ModelResBuilder.BuildWing(_item.ID);
                    m_ModelResBuilder.BuildWing(_item.ID, m_HighMesh);
                }
            }
        }
@@ -103,12 +148,12 @@
        if (GUILayout.Button("所有武器", GUILayout.Height(24)))
        {
            var _dict = ConfigManager.Instance.GetAllValues<ModelResConfig>();
            var _dict = Config.Instance.GetAllValues<ModelResConfig>();
            foreach (var _item in _dict)
            {
                if (_item.Type == (int)E_ModelResType.Weapon)
                {
                    m_ModelResBuilder.BuildWeapon(_item.ID);
                    m_ModelResBuilder.BuildWeapon(_item.ID, m_HighMesh);
                }
            }
        }
@@ -116,12 +161,12 @@
        if (GUILayout.Button("所有副手", GUILayout.Height(24)))
        {
            var _dict = ConfigManager.Instance.GetAllValues<ModelResConfig>();
            var _dict = Config.Instance.GetAllValues<ModelResConfig>();
            foreach (var _item in _dict)
            {
                if (_item.Type == (int)E_ModelResType.Secondary)
                {
                    m_ModelResBuilder.BuildSecondary(_item.ID);
                    m_ModelResBuilder.BuildSecondary(_item.ID, m_HighMesh);
                }
            }
        }
@@ -129,12 +174,12 @@
        if (GUILayout.Button("所有衣服", GUILayout.Height(24)))
        {
            var _dict = ConfigManager.Instance.GetAllValues<ModelResConfig>();
            var _dict = Config.Instance.GetAllValues<ModelResConfig>();
            foreach (var _item in _dict)
            {
                if (_item.Type == (int)E_ModelResType.Suit)
                {
                    m_ModelResBuilder.BuildClothes(_item.ID);
                    m_ModelResBuilder.BuildClothes(_item.ID, m_HighMesh);
                }
            }
        }
@@ -142,12 +187,12 @@
        if (GUILayout.Button("所有坐骑", GUILayout.Height(24)))
        {
            var _dict = ConfigManager.Instance.GetAllValues<ModelResConfig>();
            var _dict = Config.Instance.GetAllValues<ModelResConfig>();
            foreach (var _item in _dict)
            {
                if (_item.Type == (int)E_ModelResType.Horse)
                {
                    m_ModelResBuilder.BuildHorse(_item.ID);
                    m_ModelResBuilder.BuildHorse(_item.ID, m_HighMesh);
                }
            }
        }
@@ -157,10 +202,10 @@
            bool _result = EditorUtility.DisplayDialog("温馨提醒", "生成所有换装资源将会耗费比较长的时间, 请记得几点, 是否是需要生成所有的资源, 如果不是, 记得可以去掉不生成的资源,是不是不需要生成已经存在的资源, 如果不需要, 记得勾选[只生成不存在的]", "确认生成", "我按错了");
            if (_result)
            {
                var _dict = ConfigManager.Instance.GetAllValues<ModelResConfig>();
                var _dict = Config.Instance.GetAllValues<ModelResConfig>();
                foreach (var _item in _dict)
                {
                    m_ModelResBuilder.BuildModelRes(_item.ID);
                    m_ModelResBuilder.BuildModelRes(_item.ID, m_HighMesh);
                }
            }
        }
@@ -170,6 +215,27 @@
        if (GUILayout.Button("重命名AssetBundle"))
        {
            ReAssetBundleName();
        }
    }
    private void BuildAllUIAnimatorController()
    {
        string _configPath = EditorUtility.OpenFilePanel("选择配置文件", Application.dataPath + "/Editor/Config", "txt");
        if (!string.IsNullOrEmpty(_configPath))
        {
            string[] _modeNames = File.ReadAllLines(_configPath);
            for (int i = 0; i < _modeNames.Length; ++i)
            {
                _modeNames[i] = _modeNames[i].Trim();
                if (string.IsNullOrEmpty(_modeNames[i]))
                {
                    continue;
                }
                var _kv = _modeNames[i].Split('\t');
                m_NpcResBuilder.BuildNpc(_kv[0], _kv[1], int.Parse(_kv[2]), m_HighMesh);
            }
        }
    }
@@ -278,7 +344,7 @@
    static void ExportAnimationClips()
    {
        Object[] _selectObjects = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
        UnityEngine.Object[] _selectObjects = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.DeepAssets);
        if (_selectObjects == null || _selectObjects.Length == 0)
        {
            return;
@@ -307,7 +373,7 @@
            string _assetPath = string.Empty;
            string _newAssetPath = string.Empty;
            string _assetName = string.Empty;
            Object _clip = null;
            UnityEngine.Object _clip = null;
            int _index = 0;
            foreach (var _object in _selectObjects)
            {