少年修仙传客户端代码仓库
hch
2024-11-27 a597c62fc82a38648813f9da25b0f78a9703f6b9
0312 加载npc没有资源防范报错
1个文件已修改
104 ■■■■■ 已修改文件
UI/Common/UI3DModelFactory.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/UI3DModelFactory.cs
@@ -16,66 +16,74 @@
            return null;
        }
        var config = NPCConfig.Get(id);
        var model = GameObjectPoolManager.Instance.RequestNpcGameObject(id);
        try
        {
            var config = NPCConfig.Get(id);
            var model = GameObjectPoolManager.Instance.RequestNpcGameObject(id);
        if (!model && config.NPCType == (int)E_NpcType.Func)
        {
            model = GameObjectPoolManager.Instance.RequestDefaultFuncNpc();
        }
        if (!model)
        {
            return null;
        }
        var animator = model.GetComponent<Animator>();
        if (animator != null)
        {
            var suffix = AnimatorControllerLoader.controllerUISuffix;
            var _modeName = config.MODE;
            if (config.MODE.StartsWith("A_Zs"))
            if (!model && config.NPCType == (int)E_NpcType.Func)
            {
                _modeName = "A_Zs";
            }
            else if (config.MODE.StartsWith("A_Fs"))
            {
                _modeName = "A_Fs";
            }
            var animatorController = AnimatorControllerLoader.LoadMobController(suffix, _modeName);
            if (animatorController != null)
            {
                animator.runtimeAnimatorController = animatorController;
                model = GameObjectPoolManager.Instance.RequestDefaultFuncNpc();
            }
            var isDance = false;
            if (config.NPCType == (int)E_NpcType.Func)
            if (!model)
            {
                var clipInfos = animator.runtimeAnimatorController.animationClips;
                foreach (var item in clipInfos)
                return null;
            }
            var animator = model.GetComponent<Animator>();
            if (animator != null)
            {
                var suffix = AnimatorControllerLoader.controllerUISuffix;
                var _modeName = config.MODE;
                if (config.MODE.StartsWith("A_Zs"))
                {
                    if (item.name == "Idle2")
                    _modeName = "A_Zs";
                }
                else if (config.MODE.StartsWith("A_Fs"))
                {
                    _modeName = "A_Fs";
                }
                var animatorController = AnimatorControllerLoader.LoadMobController(suffix, _modeName);
                if (animatorController != null)
                {
                    animator.runtimeAnimatorController = animatorController;
                }
                var isDance = false;
                if (config.NPCType == (int)E_NpcType.Func)
                {
                    var clipInfos = animator.runtimeAnimatorController.animationClips;
                    foreach (var item in clipInfos)
                    {
                        isDance = true;
                        break;
                        if (item.name == "Idle2")
                        {
                            isDance = true;
                            break;
                        }
                    }
                }
                animator.enabled = true;
                if (isDance)
                {
                    animator.Play(GAStaticDefine.State_Dance);
                }
                else
                {
                    animator.SetInteger(GAStaticDefine.Param_Action, GAStaticDefine.Act_Idle);
                    animator.Play(GAStaticDefine.State_IdleHash);
                }
            }
            animator.enabled = true;
            if (isDance)
            {
                animator.Play(GAStaticDefine.State_Dance);
            }
            else
            {
                animator.SetInteger(GAStaticDefine.Param_Action, GAStaticDefine.Act_Idle);
                animator.Play(GAStaticDefine.State_IdleHash);
            }
            LayerUtility.SetLayer(model, LayerUtility.Monster, true);
            return model;
        }
        LayerUtility.SetLayer(model, LayerUtility.Monster, true);
        return model;
        catch (Exception e)
        {
            Debug.Log("LoadUINPC Error: " + e.Message);
            return null;
        }
    }
    public static void ReleaseUINPC(int id, GameObject model)