// //-------------------------------------------------------- 
 | 
// //   [Author]:           第二世界 
 | 
// //   [  Date ]:           Friday, September 22, 2017 
 | 
// //-------------------------------------------------------- 
 | 
// using UnityEngine; 
 | 
  
 | 
// using System.Collections.Generic; 
 | 
// using LitJson; 
 | 
  
 | 
// namespace vnxbqy.UI 
 | 
// { 
 | 
  
 | 
//     public class UI3DShowHero 
 | 
//     { 
 | 
//         int weaponId; 
 | 
//         int clothesId; 
 | 
//         int wingsId; 
 | 
//         int secondaryId; 
 | 
//         int extraSecondaryId; 
 | 
//         int job; 
 | 
  
 | 
//         GameObject weaponModel; 
 | 
//         GameObject clothesModel; 
 | 
//         GameObject wingsModel; 
 | 
//         GameObject secondaryModel; 
 | 
//         GameObject extraSecondaryModel; 
 | 
  
 | 
//         Animator wingsAnimator; 
 | 
//         Animator clothesAnimator; 
 | 
//         RuntimeAnimatorController cacheClothedAC; 
 | 
  
 | 
//         Transform showPoint; 
 | 
//         List<SFXController> godWeaponSFXList = new List<SFXController>(); 
 | 
  
 | 
//         GameObject reikiRootShowPoint = null; 
 | 
//         SFXController reikiRootEffect = null;   //强化大师特效 
 | 
//         SFXController titleRootEffect = null;   //称号全身特效 
 | 
  
 | 
//         bool isSuit = false; 
 | 
//         public GameObject Show(UI3DPlayerExhibitionData data, Transform showPoint) 
 | 
//         { 
 | 
//             this.showPoint = showPoint; 
 | 
//             this.job = data.job; 
 | 
  
 | 
//             var clothes = data.fashionClothesId > 0 ? data.fashionClothesId : data.clothesId; 
 | 
//             isSuit = data.suitLevel > 0; 
 | 
//             var weaponId = data.fashionWeaponId > 0 ? data.fashionWeaponId : data.weaponId; 
 | 
//             var wingsId = data.wingsId; 
 | 
//             var secondaryId = data.fashionSecondaryId > 0 ? data.fashionSecondaryId : data.secondaryId; 
 | 
  
 | 
//             var jobConfig = JobSetupConfig.Get(job); 
 | 
  
 | 
//             var clothesResId = 0; 
 | 
//             if (clothes == 0) 
 | 
//             { 
 | 
//                 clothesResId = jobConfig.BaseEquip[0]; 
 | 
//             } 
 | 
//             else 
 | 
//             { 
 | 
//                 var item = ItemConfig.Get(clothes); 
 | 
//                 clothesResId = item == null ? clothesResId = jobConfig.BaseEquip[0] : item.ChangeOrd; 
 | 
//             } 
 | 
//             PutOnClothes(job, clothesResId); 
 | 
  
 | 
//             var weaponResId = 0; 
 | 
//             if (weaponId == 0) 
 | 
//             { 
 | 
//                 weaponResId = jobConfig.BaseEquip[1]; 
 | 
//             } 
 | 
//             else 
 | 
//             { 
 | 
//                 var item = ItemConfig.Get(weaponId); 
 | 
//                 weaponResId = item == null ? weaponResId = jobConfig.BaseEquip[1] : item.ChangeOrd; 
 | 
//             } 
 | 
//             PutOnWeapon(job, weaponResId); 
 | 
  
 | 
//             var secondaryResId = 0; 
 | 
//             if (secondaryId == 0) 
 | 
//             { 
 | 
//                 if (data.fashionClothesId == 0) 
 | 
//                 { 
 | 
//                     if (this.job == 1) 
 | 
//                     { 
 | 
//                         secondaryResId = ModelResConfig.GetHandByClothesID(clothesId); 
 | 
//                     } 
 | 
//                     else if (this.job == 2) 
 | 
//                     { 
 | 
//                         secondaryResId = jobConfig.BaseEquip[2]; 
 | 
//                     } 
 | 
//                 } 
 | 
//             } 
 | 
//             else 
 | 
//             { 
 | 
//                 var item = ItemConfig.Get(secondaryId); 
 | 
//                 if (item != null) 
 | 
//                 { 
 | 
//                     secondaryResId = item.ChangeOrd; 
 | 
//                 } 
 | 
//             } 
 | 
  
 | 
//             if (secondaryResId != 0) 
 | 
//             { 
 | 
//                 PutOnSecondary(job, secondaryResId); 
 | 
//             } 
 | 
  
 | 
//             var extraSecondaryId = 0; 
 | 
//             if (data.job == 1) 
 | 
//             { 
 | 
//                 extraSecondaryId = ModelResConfig.GetHandByClothesID(0); 
 | 
//                 if (data.fashionClothesId > 0) 
 | 
//                 { 
 | 
//                     var _item = ItemConfig.Get(data.fashionClothesId); 
 | 
//                     if (_item != null) 
 | 
//                     { 
 | 
//                         extraSecondaryId = ModelResConfig.GetHandByClothesID(_item.ChangeOrd); 
 | 
//                     } 
 | 
//                 } 
 | 
//                 else if (data.clothesId > 0) 
 | 
//                 { 
 | 
//                     var _item = ItemConfig.Get(data.clothesId); 
 | 
//                     if (_item != null) 
 | 
//                     { 
 | 
//                         extraSecondaryId = ModelResConfig.GetHandByClothesID(_item.ChangeOrd); 
 | 
//                     } 
 | 
//                 } 
 | 
  
 | 
//                 if (secondaryResId == 0 
 | 
//                  || (data.fashionClothesId != 0 && data.fashionSecondaryId > 0) 
 | 
//                  || (data.fashionClothesId == 0 && data.fashionSecondaryId > 0)) 
 | 
//                 { 
 | 
//                     PutOnExtraSecondary(job, extraSecondaryId); 
 | 
//                 } 
 | 
//             } 
 | 
  
 | 
//             var wingsResId = 0; 
 | 
//             if (wingsId != 0) 
 | 
//             { 
 | 
//                 var item = ItemConfig.Get(wingsId); 
 | 
//                 wingsResId = item == null ? 0 : item.ChangeOrd; 
 | 
//             } 
 | 
  
 | 
//             PutOnWing(wingsResId); 
 | 
//             ShowBodyEffect(data); 
 | 
             
 | 
//             LoadClothesEffect(); 
 | 
//             return clothesModel; 
 | 
//         } 
 | 
  
 | 
//         public GameObject Show(GameObject clothesModel, int job, int weaponResId, int wingsResId, int secondaryResId, Transform showPoint) 
 | 
//         { 
 | 
//             this.showPoint = showPoint; 
 | 
//             this.job = job; 
 | 
//             this.clothesModel = clothesModel; 
 | 
//             SwitchMaterial(false); 
 | 
//             PutOnWeapon(job, weaponResId); 
 | 
//             PutOnSecondary(job, secondaryResId); 
 | 
//             PutOnWing(wingsResId); 
 | 
//             LoadClothesEffect(); 
 | 
//             return clothesModel; 
 | 
//         } 
 | 
  
 | 
//         public void Dispose() 
 | 
//         { 
 | 
//             GameObject prefab = null; 
 | 
//             GameObjectPoolManager.GameObjectPool pool = null; 
 | 
  
 | 
//             HideWeaponEffect(); 
 | 
//             HideSecondaryEffect(); 
 | 
//             HideSuitEffect(); 
 | 
//             HideReikiRootEffect(); 
 | 
//             HideTitleRootEffect(); 
 | 
  
 | 
//             if (weaponId != 0) 
 | 
//             { 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(weaponId); 
 | 
//                 if (prefab) 
 | 
//                 { 
 | 
//                     pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                     pool.Release(weaponModel); 
 | 
//                 } 
 | 
//                 weaponModel = null; 
 | 
//             } 
 | 
  
 | 
//             if (secondaryId != 0) 
 | 
//             { 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(secondaryId); 
 | 
//                 if (prefab) 
 | 
//                 { 
 | 
//                     if (secondaryModel) 
 | 
//                     { 
 | 
//                         secondaryModel.SetActive(true); 
 | 
//                     } 
 | 
//                     pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                     pool.Release(secondaryModel); 
 | 
//                 } 
 | 
//                 secondaryModel = null; 
 | 
//             } 
 | 
  
 | 
//             if (extraSecondaryId != 0) 
 | 
//             { 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(extraSecondaryId); 
 | 
//                 if (prefab) 
 | 
//                 { 
 | 
//                     if (extraSecondaryModel) 
 | 
//                     { 
 | 
//                         extraSecondaryModel.SetActive(true); 
 | 
//                     } 
 | 
//                     pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                     pool.Release(extraSecondaryModel); 
 | 
//                 } 
 | 
//                 extraSecondaryModel = null; 
 | 
//             } 
 | 
  
 | 
//             if (wingsId != 0) 
 | 
//             { 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(wingsId); 
 | 
//                 if (prefab) 
 | 
//                 { 
 | 
//                     wingsModel.transform.localScale = Vector3.one; 
 | 
//                     pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                     pool.Release(wingsModel); 
 | 
//                 } 
 | 
//                 wingsModel = null; 
 | 
//                 wingsAnimator = null; 
 | 
//             } 
 | 
  
 | 
//             if (clothesId != 0) 
 | 
//             { 
 | 
//                 if (clothesModel) 
 | 
//                 { 
 | 
//                     var smRenderer = clothesModel.GetComponentInChildren<SkinnedMeshRenderer>(); 
 | 
//                     if (smRenderer != null) 
 | 
//                     { 
 | 
//                         MaterialLoader.Release(smRenderer.material); 
 | 
//                         smRenderer.material = smRenderer.sharedMaterial = null; 
 | 
//                         smRenderer.materials = smRenderer.sharedMaterials = new Material[0]; 
 | 
//                     } 
 | 
//                 } 
 | 
  
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(clothesId, true); 
 | 
//                 if (prefab) 
 | 
//                 { 
 | 
//                     pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                     pool.Release(clothesModel); 
 | 
//                 } 
 | 
//                 clothesModel = null; 
 | 
//                 if (clothesAnimator) 
 | 
//                 { 
 | 
//                     if (cacheClothedAC) 
 | 
//                     { 
 | 
//                         clothesAnimator.runtimeAnimatorController = cacheClothedAC; 
 | 
//                         cacheClothedAC = null; 
 | 
//                     } 
 | 
//                     clothesAnimator.enabled = false; 
 | 
//                     clothesAnimator = null; 
 | 
//                 } 
 | 
//             } 
 | 
  
 | 
//             clothesModel = null; 
 | 
//             clothesId = 0; 
 | 
//             weaponId = 0; 
 | 
//             wingsId = 0; 
 | 
//             secondaryId = 0; 
 | 
//             extraSecondaryId = 0; 
 | 
//         } 
 | 
  
 | 
//         public void StandUp() 
 | 
//         { 
 | 
//             if (clothesModel != null) 
 | 
//             { 
 | 
//                 var animator = clothesModel.GetComponent<Animator>(); 
 | 
//                 if (animator) 
 | 
//                 { 
 | 
//                     animator.Play(GAStaticDefine.State_IdleHash); 
 | 
//                     animator.SetInteger(GAStaticDefine.Param_Action, GAStaticDefine.Act_Idle); 
 | 
//                 } 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//         public void SitDown() 
 | 
//         { 
 | 
//             if (clothesModel != null) 
 | 
//             { 
 | 
//                 var animator = clothesModel.GetComponent<Animator>(); 
 | 
//                 if (animator) 
 | 
//                 { 
 | 
//                     animator.SetInteger(GAStaticDefine.Param_Action, GAStaticDefine.Act_Dazuo); 
 | 
//                 } 
 | 
//             } 
 | 
  
 | 
//             if (weaponModel != null) 
 | 
//             { 
 | 
//                 GameObject prefab = InstanceResourcesLoader.LoadModelRes(weaponId, false); 
 | 
//                 if (prefab) 
 | 
//                 { 
 | 
//                     GameObjectPoolManager.Instance.ReleaseGameObject(prefab, weaponModel); 
 | 
//                 } 
 | 
//                 weaponModel = null; 
 | 
//             } 
 | 
  
 | 
//             if (job == 2) 
 | 
//             { 
 | 
//                 if (secondaryModel) 
 | 
//                 { 
 | 
//                     secondaryModel.SetActive(false); 
 | 
//                 } 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//         private void PutOnClothes(int _job, int clothesResId) 
 | 
//         { 
 | 
//             var config = JobSetupConfig.Get(_job); 
 | 
//             if (clothesId == clothesResId) 
 | 
//             { 
 | 
//                 return; 
 | 
//             } 
 | 
  
 | 
//             if (clothesId != 0) 
 | 
//             { 
 | 
//                 UnloadClothes(); 
 | 
//             } 
 | 
  
 | 
//             var _prefab = InstanceResourcesLoader.LoadModelRes(clothesResId, true); 
 | 
//             if (!_prefab) 
 | 
//             { 
 | 
//                 clothesResId = config.BaseEquip[0]; 
 | 
//             } 
 | 
  
 | 
//             LoadClothes(clothesResId); 
 | 
//             clothesId = clothesResId; 
 | 
  
 | 
//             if (clothesModel) 
 | 
//             { 
 | 
//                 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 (secondaryModel) 
 | 
//                 { 
 | 
//                     var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]); 
 | 
//                     wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one); 
 | 
//                 } 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//         private void LoadClothes(int resID) 
 | 
//         { 
 | 
//             var prefab = InstanceResourcesLoader.LoadModelRes(resID, true); 
 | 
//             if (prefab) 
 | 
//             { 
 | 
//                 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) 
 | 
//                 { 
 | 
//                     cacheClothedAC = clothesAnimator.runtimeAnimatorController; 
 | 
//                     RuntimeAnimatorController _controller = AnimatorControllerLoader.Load(AnimatorControllerLoader.controllerUISuffix, resID); 
 | 
//                     clothesAnimator.runtimeAnimatorController = _controller; 
 | 
//                     clothesAnimator.enabled = true; 
 | 
//                 } 
 | 
//                 else 
 | 
//                 { 
 | 
//                     Debug.LogErrorFormat("角色资源: {0} 没有动画控制器", resID); 
 | 
//                 } 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//         private void UnloadClothes() 
 | 
//         { 
 | 
//             if (clothesModel == null) 
 | 
//             { 
 | 
//                 return; 
 | 
//             } 
 | 
  
 | 
//             var smRenderer = clothesModel.GetComponentInChildren<SkinnedMeshRenderer>(); 
 | 
//             if (smRenderer != null) 
 | 
//             { 
 | 
//                 MaterialLoader.Release(smRenderer.material); 
 | 
//                 smRenderer.material = smRenderer.sharedMaterial = null; 
 | 
//                 smRenderer.materials = smRenderer.sharedMaterials = new Material[0]; 
 | 
//             } 
 | 
  
 | 
//             var prefab = InstanceResourcesLoader.LoadModelRes(clothesId, true); 
 | 
//             var pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//             pool.Release(clothesModel); 
 | 
//             clothesModel = null; 
 | 
//             if (clothesAnimator != null) 
 | 
//             { 
 | 
//                 if (cacheClothedAC) 
 | 
//                 { 
 | 
//                     clothesAnimator.runtimeAnimatorController = cacheClothedAC; 
 | 
//                     cacheClothedAC = null; 
 | 
//                 } 
 | 
//                 clothesAnimator.enabled = false; 
 | 
//                 clothesAnimator = null; 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//         private void PutOnWeapon(int _job, int resoureceId) 
 | 
//         { 
 | 
//             var config = JobSetupConfig.Get(_job); 
 | 
  
 | 
//             var oldWeapon = weaponId; 
 | 
//             if (oldWeapon == resoureceId) 
 | 
//             { 
 | 
//                 return; 
 | 
//             } 
 | 
  
 | 
//             GameObject prefab = null; 
 | 
//             GameObjectPoolManager.GameObjectPool pool = null; 
 | 
  
 | 
//             if (oldWeapon != 0) 
 | 
//             { 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(oldWeapon); 
 | 
//                 pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                 pool.Release(weaponModel); 
 | 
//                 weaponModel = null; 
 | 
//             } 
 | 
  
 | 
//             prefab = InstanceResourcesLoader.LoadModelRes(resoureceId); 
 | 
  
 | 
//             if (!prefab) 
 | 
//             { 
 | 
//                 resoureceId = config.BaseEquip[1]; 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(resoureceId); 
 | 
//             } 
 | 
  
 | 
//             if (prefab) 
 | 
//             { 
 | 
//                 pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                 weaponModel = pool.Request(); 
 | 
  
 | 
//                 LayerUtility.SetLayer(weaponModel, LayerUtility.Player, false); 
 | 
//                 if (clothesModel) 
 | 
//                 { 
 | 
//                     var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WeaponBindBoneName); 
 | 
//                     weaponModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one); 
 | 
//                 } 
 | 
  
 | 
//                 var _resConfig = ModelResConfig.Get(resoureceId); 
 | 
//                 ShowSecondaryEffect(weaponModel.transform, _resConfig.ResourcesName); 
 | 
//             } 
 | 
  
 | 
//             weaponId = resoureceId; 
 | 
//         } 
 | 
  
 | 
//         private void PutOnExtraSecondary(int job, int extraSecondaryId) 
 | 
//         { 
 | 
//             var oldSecondary = this.extraSecondaryId; 
 | 
//             if (oldSecondary == extraSecondaryId) 
 | 
//             { 
 | 
//                 return; 
 | 
//             } 
 | 
  
 | 
//             GameObject prefab = null; 
 | 
//             GameObjectPoolManager.GameObjectPool pool = null; 
 | 
  
 | 
//             if (oldSecondary != 0) 
 | 
//             { 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(oldSecondary); 
 | 
//                 pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                 pool.Release(extraSecondaryModel); 
 | 
//                 extraSecondaryModel = null; 
 | 
//             } 
 | 
  
 | 
//             if (extraSecondaryId != 0) 
 | 
//             { 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(extraSecondaryId); 
 | 
//                 if (!prefab) 
 | 
//                 { 
 | 
//                     var config = JobSetupConfig.Get(job); 
 | 
//                     extraSecondaryId = config.BaseEquip[2]; 
 | 
//                     prefab = InstanceResourcesLoader.LoadModelRes(extraSecondaryId); 
 | 
//                 } 
 | 
  
 | 
//                 if (prefab) 
 | 
//                 { 
 | 
//                     pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                     extraSecondaryModel = pool.Request(); 
 | 
  
 | 
//                     var parent = this.clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[this.job - 1]); 
 | 
//                     extraSecondaryModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one); 
 | 
//                 } 
 | 
//             } 
 | 
  
 | 
//             this.extraSecondaryId = extraSecondaryId; 
 | 
//         } 
 | 
  
 | 
//         private void PutOnSecondary(int _job, int secondaryResId) 
 | 
//         { 
 | 
//             var oldSecondary = secondaryId; 
 | 
//             if (oldSecondary == secondaryResId) 
 | 
//             { 
 | 
//                 return; 
 | 
//             } 
 | 
  
 | 
//             GameObject prefab = null; 
 | 
//             GameObjectPoolManager.GameObjectPool pool = null; 
 | 
  
 | 
//             if (oldSecondary != 0) 
 | 
//             { 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(oldSecondary); 
 | 
//                 pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                 pool.Release(secondaryModel); 
 | 
//                 secondaryModel = null; 
 | 
//             } 
 | 
  
 | 
//             if (secondaryResId != 0) 
 | 
//             { 
 | 
//                 var _resConfig = ModelResConfig.Get(secondaryResId); 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(secondaryResId); 
 | 
//                 if (!prefab) 
 | 
//                 { 
 | 
//                     var config = JobSetupConfig.Get(_job); 
 | 
//                     secondaryResId = config.BaseEquip[2]; 
 | 
//                     prefab = InstanceResourcesLoader.LoadModelRes(secondaryResId); 
 | 
//                 } 
 | 
  
 | 
//                 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); 
 | 
//                 } 
 | 
  
 | 
//                 ShowSecondaryEffect(secondaryModel.transform, _resConfig.ResourcesName); 
 | 
//             } 
 | 
  
 | 
//             secondaryId = secondaryResId; 
 | 
//         } 
 | 
  
 | 
//         private void PutOnWing(int resourceId) 
 | 
//         { 
 | 
//             var config = JobSetupConfig.Get(job); 
 | 
//             var oldWings = wingsId; 
 | 
//             if (resourceId == oldWings) 
 | 
//             { 
 | 
//                 return; 
 | 
//             } 
 | 
  
 | 
//             GameObject prefab = null; 
 | 
//             GameObjectPoolManager.GameObjectPool pool = null; 
 | 
  
 | 
//             if (oldWings != 0) 
 | 
//             { 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(oldWings); 
 | 
//                 pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                 pool.Release(wingsModel); 
 | 
//                 wingsModel = null; 
 | 
//             } 
 | 
  
 | 
//             if (resourceId != 0) 
 | 
//             { 
 | 
//                 prefab = InstanceResourcesLoader.LoadModelRes(resourceId); 
 | 
  
 | 
//                 if (!prefab) 
 | 
//                 { 
 | 
//                     resourceId = config.BaseEquip[3]; 
 | 
//                     prefab = InstanceResourcesLoader.LoadModelRes(resourceId); 
 | 
//                 } 
 | 
  
 | 
//                 if (prefab) 
 | 
//                 { 
 | 
//                     pool = GameObjectPoolManager.Instance.RequestPool(prefab); 
 | 
//                     wingsModel = pool.Request(); 
 | 
  
 | 
//                     wingsModel.layer = LayerUtility.Player; 
 | 
//                     SkinnedMeshRenderer _renderer = wingsModel.GetComponentInChildren<SkinnedMeshRenderer>(); 
 | 
//                     if (_renderer) 
 | 
//                     { 
 | 
//                         _renderer.gameObject.layer = LayerUtility.Player; 
 | 
//                     } 
 | 
  
 | 
//                     var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WingBindBoneName); 
 | 
//                     var modelResConfig = ModelResConfig.Get(resourceId); 
 | 
//                     wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, modelResConfig.UIScale); 
 | 
  
 | 
//                     wingsAnimator = wingsModel.GetComponent<Animator>(); 
 | 
//                     if (wingsAnimator == null) 
 | 
//                     { 
 | 
//                         Debug.LogErrorFormat("翅膀资源{0}没有动画控制器", resourceId); 
 | 
//                     } 
 | 
//                     wingsAnimator.enabled = true; 
 | 
//                     wingsAnimator.Play("UI_Idle", 0); 
 | 
//                 } 
 | 
//             } 
 | 
  
 | 
//             wingsId = resourceId; 
 | 
//         } 
 | 
  
 | 
//         private void LoadClothesEffect() 
 | 
//         { 
 | 
//             SwitchMaterial(isSuit); 
 | 
//             HideSuitEffect(); 
 | 
//             if (isSuit) 
 | 
//             { 
 | 
//                 var _modelResConfig = ModelResConfig.Get(clothesId); 
 | 
//                 if (_modelResConfig != null) 
 | 
//                 { 
 | 
//                     var _boneList = ModelResConfig.GetBoneList(_modelResConfig.ResourcesName); 
 | 
//                     var _effectList = ModelResConfig.GetEffectList(_modelResConfig.ResourcesName); 
 | 
//                     if (_boneList != null) 
 | 
//                     { 
 | 
//                         Transform _node = null; 
 | 
//                         SFXController _sfx = null; 
 | 
//                         for (int i = 0; i < _boneList.Count; ++i) 
 | 
//                         { 
 | 
//                             _node = clothesModel.transform.GetChildTransformDeeply(_boneList[i]); 
 | 
//                             if (_node) 
 | 
//                             { 
 | 
//                                 _sfx = SFXPlayUtility.Instance.PlayEffectAsync(_effectList[i], _node); 
 | 
//                                 if (_sfx) 
 | 
//                                 { 
 | 
//                                     m_SuitEffectList.Add(_sfx); 
 | 
//                                 } 
 | 
//                             } 
 | 
//                         } 
 | 
//                     } 
 | 
//                 } 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//         private List<SFXController> m_SuitEffectList = new List<SFXController>(); 
 | 
//         private List<SFXController> m_WeaponEffectList = new List<SFXController>(); 
 | 
//         private List<SFXController> m_SecondaryEffectList = new List<SFXController>(); 
 | 
  
 | 
//         private void ShowWeaponEffect(Transform parent, string modelName) 
 | 
//         { 
 | 
//             HideWeaponEffect(); 
 | 
  
 | 
//             var _boneList = ModelResConfig.GetBoneList(modelName); 
 | 
//             var _effectlist = ModelResConfig.GetEffectList(modelName); 
 | 
  
 | 
//             if (_boneList != null && _effectlist != null) 
 | 
//             { 
 | 
//                 for (int i = 0; i < _boneList.Count; ++i) 
 | 
//                 { 
 | 
//                     if (_boneList[i].Equals("null")) 
 | 
//                     { 
 | 
//                         var _ctrl = SFXPlayUtility.Instance.PlayBattleEffect(_effectlist[i], parent); 
 | 
//                         m_WeaponEffectList.Add(_ctrl); 
 | 
//                     } 
 | 
//                     else 
 | 
//                     { 
 | 
  
 | 
//                         var _ctrl = SFXPlayUtility.Instance.PlayBattleEffect(_effectlist[i], parent.GetChildTransformDeeply(_boneList[i])); 
 | 
//                         m_WeaponEffectList.Add(_ctrl); 
 | 
//                     } 
 | 
//                 } 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//         private void ShowSecondaryEffect(Transform parent, string modelName) 
 | 
//         { 
 | 
//             HideWeaponEffect(); 
 | 
  
 | 
//             var _boneList = ModelResConfig.GetBoneList(modelName); 
 | 
//             var _effectlist = ModelResConfig.GetEffectList(modelName); 
 | 
  
 | 
//             if (_boneList != null && _effectlist != null) 
 | 
//             { 
 | 
//                 for (int i = 0; i < _boneList.Count; ++i) 
 | 
//                 { 
 | 
//                     if (_boneList[i].Equals("null")) 
 | 
//                     { 
 | 
//                         var _ctrl = SFXPlayUtility.Instance.PlayBattleEffect(_effectlist[i], parent); 
 | 
//                         m_SecondaryEffectList.Add(_ctrl); 
 | 
//                     } 
 | 
//                     else 
 | 
//                     { 
 | 
  
 | 
//                         var _ctrl = SFXPlayUtility.Instance.PlayBattleEffect(_effectlist[i], parent.GetChildTransformDeeply(_boneList[i])); 
 | 
//                         m_SecondaryEffectList.Add(_ctrl); 
 | 
//                     } 
 | 
//                 } 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//         private void HideSecondaryEffect() 
 | 
//         { 
 | 
//             foreach (var _ctrl in m_SecondaryEffectList) 
 | 
//             { 
 | 
//                 SFXPlayUtility.Instance.Release(_ctrl); 
 | 
//             } 
 | 
//             m_SecondaryEffectList.Clear(); 
 | 
//         } 
 | 
  
 | 
//         private void HideWeaponEffect() 
 | 
//         { 
 | 
//             foreach (var _ctrl in m_WeaponEffectList) 
 | 
//             { 
 | 
//                 SFXPlayUtility.Instance.Release(_ctrl); 
 | 
//             } 
 | 
//             m_WeaponEffectList.Clear(); 
 | 
//         } 
 | 
  
 | 
//         private void HideSuitEffect() 
 | 
//         { 
 | 
//             foreach (var _ctrl in m_SuitEffectList) 
 | 
//             { 
 | 
//                 SFXPlayUtility.Instance.Release(_ctrl); 
 | 
//             } 
 | 
//             m_SuitEffectList.Clear(); 
 | 
//         } 
 | 
  
 | 
//         void ShowBodyEffect(UI3DPlayerExhibitionData data) 
 | 
//         { 
 | 
//             ShowReikiRootEffect(data.equipLevel, data.reikiRootEffectId); 
 | 
//             int effectID = 0; 
 | 
//             ModelCenter.Instance.GetModel<EquipModel>().equipAddEffect.TryGetValue(data.titleID, out effectID); 
 | 
//             ShowTitleBodyEffect(effectID, data.scale > 0 ? data.scale*0.5f : 0.5f); 
 | 
//         } 
 | 
  
 | 
//         private void ShowReikiRootEffect(int equipLevel,int id) 
 | 
//         { 
 | 
//             //改成强化大师特效 id为强化大师等级 
 | 
//             HideReikiRootEffect(); 
 | 
//             var config = ItemPlusMasterConfig.TryGetMasterInfo(equipLevel, id); 
 | 
//             if (id != 0 && config != null && clothesModel) 
 | 
//             { 
 | 
//                 if (reikiRootShowPoint == null && showPoint.parent != null) 
 | 
//                 { 
 | 
//                     reikiRootShowPoint = new GameObject("ReikiRootShowPoint"); 
 | 
//                     reikiRootShowPoint.transform.SetParentEx(showPoint.parent, showPoint.localPosition, showPoint.rotation, showPoint.localScale); 
 | 
//                 } 
 | 
//                 reikiRootEffect = SFXPlayUtility.Instance.Play(config.effect, reikiRootShowPoint == null ? showPoint : reikiRootShowPoint.transform); 
 | 
//                 if (reikiRootEffect != null) 
 | 
//                 { 
 | 
//                     var scale = config.uiScale/100f; 
 | 
//                     var offsetY = config.offsetY/100f; 
 | 
//                     reikiRootEffect.transform.localScale = Vector3.one * scale * 0.6f; 
 | 
//                     reikiRootEffect.transform.localPosition = reikiRootEffect.transform.localPosition.SetY(offsetY); 
 | 
//                 } 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//         private void HideReikiRootEffect() 
 | 
//         { 
 | 
//             if (reikiRootEffect != null) 
 | 
//             { 
 | 
//                 reikiRootEffect.transform.localPosition = Vector3.zero; 
 | 
//                 reikiRootEffect.transform.localScale = Vector3.zero; 
 | 
//                 SFXPlayUtility.Instance.Release(reikiRootEffect); 
 | 
//                 reikiRootEffect = null; 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
  
 | 
//         public void HideTitleRootEffect() 
 | 
//         { 
 | 
//             if (titleRootEffect != null) 
 | 
//             { 
 | 
//                 titleRootEffect.transform.localPosition = Vector3.zero; 
 | 
//                 titleRootEffect.transform.localScale = Vector3.zero; 
 | 
//                 SFXPlayUtility.Instance.Release(titleRootEffect); 
 | 
//                 titleRootEffect = null; 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
  
 | 
//         //展示称号的全身特效 
 | 
//         public void ShowTitleBodyEffect(int effectID, float scale = 1) 
 | 
//         { 
 | 
//             HideTitleRootEffect(); 
 | 
//             if (effectID == 0) return; 
 | 
//             if (clothesModel) 
 | 
//             { 
 | 
//                 if (reikiRootShowPoint == null && showPoint.parent != null) 
 | 
//                 { 
 | 
//                     reikiRootShowPoint = new GameObject("ReikiRootShowPoint"); 
 | 
//                     reikiRootShowPoint.transform.SetParentEx(showPoint.parent, showPoint.localPosition, showPoint.rotation, showPoint.localScale); 
 | 
//                 } 
 | 
//                 titleRootEffect = SFXPlayUtility.Instance.Play(effectID, reikiRootShowPoint == null ? showPoint : reikiRootShowPoint.transform); 
 | 
//                 if (titleRootEffect != null) 
 | 
//                 { 
 | 
//                     titleRootEffect.duration = 0; 
 | 
//                     titleRootEffect.transform.localScale = Vector3.one * scale; 
 | 
//                     titleRootEffect.transform.localRotation = Quaternion.Euler(0, 40, 0);//后续优化传参 
 | 
//                 } 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//         public void SwitchMaterial(bool isSuit) 
 | 
//         { 
 | 
//             if (clothesModel == null) 
 | 
//             { 
 | 
//                 return; 
 | 
//             } 
 | 
  
 | 
//             var smRenderer = clothesModel.GetComponentInChildren<SkinnedMeshRenderer>(); 
 | 
//             if (smRenderer == null) 
 | 
//             { 
 | 
//                 return; 
 | 
//             } 
 | 
  
 | 
//             MaterialLoader.Release(smRenderer.material); 
 | 
  
 | 
//             var newMat = MaterialLoader.LoadClothesMaterial(this.clothesId, true, isSuit); 
 | 
//             if (newMat != null) 
 | 
//             { 
 | 
//                 smRenderer.material = newMat; 
 | 
//             } 
 | 
//         } 
 | 
  
 | 
//     } 
 | 
  
 | 
// } 
 |