少年修仙传客户端代码仓库
client_Zxw
2018-11-13 d2dd33cc0ca421e276d50abc46688f5db83aa42b
Core/ResModule/InstanceResourcesLoader.cs
@@ -29,25 +29,25 @@
    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Fight()
    {
        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
                                                          GeneralDefine.ModeDefaultConfig[1][1]);
                                                          GeneralDefine.ModeDefaultConfig[1][1].Replace("Prefab_Race_", ""));
    }
    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Func()
    {
        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
                                                          GeneralDefine.ModeDefaultConfig[0][1]);
                                                          GeneralDefine.ModeDefaultConfig[0][1].Replace("Prefab_Race_", ""));
    }
    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Horse()
    {
        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
                                                          GeneralDefine.ModeDefaultConfig[3][1]);
                                                          GeneralDefine.ModeDefaultConfig[3][1].Replace("Prefab_Horse_", ""));
    }
    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Pet()
    {
        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
                                                          GeneralDefine.ModeDefaultConfig[2][1]);
                                                          GeneralDefine.ModeDefaultConfig[2][1].Replace("Prefab_Race_", ""));
    }
    public static GameObject LoadDefaultFightNPC()
@@ -60,6 +60,25 @@
    {
        return LoadMob(GeneralDefine.ModeDefaultConfig[0][0],
                       GeneralDefine.ModeDefaultConfig[0][1]);
    }
    public static void AsyncLoadDefaultFuncNpc(Action<bool, UnityEngine.Object> callBack)
    {
        AsyncLoadNpc(GeneralDefine.ModeDefaultConfig[0][0],
                     GeneralDefine.ModeDefaultConfig[0][1],
                     callBack);
    }
    public static void AsyncLoadDefaultFightNpc(Action<bool, UnityEngine.Object> callBack)
    {
        AsyncLoadNpc(GeneralDefine.ModeDefaultConfig[1][0],
                     GeneralDefine.ModeDefaultConfig[1][1],
                     callBack);
    }
    public static void AsyncLoadDefaultPet(Action<bool, UnityEngine.Object> callBack)
    {
        AsyncLoadNpc(GeneralDefine.ModeDefaultConfig[2][0],
                     GeneralDefine.ModeDefaultConfig[2][1],
                     callBack);
    }
    public static GameObject LoadDefaultHorse()
@@ -228,6 +247,84 @@
        return prefab;
    }
    public static void AsyncLoadModelRes(int id, Action<bool, UnityEngine.Object> callback = null)
    {
        ModelResConfig _m = Config.Instance.Get<ModelResConfig>(id);
        if (_m == null)
        {
            return;
        }
        string _name = _m.ResourcesName;
        int _index = _name.IndexOf('/');
        if (_index != -1)
        {
            _name = _name.Substring(_index + 1);
        }
        string _suffix = string.Empty;
        if (_m.Type == (int)E_ModelResType.Suit)
        {
            _suffix = raceSuffix;
        }
        else if (_m.Type == (int)E_ModelResType.Horse)
        {
            _suffix = horseSuffix;
        }
        else if (_m.Type == (int)E_ModelResType.Wing)
        {
            _suffix = wingSuffix;
        }
        else if (_m.Type == (int)E_ModelResType.Weapon)
        {
            _suffix = weaponSuffix;
        }
        else if (_m.Type == (int)E_ModelResType.Secondary)
        {
            _suffix = secondarySuffix;
        }
        else if (_m.Type == (int)E_ModelResType.Hand)
        {
            _suffix = handSuffix;
        }
        if (AssetSource.mobFromEditor)
        {
#if UNITY_EDITOR
            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
                                                        "Mob/",
                                                        _suffix + _name,
                                                        ".prefab");
            var _gameObject = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
            if (_gameObject)
            {
                if (callback != null)
                {
                    callback(true, _gameObject);
                }
            }
            else
            {
                if (callback != null)
                {
                    callback(false, null);
                }
            }
#endif
        }
        else
        {
            string _bundleName = StringUtility.Contact(ResourcesPath.MOB_FOLDER_NAME, "prefab_race_" + _name.Replace("_UI", ""));
            string _assetName = _suffix + _name;
            AssetBundleUtility.Instance.Co_LoadAsset(_bundleName, _assetName, callback);
        }
    }
    public static GameObject LoadMob(string assetBundleName, string assetName)
    {
        GameObject _gameObject = null;
@@ -301,8 +398,7 @@
        return _gameObject;
    }
    public static void LoadEffectAsync(int _id, Action<bool, UnityEngine.Object> _callBack)
    public static void LoadEffectAsync(int _id, Action<bool, UnityEngine.Object> _callBack = null)
    {
        GameObject gameObject = null;
        var config = Config.Instance.Get<EffectConfig>(_id);
@@ -334,4 +430,113 @@
            AssetBundleUtility.Instance.Co_LoadAsset(bundleName, config.fxName, _callBack);
        }
    }
    public static void AsyncLoadNpc(int npcID, Action<bool, UnityEngine.Object> callBack = null)
    {
        NPCConfig _m = Config.Instance.Get<NPCConfig>(npcID);
        if (_m == null || _m.MODE.Equals("0"))
        {
            if (callBack != null)
            {
                callBack(false, 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;
        }
        AsyncLoadNpc(_assetBundleName, _assetName, callBack);
    }
    public static void AsyncLoadNpc(string assetBundleName, string assetName, Action<bool, UnityEngine.Object> callBack = null)
    {
        if (AssetSource.mobFromEditor)
        {
#if UNITY_EDITOR
            string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
                                                        "Mob/",
                                                        assetName,
                                                        ".prefab");
            var _p = AssetDatabase.LoadAssetAtPath<GameObject>(_resourcePath);
            if (callBack != null)
            {
                callBack(true, _p);
            }
#endif
        }
        else
        {
            AssetBundleUtility.Instance.Co_LoadAsset(assetBundleName, assetName, callBack);
        }
    }
    public static void PreloadSkillEffect(int id)
    {
        var _skillInfo = SkillHelper.Instance.Get(id);
        // 技能特效预加载
        if (_skillInfo.config.EffectName > 0)
        {
            InstanceResourcesLoader.LoadEffectAsync(_skillInfo.config.EffectName);
        }
        if (_skillInfo.config.BuffEffectID > 0)
        {
            InstanceResourcesLoader.LoadEffectAsync(_skillInfo.config.EffectName);
        }
        var _soSkill = _skillInfo.soFile;
        if (_soSkill != null)
        {
            for (int i = 0; i < _soSkill.animationEventList.Count; ++i)
            {
                if (_soSkill.animationEventList[i].frameEventType == E_FrameEventType.OnPlayEffect)
                {
                    if (_soSkill.animationEventList[i].intParam > 0)
                    {
                        InstanceResourcesLoader.LoadEffectAsync(_soSkill.animationEventList[i].intParam);
                    }
                }
                else if (_soSkill.animationEventList[i].frameEventType == E_FrameEventType.OnSkillEvent)
                {
                    var _param = _soSkill.animationEventList[i].intParam;
                    var _type = SoSkill.GetAttactType(_param);
                    var _id = SoSkill.GetFrameEventId(_param);
                    if (_type == SoSkill.E_AttackType.Sweep)
                    {
                        var _config = ScriptableObjectLoader.LoadSoSweepHit(_id);
                        if (_config.hitEffectId > 0)
                        {
                            InstanceResourcesLoader.LoadEffectAsync(_config.hitEffectId);
                        }
                    }
                    else if (_type == SoSkill.E_AttackType.FlyObject)
                    {
                        var _config = ScriptableObjectLoader.LoadSoFlyObject(_id);
                        if (_config.hitEffectId > 0)
                        {
                            InstanceResourcesLoader.LoadEffectAsync(_config.hitEffectId);
                        }
                        if (_config.ammoEffectId > 0)
                        {
                            InstanceResourcesLoader.LoadEffectAsync(_config.hitEffectId);
                        }
                    }
                }
            }
        }
    }
}