// 给人物换装 public void ChangePart(string part, string model, EquipModelViewRecord record, bool sync) { SetPartModel(part, model); // 如果还没有加载完基础模型,则等待 if (_body == null || _loading > 0) { _avatarLoadQueue.Enqueue(new KeyValuePair <string, WaitingResource>(part, new WaitingResource { ModelPath = model, ModelViewRecord = record })); return; } //AvatarData adata = DataMgr.Instance.GetAvatarData(avatarId); _loading++; ComplexObjectPool.NewObject(model, obj => { _loading--; if (GetPartModel(part) != model) { ComplexObjectPool.Release(obj); TryContinue(); return; } if (null != obj) { ChangePart(obj, part, record, sync); } TryContinue(); }, null, null, sync); }
private void PlaySkillEffect(IEvent ievent) { var e = ievent as UIEvent_EquipSkillEffect; if (e == null) { return; } DestroyEraEffect(); ComplexObjectPool.NewObject("Effect/UI/UI_jineng.prefab", go => { if (null == go) { return; } //var renderQueue = go.GetComponent<ChangeRenderQueue>(); //if (renderQueue == null) //{ // renderQueue = go.AddComponent<ChangeRenderQueue>(); //} //renderQueue.CustomRenderQueue = 4000; effectGameObject = go; go.transform.parent = SkillItems[e.Index].EquipEffectObj.transform; go.transform.localPosition = Vector3.zero; go.transform.localScale = Vector3.one; go.transform.localRotation = Quaternion.Euler(0, 0, 0); }); }
private bool CreateAnim() { if (effectGameObject != null) { return(false); } DestroyAnim(); ComplexObjectPool.NewObject(EffectPath, go => { if (null == go) { return; } effectGameObject = go; go.transform.parent = Effect.transform; go.transform.localPosition = Vector3.zero; go.transform.localScale = Vector3.one; go.transform.localRotation = Quaternion.Euler(0, 0, 0); }); return(true); }
private void ShowItemTip(int itemId, int count) { ComplexObjectPool.NewObject("UI/Hint/ItemTip", go => { if (null == Instance) { ComplexObjectPool.Release(go); return; } if (false == IsWorking) { ComplexObjectPool.Release(go); return; } go.transform.parent = gameObject.GetComponent <UIPanel>().transform; go.transform.localPosition = Vector3.zero; go.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f); go.transform.localRotation = Quaternion.identity; go.SetActive(false); go.SetActive(true); var Logic = go.GetComponent <GainItemCtrler>(); Logic.SetItemIcon(itemId, count); }); }
private void ShowModel(string perfabPath) //"res/firstcharget/a.prefab" { //var modelPath = Resource.GetModelPath(perfabPath); if (TModel != null) { ComplexObjectPool.Release(TModel); TModel = null; } UniqueResourceId = GetNextUniqueResourceId(); var resId = UniqueResourceId; ComplexObjectPool.NewObject(perfabPath, go => { if (resId != UniqueResourceId) { return; } TModel = go; go.transform.parent = UIModel.transform; go.transform.localPosition = Vector3.zero; go.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI)); go.gameObject.SetRenderQueue(ModelRenderQueue); Drag.Target = go.transform; }); }
private void CreateNewPage(string FlyPrefab, int IconId, Vector3 From, bool OnTop, Action <GameObject> CallBack) { ComplexObjectPool.NewObject(FlyPrefab, go => { if (go == null) { return; } var frame = go.GetComponent <BookIconFrame>(); frame.IconId = IconId; var pgo = new GameObject(); pgo.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI)); pgo.name = "flybookpage"; var panel = pgo.AddComponent <UIPanel>(); panel.depth = OnTop ? 2 : 0; pgo.transform.SetParent(UIManager.Instance.GetUIRoot(UIType.TYPE_BASE).transform); pgo.transform.localPosition = Vector3.zero; pgo.transform.localScale = Vector3.one; pgo.transform.localRotation = Quaternion.identity; go.transform.SetParent(pgo.transform); go.transform.localPosition = From; go.transform.localScale = Vector3.one; if (CallBack != null) { CallBack(pgo); } else { Logger.Error("Callback must not null!!!"); } }); }
private void CreateCharRadar(MapRadarDataModel data, string prefab) { var id = data.CharacterId; ComplexObjectPool.NewObject(prefab, o => { if (data.CharType != 0) { var charObj = ObjManager.Instance.FindCharacterById(id); if (charObj == null || charObj.Dead) { ComplexObjectPool.Release(o); return; } } var oTransform = o.transform; oTransform.SetParentEX(CharCursor.transform); oTransform.localScale = Vector3.one; o.SetActive(true); var i = o.GetComponent <ListItemLogic>(); i.Item = data; var r = o.GetComponent <BindDataRoot>(); r.Source = data; itemLogicDict[data.CharacterId] = i; }); }
private void CreateCharRadar(RararCharDataModel data) { var id = data.CharacterId; ComplexObjectPool.NewObject("UI/MainUI/CharCursor.prefab", o => { if (data.CharType != 0) { var charObj = ObjManager.Instance.FindCharacterById(id); if (charObj == null || charObj.Dead) { ComplexObjectPool.Release(o, false, false); return; } } var oTransform = o.transform; //oTransform.parent = CharCursor.transform; oTransform.SetParentEX(CharCursor.transform); oTransform.localScale = Vector3.one; if (!o.activeSelf) { o.SetActive(true); } var i = o.GetComponent <ListItemLogic>(); i.Item = data; var r = o.GetComponent <BindDataRoot>(); r.Source = data; itemLogicDict[data.CharacterId] = i; }, null, null, false, false, false); }
private void OnEvent_PlayAnim(IEvent ievent) { var e = ievent as Event_EraPlayAnim; if (e == null) { return; } DestroyAnim(); ComplexObjectPool.NewObject("Effect/Books/MFS_gaizhang.prefab", go => { if (null == go) { return; } effectGameObject = go; go.transform.parent = StampGameObject; go.transform.localPosition = Vector3.zero; go.transform.localScale = Vector3.one; go.transform.localRotation = Quaternion.Euler(0, 0, 0); }); }
protected override void LoadModelAsync(Action callback = null) { var tableModel = Table.GetCharModel(TableCharacter.CharModelID); var modelPath = Resource.GetModelPath(tableModel.ResPath); UniqueResourceId = GetNextUniqueResourceId(); var resId = UniqueResourceId; ComplexObjectPool.NewObject(modelPath, model => { if (resId != UniqueResourceId) { ComplexObjectPool.Release(model); return; } if (State == ObjState.Deleted) { ComplexObjectPool.Release(model); return; } SetModel(model); mAnimationController.Animation = mModel.animation; mAnimationController.Animation.Stop(); SetScale((float)tableModel.Scale); if (null != callback) { callback(); } }); }
private void ShowModel(string perfabPath, int index) //"res/firstcharget/a.prefab" { //var modelPath = Resource.GetModelPath(perfabPath); if (TModel != null) { ComplexObjectPool.Release(TModel); TModel = null; } UniqueResourceId = GetNextUniqueResourceId(); var resId = UniqueResourceId; ComplexObjectPool.NewObject(perfabPath, go => { if (resId != UniqueResourceId) { ComplexObjectPool.Release(go); return; } if (UIModel == null) { return; } TModel = go; go.transform.parent = UIModel.transform; go.transform.localPosition = Vector3.zero; go.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI)); go.gameObject.SetRenderQueue(ModelRenderQueue); Drag.Target = go.transform; if (index == 2) { for (int i = 1100; i <= 1101; i++) { var tbSkillUpgrading = Table.GetSkillUpgrading(i); if (null == tbSkillUpgrading) { return; } var ValueList = tbSkillUpgrading.Values; if (ValueList.Count < 3) { return; } var x = ValueList[0]; var y = ValueList[1]; var z = ValueList[2]; if (i == 1100) { go.transform.localRotation = Quaternion.Euler(x, y, z); } else { go.transform.localScale = new Vector3(x, y, z); } } } }); }
// 创建模型 public void LoadModel(string model, bool sync) { _loading++; ComplexObjectPool.NewObject(Resource.Dir.Model + model, obj => { _loading--; Body = obj; Body.transform.parent = gameObject.transform; TryContinue(); }, null, null, sync); }
protected override void LoadModelAsync(Action callback = null) { var tableModel = Table.GetCharModel(TableCharacter.CharModelID); var modelPath = Resource.GetModelPath(tableModel.ResPath); UniqueResourceId = GetNextUniqueResourceId(); var resId = UniqueResourceId; if (null != mActorAvatar) { mActorAvatar.Layer = gameObject.layer; mActorAvatar.RenderQueue = RenderQueue; } ComplexObjectPool.NewObject(modelPath, model => { if (resId != UniqueResourceId) { ComplexObjectPool.Release(model); return; } if (State == ObjState.Deleted) { ComplexObjectPool.Release(model); return; } SetModel(model); mAnimationController.Animation = mModel.animation; mAnimationController.Animation.Stop(); SetScale((float)tableModel.Scale); if (null != callback) { callback(); } }, null, o => { if (IsPlayerModel()) { OptList <Renderer> .List.Clear(); o.GetComponentsInChildren(true, OptList <Renderer> .List); { var __array1 = OptList <Renderer> .List; var __arrayLength1 = __array1.Count; for (var __i1 = 0; __i1 < __arrayLength1; ++__i1) { var renderer = __array1[__i1]; { renderer.enabled = false; } } } } }); }
protected virtual void LoadRes(Action callback = null) { var prafabPath = ""; mTableData = Table.GetItemBase(mDataId); if (null == mTableData) { Logger.Error("NULL==Table.GetItemBase({0})", mDataId); } else { var tableDrop = Table.GetDropModel(mTableData.DropModel); if (null == tableDrop) { Logger.Error("NULL==Table.GetDropModel({0})", mTableData.DropModel); } else { prafabPath = tableDrop.ModelPath; } } if ("" == prafabPath) { Logger.Error("null==prafabPath)"); return; } UniqueResourceId = GetNextUniqueResourceId(); var resId = UniqueResourceId; ComplexObjectPool.NewObject(prafabPath, model => { if (resId != UniqueResourceId) { ComplexObjectPool.Release(model); return; } if (State == ObjState.Deleted) { ComplexObjectPool.Release(model); return; } SetModel(model); //SetScale((float)tableDrop.aScale); 这个缩放放到prefab上 if (null != callback) { callback(); } }); }
private void CreateCopyObj(int dataId) { if (-1 == dataId) { if (null != ShowModel) { ComplexObjectPool.Release(ShowModel); ShowModel = null; DragRotate.Target = null; } return; } else { if (ShowModel != null) { ComplexObjectPool.Release(ShowModel); ShowModel = null; } var currentData = DataModel.ActivityTermList[DataModel.CurrentSelectPageIdx]; var position = currentData.ShowModelData.Position; // 计算模型坐标 var rotation = currentData.ShowModelData.Rotation; // 旋转 UniqueResourceId = GetNextUniqueResourceId(); var resId = UniqueResourceId; var tb = Table.GetCharModel(dataId); if (null == tb) { return; } ComplexObjectPool.NewObject(tb.ResPath, go => { if (resId != UniqueResourceId) { ComplexObjectPool.Release(go); return; } ShowModel = go; go.transform.parent = ModelRoot.transform; go.transform.localPosition = position; go.transform.localRotation = rotation; go.transform.localScale = Vector3.one; go.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI)); DragRotate.Target = ShowModel.transform; ModelRoot.GetComponent <ChangeRenderQueue>().RefleshRenderQueue(); //go.gameObject.SetRenderQueue(ModelRenderQueue); }); } }
private void SetupBufferList() { ComplexObjectPool.NewObject("UI/MainUI/BuffList.prefab", gameObject => { if (null != BuffRoot) { var objTransform = gameObject.transform; //objTransform.parent = BuffRoot; objTransform.SetParentEX(BuffRoot); objTransform.localScale = Vector3.one; objTransform.localPosition = Vector3.zero; gameObject.SetActive(true); } }); }
//造品质特效 private void CreateQualityEffect(string res, Action <GameObject> callback) { DestroyQualityEffect(); ComplexObjectPool.NewObject(res, o => { mEffect = o; var xform = o.transform; xform.parent = mModel.transform; xform.localPosition = Vector3.zero; xform.localRotation = Quaternion.identity; xform.localScale = Vector3.one; callback(mEffect); }); }
public void PlayEffect(int id) { var table = Table.GetSceneEffect(id); if (null == table) { return; } if (table.SceneID != GameLogic.Instance.Scene.SceneTypeId) { return; } if (mEffectDic.ContainsKey(id)) { return; } var root = GameLogic.Instance.Scene.EffectRoot; ComplexObjectPool.NewObject(table.Path, go => { if (null == root) { ComplexObjectPool.Release(go); return; } if (mEffectDic.ContainsKey(id)) { ComplexObjectPool.Release(go); return; } #if UNITY_EDITOR go.name = "SceneEffect_" + id.ToString(); #endif var goTransform = go.transform; goTransform.parent = root.transform; goTransform.position = new Vector3(table.PosX, table.PosY, table.PosZ); goTransform.localScale = Vector3.one * (table.Zoom * 0.0001f); var guid = NextId; mEffectDic.Add(id, new EffectNode(guid, go)); if (table.LastTime > 0) { StartCoroutine(DelayDestroy(table.LastTime * 1.0f / 1000.0f, guid)); } }); }
private void CreateCharRadar(MapRadarDataModel data, string prefab) { var id = data.CharacterId; ComplexObjectPool.NewObject(prefab, o => { var oTransform = o.transform; oTransform.SetParentEX(CharCursor.transform); oTransform.localScale = Vector3.one; o.SetActive(true); var i = o.GetComponent <ListItemLogic>(); i.Item = data; var r = o.GetComponent <BindDataRoot>(); r.Source = data; itemLogicDict[data.CharacterId] = i; }); }
private void CreateOffineFrame() { if (null == OffLineRoot) { return; } ComplexObjectPool.NewObject("UI/OffLineExp/OffLineExpFrame.prefab", gameObject => { if (null != OffLineRoot) { var objTransform = gameObject.transform; //objTransform.parent = OffLineRoot; objTransform.SetParentEX(OffLineRoot); objTransform.localScale = Vector3.one; objTransform.localPosition = Vector3.zero; gameObject.SetActive(true); } }); }
private void ShowInfo(int tableId, string info, int waitSec = -1, eRootLayer rootLayer = eRootLayer.High) { ComplexObjectPool.NewObject("UI/DamageBoard.prefab", o => { if (null == Instance) { ComplexObjectPool.Release(o); return; } if (false == IsWorking) { ComplexObjectPool.Release(o); return; } var oTransform = o.transform; if (rootLayer == eRootLayer.High) { oTransform.SetParentEX(HighRoot.transform); } else if (rootLayer == eRootLayer.Low) { oTransform.SetParentEX(LowRoot.transform); } if (!o.activeSelf) { o.SetActive(false); o.SetActive(true); } oTransform.localScale = Vector3.one; oTransform.localPosition = Vector3.zero; var logic = o.GetComponent <DamageBoardLogic>(); logic.StartAction(Vector3.zero, tableId, info, DamageBoardLogic.BoardShowType.UI); if (waitSec >= 0) { logic.StayTime = waitSec * 1000; } }, null, null, false, false, false, tableId.ToString()); }
private void CreateCopyObj(int dataId) { if (-1 == dataId) { if (null != ShowModel) { ComplexObjectPool.Release(ShowModel); ShowModel = null; DragRotate.Target = null; } return; } else { UniqueResourceId = GetNextUniqueResourceId(); var resId = UniqueResourceId; var tb = Table.GetCharModel(dataId); if (null == tb) { return; } ComplexObjectPool.NewObject(tb.ResPath, go => { if (resId != UniqueResourceId) { return; } ShowModel = go; go.transform.parent = ModelRoot.transform; go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI)); DragRotate.Target = ShowModel.transform; ModelRoot.GetComponent <ChangeRenderQueue>().RefleshRenderQueue(); //go.gameObject.SetRenderQueue(ModelRenderQueue); }); } }
private void NewEffect(string effectPath, int index) { ComplexObjectPool.NewObject(effectPath, go => { if (null == go) { return; } var renderQueue = go.GetComponent <ChangeRenderQueue>(); if (renderQueue == null) { renderQueue = go.AddComponent <ChangeRenderQueue>(); } renderQueue.CustomRenderQueue = 3145; effectGameObjectList[index] = go; go.transform.parent = Effect.gameObject.transform; go.transform.localPosition = Vector3.zero; go.transform.localScale = Vector3.one; go.transform.localRotation = Quaternion.identity; }); }
public void CreateWeaponModel(int equipId, Vector3 pos, Vector3 rotation, float curScale) { if (Model != null) { DestroyModel(); } var tbEquip = Table.GetEquipBase(equipId); if (tbEquip == null) { return; } var tbMont = Table.GetWeaponMount(tbEquip.EquipModel); if (tbMont == null) { return; } ComplexObjectPool.NewObject(tbMont.Path, go => { var goTransform = go.transform; if (null != GameLogic.Instance.Scene.NpcRoot) { goTransform.parent = GameLogic.Instance.Scene.NpcRoot.transform; } goTransform.position = pos; goTransform.rotation = Quaternion.Euler(rotation); goTransform.localScale = new Vector3(curScale, curScale, curScale);; goTransform.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.ObjLogic)); Model = go; }); }
private void ShowInfo(int tableId, string info, int waitSec = -1, eRootLayer rootLayer = eRootLayer.High) { ComplexObjectPool.NewObject("UI/DamageBoard.prefab", o => { var oTransform = o.transform; if (rootLayer == eRootLayer.High) { oTransform.SetParentEX(HighRoot.transform); } else if (rootLayer == eRootLayer.Low) { oTransform.SetParentEX(LowRoot.transform); } o.SetActive(true); oTransform.localScale = Vector3.one; oTransform.localPosition = Vector3.zero; var logic = o.GetComponent <DamageBoardLogic>(); logic.StartAction(Vector3.zero, tableId, info, DamageBoardLogic.BoardShowType.UI); if (waitSec >= 0) { logic.StayTime = waitSec * 1000; } }); }
public void NotifyShootBullet(BulletMsg msg) { Action act = () => { var tableData = Table.GetBullet(msg.BulletId); var caster = ObjManager.Instance.FindCharacterById(msg.CasterId); if (null == caster) { Logger.Warn("NotifyShootBullet: null==caster[{0}]", msg.CasterId); return; } if (ObjState.Normal != caster.State && ObjState.Dieing != caster.State) { Logger.Warn("NotifyShootBullet: caster[{0}] state=[{1}]", msg.CasterId, caster.State.ToString()); return; } var bulletPath = tableData.Path; var speed = tableData.Speed; if (caster) { var pos = caster.Position; var emitObj = caster.GetMountPoint(tableData.CasterMountPoint); if (null == emitObj) { Logger.Error("NotifyShootBullet: Can not find mount point [{0}] in [{1}]", tableData.CasterMountPoint, caster.name); } else { pos = emitObj.position; } { var __list5 = msg.TargetObjId; var __listCount5 = __list5.Count; for (var __i5 = 0; __i5 < __listCount5; ++__i5) { var targetId = __list5[__i5]; { var target = ObjManager.Instance.FindCharacterById(targetId); if (null == target) { continue; } var id = target.GetObjId(); var p = target.Position; //ResourceManager.PrepareResource<GameObject>(bulletPath, (res) => ComplexObjectPool.NewObject(bulletPath, obj => { if (obj == null) { return; } obj.transform.position = pos; Missile missile; if (tableData.DirRangeX == 0 && tableData.DirRangeY == 0 && tableData.DirRangeZ == 0) { missile = obj.GetComponent <Missile>(); if (missile == null) { missile = obj.AddComponent <Missile>(); } } else { var dmissile = obj.GetComponent <DirectionalMissile>(); if (dmissile == null) { dmissile = obj.AddComponent <DirectionalMissile>(); } var v = Random.Range(0, Mathf.PI * 2); dmissile.StartDirection = new Vector3( Mathf.Sin(v) * Random.Range(tableData.DirRangeX * 0.8f, tableData.DirRangeX * 1.2f), Mathf.Abs(Mathf.Cos(v)) * Random.Range(tableData.DirRangeY * 0.8f, tableData.DirRangeY * 1.2f), Random.Range(tableData.DirRangeZ * 0.8f, tableData.DirRangeZ * 1.2f)); missile = dmissile; } if (target.GetModel() == null || target.GetModel().gameObject == null) { missile.Target = target.ObjTransform; } else { var targetObj = target.GetMountPoint(tableData.BearMountPoint); if (null == targetObj) { Logger.Error("NotifyShootBullet: Can not find mount point [{0}] in [{1}]", tableData.BearMountPoint, target.name); missile.Target = target.ObjTransform; } else { missile.Target = targetObj; } } missile.Init(speed, p, bullet => { var tar = ObjManager.Instance.FindCharacterById(id); if (null != tar) { tar.DoHurt(); } if (!string.IsNullOrEmpty(tableData.HitEffect)) { var effectId = Convert.ToInt32(tableData.HitEffect); if (-1 != effectId) { var data = Table.GetEffect(effectId); EffectManager.Instance.CreateEffect(data, tar, null, (effect, eId) => { effect.gameObject.transform.position = bullet.gameObject.transform.position; }, null, (data.BroadcastType == 0 && targetId == ObjManager.Instance.MyPlayer.GetObjId()) || data.BroadcastType == 1); } } }); missile.enabled = true; }, o => { OptList <Bullet> .List.Clear(); o.GetComponents(OptList <Bullet> .List); { var __array1 = OptList <Bullet> .List; var __arrayLength1 = __array1.Count; for (var __i2 = 0; __i2 < __arrayLength1; ++__i2) { var b = __array1[__i2]; b.enabled = false; } } OptList <TrailRenderer_Base> .List.Clear(); o.GetComponentsInChildren(OptList <TrailRenderer_Base> .List); { var __array1 = OptList <TrailRenderer_Base> .List; var __arrayLength1 = __array1.Count; for (var __i2 = 0; __i2 < __arrayLength1; ++__i2) { var t = __array1[__i2]; t.ClearSystem(false); t.Emit = true; } } }); } } } } }; var time = Extension.FromServerBinary((long)msg.ViewTime); if (time > Game.Instance.ServerTime) { StartCoroutine(WaitToDoSomething(time - Game.Instance.ServerTime, act)); } else { act(); } }
public void CreateModel(string prefab, string animationPath = "", Action <GameObject> callback = null) { if (mState != State.Deleted) { return; } #if UNITY_EDITOR gameObject.name = "AnimationModel"; #endif mState = State.Loading; ComplexObjectPool.NewObject(prefab, go => { if (null == go) { return; } if (mState == State.Deleted) { ComplexObjectPool.Release(go); return; } if (mState == State.Ok) { ComplexObjectPool.Release(mModel); } var goTransform = go.transform; goTransform.parent = transform; goTransform.localPosition = Vector3.zero; goTransform.localRotation = Quaternion.identity; goTransform.localScale = Vector3.one; mModel = go; mState = State.Ok; if (!string.IsNullOrEmpty(animationPath)) { var ani = go.GetComponent <Animation>(); if (null == ani) { ani = go.AddComponent <Animation>(); } mAnimation = ani; ani.enabled = true; var s = animationPath.LastIndexOf("/"); var l = animationPath.LastIndexOf(".anim"); var aniName = animationPath.Substring(s + 1, l - s - 1); if (!string.IsNullOrEmpty(aniName)) { mAnimationName = aniName; var clip = ani.GetClip(aniName); if (null == clip) { ResourceManager.PrepareResource <AnimationClip>(animationPath, aniClip => { aniClip.wrapMode = WrapMode.Loop; ani.AddClip(aniClip, aniName); ani.Play(aniName); if (null != callback) { callback(go); } }); } else { ani.Play(aniName); if (null != callback) { callback(go); } } } } else { if (null != callback) { callback(go); } } }); }
private void OnShowBuffBoardImpl(IEvent ievent) { if (ActiveCount >= 256) { return; } var e = ievent as ShowDamageBoardEvent; var result = e.Result; var tableId = -1; var strValue = result.Damage.ToString(); var targetCharacter = ObjManager.Instance.FindCharacterById(result.TargetObjId); var casterCharacter = ObjManager.Instance.FindCharacterById(result.SkillObjId); var isShow = false; if (targetCharacter != null) { if (targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { isShow = true; } else if (targetCharacter.GetObjType() == OBJ.TYPE.RETINUE) { var retinue = targetCharacter as ObjRetinue; if (retinue != null && retinue.GetIsMe()) { isShow = true; } } } if (isShow == false && casterCharacter != null) { if (casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { isShow = true; } else if (casterCharacter.GetObjType() == OBJ.TYPE.RETINUE) { var retinue = casterCharacter as ObjRetinue; if (retinue != null && retinue.GetIsMe()) { isShow = true; } } } if (isShow == false) { return; } var directivityPos = false; switch (result.Type) { case BuffType.HT_NORMAL: { tableId = 6; if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE) { var retinue = casterCharacter as ObjRetinue; if (retinue != null && retinue.GetIsMe()) { tableId = 13; } else { tableId = 17; } } else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { tableId = 6; } else { directivityPos = true; tableId = 3; } } else { if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { tableId = 6; } } } break; case BuffType.HT_CRITICAL: { // ignorePostion = true; tableId = 5; if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE) { var retinue = casterCharacter as ObjRetinue; if (retinue != null && retinue.GetIsMe()) { tableId = 13; } else { tableId = 17; } } else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { directivityPos = true; tableId = 2; } else { if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { tableId = 5; } } } break; case BuffType.HT_EXCELLENT: { // ignorePostion = true; tableId = 4; if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE) { var retinue = casterCharacter as ObjRetinue; if (retinue != null && retinue.GetIsMe()) { tableId = 13; } else { tableId = 17; } } else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { directivityPos = true; tableId = 1; } else { if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { tableId = 4; } } } break; case BuffType.HT_MISS: { tableId = 10; strValue = ""; } break; case BuffType.HT_NODAMAGE: { tableId = 11; strValue = ""; } break; case BuffType.HT_HEALTH: { tableId = 7; } break; case BuffType.HT_MANA: { tableId = 8; } break; case BuffType.HT_REBOUND: { tableId = 9; } break; case BuffType.HT_Fire_DAMAGE: { directivityPos = true; tableId = 20; if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE) { var retinue = casterCharacter as ObjRetinue; if (retinue != null && retinue.GetIsMe()) { tableId = 20; } else { tableId = 23; } } else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { tableId = 23; } else { tableId = 20; } } else { if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { tableId = 23; } } } break; case BuffType.HT_Ice_DAMAGE: { directivityPos = true; if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE) { var retinue = casterCharacter as ObjRetinue; if (retinue != null && retinue.GetIsMe()) { tableId = 21; } else { tableId = 24; } } else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { tableId = 24; } else { tableId = 21; } } else { if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { tableId = 24; } } } break; case BuffType.HT_Poison_DAMAGE: { directivityPos = true; if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.RETINUE) { var retinue = casterCharacter as ObjRetinue; if (retinue != null && retinue.GetIsMe()) { tableId = 22; } else { tableId = 25; } } else if (casterCharacter != null && casterCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { tableId = 25; } else { tableId = 22; } } else { if (targetCharacter != null && targetCharacter.GetObjType() == OBJ.TYPE.MYPLAYER) { tableId = 25; } } } break; case BuffType.HT_ADDBUFF: case BuffType.HT_DIE: case BuffType.HT_EFFECT: case BuffType.HT_RELIVE: case BuffType.HT_DELBUFF: case BuffType.HT_CHANGE_SCENE: break; default: throw new ArgumentOutOfRangeException(); } if (tableId == -1) { return; } //�ж϶����ʾ int showTimes = 1; int total = 0; var tableBuff = Table.GetBuff(result.BuffTypeId); if (null != tableBuff && tableBuff.DamageNumShowTimes > 0 && !string.IsNullOrEmpty(strValue)) { if (int.TryParse(strValue, out total)) { showTimes = tableBuff.DamageNumShowTimes; } } var position = e.Position; if (directivityPos) { var mountPoint = targetCharacter.GetMountPoint((int)MountPoint.Center); if (null != mountPoint) { position = mountPoint.position; } else { Logger.Warn("model does not have center mount point !model:{0}", targetCharacter.Name); } } if (showTimes <= 1 || total < showTimes) { ActiveCount++; ComplexObjectPool.NewObject("UI/DamageBoard.prefab", o => { if (null == Instance) { ComplexObjectPool.Release(o); return; } if (false == IsWorking) { ComplexObjectPool.Release(o); return; } var oTransform = o.transform; oTransform.parent = transform; //oTransform.SetParent(transform); if (!o.activeSelf) { o.SetActive(false); o.SetActive(true); } oTransform.localScale = Vector3.one; oTransform.localPosition = Vector3.zero; var logic = o.GetComponent <DamageBoardLogic>(); logic.BackGround.enabled = false; logic.Label.text = string.Empty; var delay = 0.0f; if (tableId > 0) { var tbCombat = Table.GetCombatText(tableId); if (null != tbCombat && tbCombat.DelayTime > 0) { delay = tbCombat.DelayTime / 1000.0f; } } // Action action = () => // { logic.StartAction(position, tableId, strValue, DamageBoardLogic.BoardShowType.Fight, false, delay, directivityPos); // }; // ActionQueue.Enqueue(action); }, null, null, false, false, false, tableId.ToString()); } else { int remain = total; float per = total * 1.0f / showTimes; for (int i = 0; i < showTimes; i++) { float frac = 0 == i % 2 ? 1 : -1; int damage = 0; if (i == showTimes - 1) { damage = remain; } else { damage = (int)(per + frac * per * UnityEngine.Random.RandomRange(0.0f, 0.1f)); remain -= damage; } ActiveCount++; ComplexObjectPool.NewObject("UI/DamageBoard.prefab", o => { if (false == IsWorking) { ComplexObjectPool.Release(o); return; } var oTransform = o.transform; oTransform.parent = transform; //oTransform.SetParent(transform); if (!o.activeSelf) { o.SetActive(false); o.SetActive(true); } oTransform.localScale = Vector3.one; oTransform.localPosition = Vector3.zero; var logic = o.GetComponent <DamageBoardLogic>(); var delay = 0.0f; if (tableBuff != null) { delay = i * (tableBuff.DamageDeltaTime / 1000.0f); } else { delay = i * 0.38f; } if (tableId > 0) { var tbCombat = Table.GetCombatText(tableId); if (null != tbCombat && tbCombat.DelayTime > 0) { delay += tbCombat.DelayTime / 1000.0f; } } // Action action = () => // { logic.StartAction(position, tableId, damage.ToString(), DamageBoardLogic.BoardShowType.Fight, false, delay, directivityPos); // }; // ActionQueue.Enqueue(action); }, null, null, false, false, false, tableId.ToString()); } } }
private void ShowMountModel(IEvent ievent) { var e = ievent as ItemInfoMountModelDisplay_Event; if (e != null && !string.IsNullOrEmpty(e.PerfabPath)) { var prefabPath = e.PerfabPath; var animationPath = e.AnimationPath; if (Model != null) { ComplexObjectPool.Release(Model); Model = null; } ComplexObjectPool.NewObject(prefabPath, go => { if (ModelRoot == null) { return; } Model = go; go.transform.parent = ModelRoot.transform; go.transform.localPosition = Vector3.zero; go.gameObject.SetLayerRecursive(LayerMask.NameToLayer(GAMELAYER.UI)); ModelRoot.GetComponent <ChangeRenderQueue>().RefleshRenderQueue(); Drag.Target = go.transform; go.transform.localRotation = Quaternion.Euler(0, e.ShowAngle, 0); go.transform.localScale = Vector3.one * e.Scale; if (!string.IsNullOrEmpty(animationPath)) { var ani = go.GetComponent <Animation>(); if (null == ani) { ani = go.AddComponent <Animation>(); } ani.enabled = true; var s = animationPath.LastIndexOf("/"); var l = animationPath.LastIndexOf(".anim"); var aniName = animationPath.Substring(s + 1, l - s - 1); if (!string.IsNullOrEmpty(aniName)) { var clip = ani.GetClip(aniName); if (null == clip) { ResourceManager.PrepareResource <AnimationClip>(animationPath, aniClip => { aniClip.wrapMode = WrapMode.Loop; ani.AddClip(aniClip, aniName); ani.Play(aniName); }); } else { //clip.wrapMode = WrapMode.Loop; //ani.wrapMode = WrapMode.Loop; ani[aniName].wrapMode = WrapMode.Loop; ani.Play(aniName, PlayMode.StopAll); } } } }); } }
public void CreateEffect(EffectRecord tableData, Transform parent, Vector3 dir, int layer = 0, Vector3?pos = null, Action <EffectController, ulong> loadOverCallback = null, Action <EffectController, ulong> playOverCallback = null, bool firstPriority = false, bool bPrepareResource = false, bool camShake = true) { ComplexObjectPool.NewObject(tableData.Path, obj => { if (obj == null) { return; } var Id = GenerateNextId(); var p = new Vector3(tableData.X, tableData.Y, tableData.Z); var rotation = Quaternion.Euler(new Vector3(tableData.RotationX, tableData.RotationY, tableData.RotationZ)); var objTransform = obj.transform; if (null != parent) { objTransform.parent = parent; } else { objTransform.parent = GameLogic.Instance.Scene.EffectRoot.transform; } if (tableData.IsZoom != 0) { objTransform.localScale = Vector3.one; } else { if (parent != null) { var v = parent.transform.lossyScale; objTransform.localScale = new Vector3(1.0f / v.x, 1.0f / v.y, 1.0f / v.z); } else { objTransform.localScale = Vector3.one; } } objTransform.localPosition = p; objTransform.localRotation = rotation; obj.name = "Effect_" + Id.ToString() + "_" + Path.GetFileNameWithoutExtension(tableData.Path); obj.SetLayerRecursive(layer); ComplexObjectPool.SetActive(obj, false); { //根据setting设置特效显示 if (GameSetting.Instance.GameQualityLevel < 3) { { // foreach(var data in EnumGameObjectRecursive(obj)) var __enumerator5 = (EnumGameObjectRecursive(obj)).GetEnumerator(); while (__enumerator5.MoveNext()) { var data = __enumerator5.Current; { if (data.CompareTag("LowEffectParticle")) { data.SetActive(false); } } } } } } var effect = obj.GetComponent <EffectController>(); if (effect == null) { effect = obj.AddComponent <EffectController>(); effect.InitLoop(); } effect.Id = Id; effect.Delay = tableData.DelayTime; effect.Duration = tableData.Duration == 0 ? float.MaxValue : tableData.Duration; effect.Follow = tableData.Follow != 0; effect.PlayOverCallback = playOverCallback; effect.LoopTime = tableData.LoopTime; effect.State = EffectState.WaitToFire; effect.Dir = dir; effect.Pos = pos; effect.trans = effect.transform; mDict.Add(effect.Id, effect); if (null != loadOverCallback) { loadOverCallback(effect, Id); } if (camShake) { var tableDataShakeDelayTimeLength0 = tableData.ShakeDelayTime.Length; for (var i = 0; i < tableDataShakeDelayTimeLength0; i++) { if (tableData.ShakeDelayTime[i] != -1) { //创建人物时播放角色动画还没有GameLogic if (null != GameLogic.Instance) { var shake = GameLogic.Instance.MainCamera.GetComponent <CameraShake>(); if (null != shake && shake.gameObject.active && (!bPrepareResource) && GameLogic.Instance.MainCamera.enabled) { shake.StartCoroutine(ShakeCamera(shake, tableData.ShakeDelayTime[i] / 1000.0f, tableData.ShakeMagnitude[i], (int)tableData.ShakeCount[i], tableData.ShakeSpeed[i], tableData.ShakeReduction[i], tableData.ShakeType[i])); } } } } } }, null, null, false, firstPriority, false); }