//播放事件 protected override void PlayEvent(AnimationEffectManage effectmanage) { _ghostRenderers.Clear(); foreach (Renderer renderer in effectmanage.GetComponentsInChildren <Renderer>()) { GhostRenderer ghostRenderer = renderer.GetComponent <GhostRenderer>(); if (ghostRenderer != null) { if (!ghostRenderer.enabled) { ghostRenderer.enabled = true; } } else { ghostRenderer = renderer.gameObject.AddComponent <GhostRenderer>(); } _ghostRenderers.Add(ghostRenderer); SyncGhostParamaters(ghostRenderer); ghostRenderer.GenerateEnabled = true; ghostRenderer.GenerateFinished = false; } _startCreatTime = Time.time; }
void OnEnable() { _ghostRenderers.Clear(); foreach (Renderer renderer in this.gameObject.GetComponentsInChildren <Renderer>()) { GhostRenderer ghostRenderer = renderer.GetComponent <GhostRenderer>(); if (ghostRenderer != null) { if (!ghostRenderer.enabled) { ghostRenderer.enabled = true; } } else { ghostRenderer = renderer.gameObject.AddComponent <GhostRenderer>(); } _ghostRenderers.Add(ghostRenderer); SyncGhostParamaters(ghostRenderer); ghostRenderer.GenerateEnabled = true; ghostRenderer.GenerateFinished = false; } _startCreatTime = Time.time; }
void SyncGhostParamaters(GhostRenderer ghostRenderer) { ghostRenderer._intervalTime = _intervalTime; ghostRenderer._lifeTime = _lifeTime; ghostRenderer._minDistance = _minDistance; ghostRenderer._material = _material; ghostRenderer._colorKey = _colorKey; //ghostRenderer._rimColor = _rimColor; //ghostRenderer._srcBlendMode = _srcBlendMode; //ghostRenderer._dstBlendMode = _dstBlendMode; }
void OnDisable() { for (int i = 0; i < _ghostRenderers.Count; i++) { GhostRenderer ghostRenderer = _ghostRenderers[i]; if (ghostRenderer != null) { ghostRenderer.enabled = false; } } _ghostRenderers.Clear(); }
void Update() { for (int i = 0; i < _ghostRenderers.Count; i++) { GhostRenderer ghostRenderer = _ghostRenderers[i]; if (ghostRenderer != null) { #if UNITY_EDITOR SyncGhostParamaters(ghostRenderer); #endif ghostRenderer.GenerateEnabled = Time.time < _startCreatTime + _durationTime; if (ghostRenderer.GenerateFinished && _autoDestroy) { Destroy(gameObject); } } } }