public void ShowTargetFx(int changedInstId) { // 타겟이 변경 되었거나 내 캐릭터의 타겟 정보만 처리한다 if (Owner.TargetID == changedInstId) { return; } // despawn Fx if (null != TargetingEffect) { SelfDespawn.ClearPartileSystem(TargetingEffect); G_GameInfo.EffectPool.Despawn(TargetingEffect, G_GameInfo.EffectPool.group); TargetingEffect = null; } Unit Target = null; if (!G_GameInfo.CharacterMgr.InvalidTarget(changedInstId, ref Target)) { TargetingEffect = G_GameInfo.SpawnEffect("Fx_Targeting", 1f, Target.transform, Target.transform, Owner.Model.ScaleVec3); if (TargetingEffect.gameObject.layer != 0) { NGUITools.SetChildLayer(TargetingEffect, 0); } } }
override public void OnEnter(System.Action callback) { base.OnEnter(callback); parent.SpawnEffect("Fx_Monstor_Death_01", 2, parent.cachedTransform, null, false, (deadFx) => { duration = SelfDespawn.DespawnPartileSystem("Effect", deadFx, 1.5f) * 1.2f; }); parent.DeleteShadow(); parent.DeadEffect(1.5f, () => { EndDelay = 0.5f; }); EndDelay = float.MaxValue; }
//< 모델 삭제 void ModelDestroy() { if (ModelObj == null) { MyDestroy(); return; } if (!bNetInit) { return; } //< 업데이트를 막기위함 bNetInit = false; //< 이펙트가 출력되고있을수도 있기때문에 잠시후에 삭제시켜줌 ModelObj.gameObject.SetActive(false); TempCoroutine.instance.FrameDelay(2, () => { if (ModelObj != null) { FxMakerPoolItem poolItem = ModelObj.transform.GetComponent <FxMakerPoolItem>(); if (null == poolItem) { SelfDespawn.DespawnPartileSystem("Projectile", ModelObj.transform, 0.1f, true); } else if (null != poolItem) { poolItem.ManualDespawn(); } ModelObj = null; } //< 나도 삭제 MyDestroy(); }); }