From 570b476fc4c8140637e4919b7b6f94d27e8d2a44 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期五, 19 十月 2018 11:46:22 +0800
Subject: [PATCH] 2181 【主干】【1.1.0】潜力加点不消失

---
 Core/ResModule/InstanceResourcesLoader.cs |  643 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 342 insertions(+), 301 deletions(-)

diff --git a/Core/ResModule/InstanceResourcesLoader.cs b/Core/ResModule/InstanceResourcesLoader.cs
index 6ae21a1..4b5ecb5 100644
--- a/Core/ResModule/InstanceResourcesLoader.cs
+++ b/Core/ResModule/InstanceResourcesLoader.cs
@@ -1,301 +1,342 @@
-锘縰sing UnityEngine;
-using TableConfig;
-using System;
-#if UNITY_EDITOR
-using UnityEditor;
-#endif
-
-public class InstanceResourcesLoader
-{
-    public static readonly string raceSuffix = "Prefab_Race_";
-    public static readonly string horseSuffix = "Prefab_Horse_";
-    public static readonly string weaponSuffix = "Prefab_Weapon_";
-    public static readonly string secondarySuffix = "Prefab_Secondary_";
-    public static readonly string wingSuffix = "Prefab_Wing_";
-
-    public static GameObject LoadNpc(int id)
-    {
-        NPCConfig _m = ConfigManager.Instance.GetTemplate<NPCConfig>(id);
-
-        if (_m == null || string.IsNullOrEmpty(_m.MODE) || _m.MODE.Equals("0"))
-        {
-            return null;
-        }
-
-        return LoadModelPrefab(raceSuffix, _m.MODE);
-    }
-
-    public static GameObject LoadDefaultFightNPC()
-    {
-        return LoadMob(GeneralConfig.Instance.ModeDefaultConfig[1][0],
-                       GeneralConfig.Instance.ModeDefaultConfig[1][1]);
-    }
-
-    public static GameObject LoadDefaultFuncNPC()
-    {
-        return LoadMob(GeneralConfig.Instance.ModeDefaultConfig[0][0],
-                       GeneralConfig.Instance.ModeDefaultConfig[0][1]);
-    }
-
-    public static GameObject LoadDefaultHorse()
-    {
-        return LoadMob(GeneralConfig.Instance.ModeDefaultConfig[3][0],
-                       GeneralConfig.Instance.ModeDefaultConfig[3][1]);
-    }
-
-    public static GameObject LoadDefaultPet()
-    {
-        return LoadMob(GeneralConfig.Instance.ModeDefaultConfig[2][0],
-                       GeneralConfig.Instance.ModeDefaultConfig[2][1]);
-    }
-
-    public static GameObject LoadNpcPrefab(int npcID)
-    {
-        NPCConfig _m = ConfigManager.Instance.GetTemplate<NPCConfig>(npcID);
-
-        if (_m == null || _m.MODE.Equals("0"))
-        {
-            return null;
-        }
-
-        string _assetName;
-        string _assetBundleName;
-
-        if (GAMgr.Instance.s_NpcID2Assetname.TryGetValue(npcID, out _assetName))
-        {
-            _assetBundleName = GAMgr.Instance.s_NpcID2BundleName[npcID];
-        }
-        else
-        {
-            _assetName = StringUtility.Contact(raceSuffix, _m.MODE);
-            _assetBundleName = StringUtility.Contact(ResourcesPath.MOB_FOLDER_NAME, _assetName);
-            GAMgr.Instance.s_NpcID2Assetname[npcID] = _assetName;
-            GAMgr.Instance.s_NpcID2BundleName[npcID] = _assetBundleName;
-        }
-
-        return LoadMob(_assetBundleName, _assetName);
-    }
-
-    public static GameObject LoadModelRes(int id)
-    {
-
-        ModelResConfig _m = ConfigManager.Instance.GetTemplate<ModelResConfig>(id);
-
-        if (_m == null)
-        {
-            return null;
-        }
-
-        string _name = _m.ResourcesName;
-        int _index = _name.IndexOf('/');
-        if (_index != -1)
-        {
-            _name = _name.Substring(_index + 1);
-        }
-
-        if (_m.Type == (int)E_ModelResType.Suit)
-        {
-            return LoadModelPrefab(raceSuffix, _name);
-        }
-        else if (_m.Type == (int)E_ModelResType.Horse)
-        {
-            return LoadModelPrefab(horseSuffix, _name);
-        }
-        else if (_m.Type == (int)E_ModelResType.Wing)
-        {
-            return LoadModelPrefab(wingSuffix, _name);
-        }
-        else if (_m.Type == (int)E_ModelResType.Weapon)
-        {
-            return LoadModelPrefab(weaponSuffix, _name);
-        }
-        else if (_m.Type == (int)E_ModelResType.Secondary)
-        {
-            return LoadModelPrefab(secondarySuffix, _name);
-        }
-        return null;
-    }
-
-    public static void LoadCreateRole(int job, Action<bool, UnityEngine.Object> _callBack)
-    {
-        string _name = "Zs";
-        switch (job)
-        {
-            case 1:
-                _name = "Zs";
-                break;
-            case 2:
-                _name = "Fs";
-                break;
-            case 3:
-                _name = "Zs";
-                break;
-            case 4:
-                _name = "Zs";
-                break;
-        }
-
-        if (AssetSource.mobFromEditor)
-        {
-#if UNITY_EDITOR
-            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
-                                                        "Mob/CreateRole/",
-                                                        _name,
-                                                        ".prefab");
-
-            var gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
-
-            if (_callBack != null)
-            {
-                _callBack(true, gameObject);
-            }
-#endif
-        }
-        else
-        {
-            var assetInfo = new AssetInfo("mob/createrole", _name);
-            AssetBundleUtility.Instance.Co_LoadAsset(assetInfo, _callBack);
-        }
-    }
-
-    private static GameObject LoadModelPrefab(string _suffix, string name)
-    {
-        GameObject _gameObject = null;
-        if (AssetSource.mobFromEditor)
-        {
-#if UNITY_EDITOR
-            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
-                                                        "Mob/",
-                                                        _suffix + name,
-                                                        ".prefab");
-
-            _gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
-#endif
-        }
-        else
-        {
-            string _bundleName = StringUtility.Contact(ResourcesPath.MOB_FOLDER_NAME, "prefab_race_" + name);
-            string _assetName = _suffix + name;
-            AssetInfo _assetInfo = new AssetInfo(_bundleName, _assetName);
-            _gameObject = AssetBundleUtility.Instance.Sync_LoadAsset(_assetInfo) as GameObject;
-        }
-
-        if (_gameObject == null)
-        {
-            DesignDebug.LogErrorFormat("InstanceResourcesLoader.LoadModel() => 鍔犺浇涓嶅埌璧勬簮: {0} ", name);
-        }
-
-        return _gameObject;
-    }
-
-    public static GameObject LoadMob(string assetBundleName, string assetName)
-    {
-        GameObject _gameObject = null;
-        if (AssetSource.mobFromEditor)
-        {
-#if UNITY_EDITOR
-            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
-                                                        "Mob/",
-                                                        assetName,
-                                                        ".prefab");
-
-            _gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
-#endif
-        }
-        else
-        {
-            _gameObject = AssetBundleUtility.Instance.Sync_LoadAsset(assetBundleName, assetName) as GameObject;
-        }
-
-        if (_gameObject == null)
-        {
-            DesignDebug.LogErrorFormat("InstanceResourcesLoader.LoadModel() => 鍔犺浇涓嶅埌璧勬簮: {0}/{1} ", assetBundleName, assetName);
-        }
-
-        return _gameObject;
-    }
-
-    public static void UnloadAsset(string bundleName, string assetName)
-    {
-        if (!AssetSource.mobFromEditor)
-        {
-            AssetBundleUtility.Instance.UnloadAsset(bundleName, assetName);
-            AssetBundleUtility.Instance.UnloadAssetBundle(bundleName, true, false);
-        }
-    }
-
-    public static GameObject LoadEffect(int id)
-    {
-        GameObject _gameObject = null;
-
-        EffectConfig _effectModel = ConfigManager.Instance.GetTemplate<EffectConfig>(id);
-
-        if (_effectModel == null)
-        {
-            return null;
-        }
-
-        if (AssetSource.effectFromEditor)
-        {
-#if UNITY_EDITOR
-            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
-                                                    "Effect/",
-                                                    _effectModel.packageName,
-                                                    "/",
-                                                    _effectModel.fxName,
-                                                    ".prefab");
-            _gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
-#endif
-        }
-        else
-        {
-            string _bundleName = StringUtility.Contact(ResourcesPath.EFFECT_Folder_Name, _effectModel.packageName);
-            AssetInfo _assetInfo = new AssetInfo(_bundleName, _effectModel.fxName);
-            _gameObject = AssetBundleUtility.Instance.Sync_LoadAsset(_assetInfo) as GameObject;
-        }
-
-        if (_gameObject == null)
-        {
-            DesignDebug.LogErrorFormat("InstanceResourcesLoader.LoadSkillEffect() => 鍔犺浇涓嶅埌璧勬簮: {0}", _effectModel.fxName);
-        }
-
-        return _gameObject;
-    }
-
-
-    public static void LoadEffectAsync(int _id, Action<bool, UnityEngine.Object> _callBack)
-    {
-        GameObject gameObject = null;
-        var config = ConfigManager.Instance.GetTemplate<EffectConfig>(_id);
-        if (config == null)
-        {
-            return;
-        }
-
-        if (AssetSource.effectFromEditor)
-        {
-#if UNITY_EDITOR
-            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
-                                                    "Effect/",
-                                                    config.packageName,
-                                                    "/",
-                                                    config.fxName,
-                                                    ".prefab");
-            gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
-
-            if (_callBack != null)
-            {
-                _callBack(gameObject != null, gameObject);
-            }
-#endif
-        }
-        else
-        {
-            var bundleName = StringUtility.Contact(ResourcesPath.EFFECT_Folder_Name, config.packageName);
-            var assetInfo = new AssetInfo(bundleName, config.fxName);
-            AssetBundleUtility.Instance.Co_LoadAsset(assetInfo, _callBack);
-        }
-
-    }
-
-}
+锘縰sing UnityEngine;
+using TableConfig;
+using System;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+public class InstanceResourcesLoader
+{
+    public static readonly string raceSuffix = "Prefab_Race_";
+    public static readonly string horseSuffix = "Prefab_Horse_";
+    public static readonly string weaponSuffix = "Prefab_Weapon_";
+    public static readonly string secondarySuffix = "Prefab_Secondary_";
+    public static readonly string handSuffix = "Prefab_Hand_";
+    public static readonly string wingSuffix = "Prefab_Wing_";
+
+    public static GameObject LoadNpc(int id)
+    {
+        NPCConfig _m = Config.Instance.Get<NPCConfig>(id);
+
+        if (_m == null || string.IsNullOrEmpty(_m.MODE) || _m.MODE.Equals("0"))
+        {
+            return null;
+        }
+
+        return LoadModelPrefab(raceSuffix, _m.MODE);
+    }
+
+    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Fight()
+    {
+        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
+                                                          GeneralDefine.ModeDefaultConfig[1][1]);
+    }
+
+    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Func()
+    {
+        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
+                                                          GeneralDefine.ModeDefaultConfig[0][1]);
+    }
+
+    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Horse()
+    {
+        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
+                                                          GeneralDefine.ModeDefaultConfig[3][1]);
+    }
+
+    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Pet()
+    {
+        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
+                                                          GeneralDefine.ModeDefaultConfig[2][1]);
+    }
+
+    public static GameObject LoadDefaultFightNPC()
+    {
+        return LoadMob(GeneralDefine.ModeDefaultConfig[1][0],
+                       GeneralDefine.ModeDefaultConfig[1][1]);
+    }
+
+    public static GameObject LoadDefaultFuncNPC()
+    {
+        return LoadMob(GeneralDefine.ModeDefaultConfig[0][0],
+                       GeneralDefine.ModeDefaultConfig[0][1]);
+    }
+
+    public static GameObject LoadDefaultHorse()
+    {
+        return LoadMob(GeneralDefine.ModeDefaultConfig[3][0],
+                       GeneralDefine.ModeDefaultConfig[3][1]);
+    }
+
+    public static GameObject LoadDefaultPet()
+    {
+        return LoadMob(GeneralDefine.ModeDefaultConfig[2][0],
+                       GeneralDefine.ModeDefaultConfig[2][1]);
+    }
+
+    public static GameObject LoadNpcPrefab(int npcID)
+    {
+        NPCConfig _m = Config.Instance.Get<NPCConfig>(npcID);
+
+        if (_m == null || _m.MODE.Equals("0"))
+        {
+            return null;
+        }
+
+        string _assetName;
+        string _assetBundleName;
+
+        if (GAMgr.Instance.s_NpcID2Assetname.TryGetValue(npcID, out _assetName))
+        {
+            _assetBundleName = GAMgr.Instance.s_NpcID2BundleName[npcID];
+        }
+        else
+        {
+            _assetName = StringUtility.Contact(raceSuffix, _m.MODE);
+            _assetBundleName = StringUtility.Contact(ResourcesPath.MOB_FOLDER_NAME, _assetName);
+            GAMgr.Instance.s_NpcID2Assetname[npcID] = _assetName;
+            GAMgr.Instance.s_NpcID2BundleName[npcID] = _assetBundleName;
+        }
+
+        return LoadMob(_assetBundleName, _assetName);
+    }
+
+    public static GameObject LoadModelRes(int id, bool _ui = false)
+    {
+
+        ModelResConfig _m = Config.Instance.Get<ModelResConfig>(id);
+
+        if (_m == null)
+        {
+            return null;
+        }
+
+        string _name = _m.ResourcesName;
+        int _index = _name.IndexOf('/');
+        if (_index != -1)
+        {
+            _name = _name.Substring(_index + 1);
+        }
+
+        if (_m.Type == (int)E_ModelResType.Suit)
+        {
+            return LoadModelPrefab(raceSuffix, _name, _ui);
+        }
+        else if (_m.Type == (int)E_ModelResType.Horse)
+        {
+            return LoadModelPrefab(horseSuffix, _name, _ui);
+        }
+        else if (_m.Type == (int)E_ModelResType.Wing)
+        {
+            return LoadModelPrefab(wingSuffix, _name, _ui);
+        }
+        else if (_m.Type == (int)E_ModelResType.Weapon)
+        {
+            return LoadModelPrefab(weaponSuffix, _name, _ui);
+        }
+        else if (_m.Type == (int)E_ModelResType.Secondary)
+        {
+            return LoadModelPrefab(secondarySuffix, _name, _ui);
+        }
+        else if (_m.Type == (int)E_ModelResType.Hand)
+        {
+            return LoadModelPrefab(handSuffix, _name, _ui);
+        }
+        return null;
+    }
+
+
+    public static void LoadCreateRole(int job, Action<bool, UnityEngine.Object> _callBack)
+    {
+        string _name = "Zs";
+        switch (job)
+        {
+            case 1:
+                _name = "Zs";
+                break;
+            case 2:
+                _name = "Fs";
+                break;
+            case 3:
+                _name = "Zs";
+                break;
+            case 4:
+                _name = "Zs";
+                break;
+        }
+
+        if (AssetSource.mobFromEditor)
+        {
+#if UNITY_EDITOR
+            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
+                                                        "Mob/CreateRole/",
+                                                        _name,
+                                                        ".prefab");
+
+            var gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
+
+            if (_callBack != null)
+            {
+                _callBack(true, gameObject);
+            }
+#endif
+        }
+        else
+        {
+            var assetInfo = new AssetInfo("mob/createrole", _name);
+            AssetBundleUtility.Instance.Co_LoadAsset(assetInfo, _callBack);
+        }
+    }
+
+    private static GameObject LoadModelPrefab(string _suffix, string name)
+    {
+        GameObject _gameObject = null;
+        if (AssetSource.mobFromEditor)
+        {
+#if UNITY_EDITOR
+            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
+                                                        "Mob/",
+                                                        _suffix + name,
+                                                        ".prefab");
+
+            _gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
+#endif
+        }
+        else
+        {
+            string _bundleName = StringUtility.Contact(ResourcesPath.MOB_FOLDER_NAME, "prefab_race_" + name.Replace("_UI", ""));
+            string _assetName = _suffix + name;
+            AssetInfo _assetInfo = new AssetInfo(_bundleName, _assetName);
+            _gameObject = AssetBundleUtility.Instance.Sync_LoadAsset(_assetInfo) as GameObject;
+        }
+
+        if (_gameObject == null)
+        {
+            DebugEx.LogErrorFormat("InstanceResourcesLoader.LoadModel() => 鍔犺浇涓嶅埌璧勬簮: {0} ", name);
+        }
+
+        return _gameObject;
+    }
+
+    private static GameObject LoadModelPrefab(string _suffix, string name, bool _ui)
+    {
+        var prefab = LoadModelPrefab(_suffix, _ui ? name + "_UI" : name);
+        if (prefab == null)
+        {
+            prefab = LoadModelPrefab(_suffix, name);
+        }
+
+        return prefab;
+    }
+
+    public static GameObject LoadMob(string assetBundleName, string assetName)
+    {
+        GameObject _gameObject = null;
+        if (AssetSource.mobFromEditor)
+        {
+#if UNITY_EDITOR
+            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
+                                                        "Mob/",
+                                                        assetName,
+                                                        ".prefab");
+
+            _gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
+#endif
+        }
+        else
+        {
+            _gameObject = AssetBundleUtility.Instance.Sync_LoadAsset(assetBundleName, assetName) as GameObject;
+        }
+
+        if (_gameObject == null)
+        {
+            DebugEx.LogErrorFormat("InstanceResourcesLoader.LoadModel() => 鍔犺浇涓嶅埌璧勬簮: {0}/{1} ", assetBundleName, assetName);
+        }
+
+        return _gameObject;
+    }
+
+    public static void UnloadAsset(string bundleName, string assetName)
+    {
+        if (!AssetSource.mobFromEditor)
+        {
+            AssetBundleUtility.Instance.UnloadAsset(bundleName, assetName);
+            AssetBundleUtility.Instance.UnloadAssetBundle(bundleName, true, false);
+        }
+    }
+
+    public static GameObject LoadEffect(int id)
+    {
+        GameObject _gameObject = null;
+
+        EffectConfig _effectModel = Config.Instance.Get<EffectConfig>(id);
+
+        if (_effectModel == null)
+        {
+            return null;
+        }
+
+        if (AssetSource.effectFromEditor)
+        {
+#if UNITY_EDITOR
+            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
+                                                    "Effect/",
+                                                    _effectModel.packageName,
+                                                    "/",
+                                                    _effectModel.fxName,
+                                                    ".prefab");
+            _gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
+#endif
+        }
+        else
+        {
+            string _bundleName = StringUtility.Contact(ResourcesPath.EFFECT_Folder_Name, _effectModel.packageName);
+            AssetInfo _assetInfo = new AssetInfo(_bundleName, _effectModel.fxName);
+            _gameObject = AssetBundleUtility.Instance.Sync_LoadAsset(_assetInfo) as GameObject;
+        }
+
+        if (_gameObject == null)
+        {
+            DebugEx.LogErrorFormat("InstanceResourcesLoader.LoadSkillEffect() => 鍔犺浇涓嶅埌璧勬簮: {0}", _effectModel.fxName);
+        }
+
+        return _gameObject;
+    }
+
+
+    public static void LoadEffectAsync(int _id, Action<bool, UnityEngine.Object> _callBack)
+    {
+        GameObject gameObject = null;
+        var config = Config.Instance.Get<EffectConfig>(_id);
+        if (config == null)
+        {
+            return;
+        }
+
+        if (AssetSource.effectFromEditor)
+        {
+#if UNITY_EDITOR
+            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
+                                                    "Effect/",
+                                                    config.packageName,
+                                                    "/",
+                                                    config.fxName,
+                                                    ".prefab");
+            gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
+
+            if (_callBack != null)
+            {
+                _callBack(gameObject != null, gameObject);
+            }
+#endif
+        }
+        else
+        {
+            var bundleName = StringUtility.Contact(ResourcesPath.EFFECT_Folder_Name, config.packageName);
+            var assetInfo = new AssetInfo(bundleName, config.fxName);
+            AssetBundleUtility.Instance.Co_LoadAsset(assetInfo, _callBack);
+        }
+
+    }
+
+}

--
Gitblit v1.8.0