public void InstantiateCharacter(IDictionary partitions) { if (m_MoveSetPrefab != null) { if (m_CharacterInstance == null) { m_CharacterInstance = GameObject.Instantiate(m_MoveSetPrefab, transform.position, transform.rotation) as GameObject; m_CharacterInstance.name = m_MoveSetPrefab.name; // OnTimerUpInitCharacter(0, partitions); // EB.Debug.LogObjectMgrAsset("<color=#ff0000>克隆CharacterVariant变体身上记录的预置体</color>同时身上的部件进行初始化,<color=#00ff00>{0}</color>", m_MoveSetPrefab.name); } else { EB.Debug.LogPSPoolAsset(string.Format("<color=#00ff00>已经存在这个角色变体<color=#000000>{0}</color>,开启协程重新注册一次身上的所有特效</color>", this.name)); //需要重新将特效列表~注册进入特效缓存池 FXLib fxLib = m_CharacterInstance.GetComponent <FXLib>(); if (fxLib != null) { StartCoroutine(fxLib.TryRegisterAll()); } else { EB.Debug.LogError("为什么~模型对象身上没有这个FXLib特效组件了?"); } m_CharacterInstance.transform.SetParent(transform.parent); m_CharacterInstance.CustomSetActive(true); AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>(); if (avatar != null) { avatar.SyncLoad = SyncLoad; int partitionCount = m_Partitions.Count; for (int i = 0; i < partitionCount; i++) { if (partitions != null && partitions.Contains(m_Partitions[i].Name)) { string assetname = partitions[m_Partitions[i].Name].ToString(); avatar.LoadEquipment(m_Partitions[i].Name, assetname); if (IsPlayer) { PartitionObject.PlayerPartitions.Add(assetname); } } } } } InitFX(m_MoveSetPrefab.name); } }
/// <summary> /// Muniuma_Model Muniuma+"_Model_" Muniuma 取自Muniuma-Variant /// </summary> /// <param name="equipmentType"></param> /// <param name="inventoryDataID"></param> protected void UpdateEquipment(string equipmentType, string ecomomy_id) { string equipmentAssetName; //卸下逻辑 if (string.IsNullOrEmpty(ecomomy_id)) { equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType); } else { //穿上逻辑 if (string.IsNullOrEmpty(ecomomy_id)) { equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType); } else { string raceModel = PlayerEquipmentDataLookup.GetModeAtributeName(userid.ToString()); if (string.IsNullOrEmpty(raceModel)) { equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType); } else { //string equipmentName = EconemyTemplateManager.GetPartitionName(raceModel, ecomomy_id); TODOX string equipmentName = string.Empty; if (string.IsNullOrEmpty(equipmentName)) { equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType); } else { equipmentAssetName = equipmentName; } } } } //bool foundAsset = false; string nexteqpname = ecomomy_id; string preeqpname = null; if (preEquipmentDic.ContainsKey(equipmentType)) { preeqpname = preEquipmentDic[equipmentType]; } OnEquipmentChanged(equipmentType, preeqpname, nexteqpname); AvatarComponent avatar = mDL.transform.GetComponent <AvatarComponent>(); if (avatar != null) { avatar.LoadEquipment(equipmentType, equipmentAssetName /*, inventoryDataID*/); } long uid = 0; DataLookupsCache.Instance.SearchDataByID <long>("user.uid", out uid); //LoginManager.Instance.LocalUserId.Value if (userid == uid && !PerformanceManager.Instance.CurrentEnvironmentInfo.slowDevice) { GameEngine.Instance.SetHideColorTarget(mDL.gameObject); } }
/// <summary> /// 实例化角色.将根据身上记录的部件数据组装 /// </summary> public void InstantiateCharacter() { if (m_MoveSetPrefab != null) { if (m_CharacterInstance == null) { // EB.Debug.LogObjectMgrAsset("<color=#ff0000>克隆CharacterVariant变体身上记录的预置体</color>同时身上的部件进行初始化,<color=#00ff00>{0}</color>", m_MoveSetPrefab.name); m_CharacterInstance = GameObject.Instantiate(m_MoveSetPrefab, transform.position, transform.rotation) as GameObject; m_CharacterInstance.name = m_MoveSetPrefab.name; AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>(); if (avatar == null) { avatar = m_CharacterInstance.AddComponent <AvatarComponent>(); int partitionCount = m_Partitions.Count; for (int i = 0; i < partitionCount; i++) { avatar.AddPartition(m_Partitions[i].Name, m_Partitions[i].AssetName); if (IsPlayer) { PartitionObject.PlayerPartitions.Add(m_Partitions[i].AssetName); } } } avatar.PreviewTransformName = string.IsNullOrEmpty(PreviewTransform) ? DefaultPreviewTransform : PreviewTransform; avatar.RootBoneTransformName = string.IsNullOrEmpty(RootBoneTransform) ? DefaultRootBoneTransform : RootBoneTransform; avatar.SyncLoad = SyncLoad; avatar.InitAvatar(); m_CharacterInstance.transform.SetParent(transform.parent); } else { // EB.Debug.LogObjectMgrAsset("<color=#00ffff>已经_克隆过这个预置体</color>:<color=#00ff00>{0}</color>,将其设置可见", m_MoveSetPrefab.name); m_CharacterInstance.transform.SetParent(transform.parent); m_CharacterInstance.CustomSetActive(true); AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>(); if (avatar != null) { avatar.SyncLoad = SyncLoad; int partitionCount = m_Partitions.Count; for (int i = 0; i < partitionCount; i++) { avatar.LoadEquipment(m_Partitions[i].Name, m_Partitions[i].AssetName); if (IsPlayer) { PartitionObject.PlayerPartitions.Add(m_Partitions[i].AssetName); } } } } InitFX(m_MoveSetPrefab.name); } else { EB.Debug.LogError("[" + Time.frameCount + "]为什么角色变体没有相应的预置体呢?"); } //TimerManager.instance.AddLateUpdateTimer(70, 1, OnTimerUp); }
/* * protected void UpdateEquipmentColor(string equipmentType, int equipmentColorIndex) * { * CombinedMesh avatar = GetComponent<CombinedMesh>(); * if(avatar != null) * { * avatar.UpdateEquipmentColor(equipmentType, equipmentColorIndex); * } * } */ protected void UpdateEquipment(string equipmentType, string inventoryDataID) { string equipmentAssetName = !string.IsNullOrEmpty(inventoryDataID) ? GetLookupData <string>(inventoryDataID + ".economy_id") + "-prefab" : "MaleWarrior_Default" + equipmentType; //bool foundAsset = false; string nexteqpname = inventoryDataID; string preeqpname = null; if (preEquipmentDic.ContainsKey(equipmentType)) { preeqpname = preEquipmentDic[equipmentType]; } OnEquipmentChanged(equipmentType, preeqpname, nexteqpname); AvatarComponent avatar = GetComponent <AvatarComponent>(); if (avatar != null) { avatar.LoadEquipment(equipmentType, equipmentAssetName /*, inventoryDataID*/); } /* * Combatant c = GetComponent<Combatant>(); * if (c != null) { * if (c.Equipment != null) { * for(int i = 0; i < c.Equipment.Length; i++) * { * if(c.Equipment[i].name == equipmentAssetName) * { * foundAsset = true; * * c.Equipment[i].SetActive(true); * * CombinedMesh avatar = GetComponent<CombinedMesh>(); * * avatar.SetToCombineGameObjectByRowName(equipmentType, c.Equipment[i], equipmentDataID); * OnEquipmentChanged(equipmentType,preeqpname,nexteqpname); * * c.Equipment[i].SetActive(false); * } * } * } * } * System.Action<string, GameObject, bool> onAssetLoaded = delegate(string arg1, GameObject arg2, bool arg3) { * if(!arg3) * { * EB.Debug.LogError("Failed to load assset: " + arg1); * return; * } * CombinedMesh avatar = GetComponent<CombinedMesh>(); * avatar.SetToCombineGameObjectByRowName(equipmentType, arg2, equipmentDataID); * OnEquipmentChanged(equipmentType,preeqpname,nexteqpname); * Destroy(arg2); * Resources.UnloadUnusedAssets(); // slow * }; * * if (!foundAsset) { * GM.AssetManager.GetAsset<GameObject> (equipmentAssetName, onAssetLoaded, GameEngine.Instance.gameObject); * } */ }