少年修仙传客户端代码仓库
client_Zxw
2018-08-29 c9caeb44144b88cefbc0c855086cb11d986d8d70
UI/Common/UI3DShowHero.cs
@@ -49,25 +49,33 @@
            if (weaponId != 0)
            {
                prefab = InstanceResourcesLoader.LoadModelRes(weaponId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                pool.Release(weaponModel);
                if (prefab)
                {
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    pool.Release(weaponModel);
                }
                weaponModel = null;
            }
            if (secondaryId != 0)
            {
                prefab = InstanceResourcesLoader.LoadModelRes(secondaryId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                pool.Release(secondaryModel);
                secondaryModel.SetActive(true);
                if (prefab)
                {
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    pool.Release(secondaryModel);
                }
                secondaryModel = null;
            }
            if (wingsId != 0)
            {
                prefab = InstanceResourcesLoader.LoadModelRes(wingsId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                pool.Release(wingsModel);
                if (prefab)
                {
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    pool.Release(wingsModel);
                }
                wingsModel = null;
                wingsAnimator = null;
            }
@@ -75,8 +83,11 @@
            if (clothesId != 0)
            {
                prefab = InstanceResourcesLoader.LoadModelRes(clothesId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                pool.Release(clothesModel);
                if (prefab)
                {
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    pool.Release(clothesModel);
                }
                clothesModel = null;
                if (clothesAnimator)
                {
@@ -102,7 +113,10 @@
            if (clothesModel != null)
            {
                var animator = clothesModel.GetComponent<Animator>();
                animator.Play(GAStaticDefine.State_IdleHash);
                if (animator)
                {
                    animator.Play(GAStaticDefine.State_IdleHash);
                }
            }
        }
@@ -111,13 +125,19 @@
            if (clothesModel != null)
            {
                var animator = clothesModel.GetComponent<Animator>();
                animator.Play(GAStaticDefine.State_SitDown);
                if (animator)
                {
                    animator.Play(GAStaticDefine.State_SitDown);
                }
            }
            if (weaponModel)
            {
                GameObject prefab = InstanceResourcesLoader.LoadModelRes(weaponId);
                GameObjectPoolManager.Instance.ReleaseGameObject(prefab, weaponModel);
                if (prefab)
                {
                    GameObjectPoolManager.Instance.ReleaseGameObject(prefab, weaponModel);
                }
                weaponModel = null;
            }
@@ -162,52 +182,57 @@
            LoadClothes(newClothes);
            clothesId = newClothes;
            if (weaponModel)
            if (clothesModel)
            {
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WeaponBindBoneName);
                weaponModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
            }
                if (weaponModel)
                {
                    var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WeaponBindBoneName);
                    weaponModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                }
            if (wingsModel)
            {
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WingBindBoneName);
                wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
            }
                if (wingsModel)
                {
                    var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WingBindBoneName);
                    wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                }
            if (secondaryModel)
            {
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]);
                wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
            }
                if (secondaryModel)
                {
                    var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]);
                    wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                }
            LoadClothesEffect(itemID, suitID);
                LoadClothesEffect(itemID, suitID);
            }
        }
        private void LoadClothes(int resID)
        {
            var prefab = InstanceResourcesLoader.LoadModelRes(resID);
            var pool = GameObjectPoolManager.Instance.RequestPool(prefab);
            clothesModel = pool.Request();
            LayerUtility.SetLayer(clothesModel, LayerUtility.Player, false);
            var skinnedMeshRenderer = clothesModel.GetComponentInChildren<SkinnedMeshRenderer>(true);
            LayerUtility.SetLayer(skinnedMeshRenderer.gameObject, LayerUtility.Player, false);
            clothesModel.SetActive(true);
            clothesModel.transform.SetParentEx(showPoint, Vector3.zero, Quaternion.identity, Vector3.one);
            clothesAnimator = clothesModel.GetComponent<Animator>();
            if (clothesAnimator == null)
            if (prefab)
            {
                DebugEx.LogErrorFormat("角色资源: {0} 没有动画控制器", resID);
            }
                var pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                clothesModel = pool.Request();
            // 动画状态机修改
            if (clothesAnimator)
            {
                cacheClothedAC = clothesAnimator.runtimeAnimatorController;
                RuntimeAnimatorController _controller = AnimatorControllerLoader.Load(AnimatorControllerLoader.controllerUISuffix, resID);
                clothesAnimator.runtimeAnimatorController = _controller;
                clothesAnimator.enabled = true;
                LayerUtility.SetLayer(clothesModel, LayerUtility.Player, false);
                var skinnedMeshRenderer = clothesModel.GetComponentInChildren<SkinnedMeshRenderer>(true);
                LayerUtility.SetLayer(skinnedMeshRenderer.gameObject, LayerUtility.Player, false);
                clothesModel.SetActive(true);
                clothesModel.transform.SetParentEx(showPoint, Vector3.zero, Quaternion.identity, Vector3.one);
                clothesAnimator = clothesModel.GetComponent<Animator>();
                // 动画状态机修改
                if (clothesAnimator)
                {
                    cacheClothedAC = clothesAnimator.runtimeAnimatorController;
                    RuntimeAnimatorController _controller = AnimatorControllerLoader.Load(AnimatorControllerLoader.controllerUISuffix, resID);
                    clothesAnimator.runtimeAnimatorController = _controller;
                    clothesAnimator.enabled = true;
                }
                else
                {
                    DebugEx.LogErrorFormat("角色资源: {0} 没有动画控制器", resID);
                }
            }
        }
@@ -274,12 +299,16 @@
                prefab = InstanceResourcesLoader.LoadModelRes(newWeapon);
            }
            pool = GameObjectPoolManager.Instance.RequestPool(prefab);
            weaponModel = pool.Request();
            if (prefab)
            {
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                weaponModel = pool.Request();
            LayerUtility.SetLayer(weaponModel, LayerUtility.Player, false);
            var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WeaponBindBoneName);
            weaponModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                LayerUtility.SetLayer(weaponModel, LayerUtility.Player, false);
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WeaponBindBoneName);
                weaponModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
            }
            weaponId = newWeapon;
        }
@@ -323,11 +352,15 @@
                    newSecondary = config.BaseEquip[2];
                    prefab = InstanceResourcesLoader.LoadModelRes(newSecondary);
                }
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                secondaryModel = pool.Request();
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]);
                secondaryModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                if (prefab)
                {
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    secondaryModel = pool.Request();
                    var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]);
                    secondaryModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                }
            }
            secondaryId = newSecondary;
@@ -371,26 +404,29 @@
                    prefab = InstanceResourcesLoader.LoadModelRes(newWings);
                }
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                wingsModel = pool.Request();
                wingsModel.layer = LayerUtility.Player;
                SkinnedMeshRenderer _renderer = wingsModel.GetComponentInChildren<SkinnedMeshRenderer>();
                if (_renderer)
                if (prefab)
                {
                    _renderer.gameObject.layer = LayerUtility.Player;
                }
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    wingsModel = pool.Request();
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WingBindBoneName);
                wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                    wingsModel.layer = LayerUtility.Player;
                    SkinnedMeshRenderer _renderer = wingsModel.GetComponentInChildren<SkinnedMeshRenderer>();
                    if (_renderer)
                    {
                        _renderer.gameObject.layer = LayerUtility.Player;
                    }
                wingsAnimator = wingsModel.GetComponent<Animator>();
                if (wingsAnimator == null)
                {
                    DebugEx.LogErrorFormat("翅膀资源{0}没有动画控制器", itemID);
                    var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WingBindBoneName);
                    wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                    wingsAnimator = wingsModel.GetComponent<Animator>();
                    if (wingsAnimator == null)
                    {
                        DebugEx.LogErrorFormat("翅膀资源{0}没有动画控制器", itemID);
                    }
                    wingsAnimator.enabled = true;
                    wingsAnimator.Play("UI_Idle", 0);
                }
                wingsAnimator.enabled = true;
                wingsAnimator.Play("UI_Idle", 0);
            }
            wingsId = newWings;