public void RequestFx(Transform parent, Vector3 position, Quaternion rotation) { Transform fxT = pool.ObtainPrefabInstance(); GFX fx = fxT.GetComponent<GFX>(); fxT.parent = parent; fxT.localPosition= position; fxT.localRotation = rotation; if (fx) { fx.Play(OnFxLifeEnd); } else { FxDuration duration = fxT.GetComponent<FxDuration>(); if (duration) { FxDelayParam p = new FxDelayParam(); p.delay = duration.duration; p.t = fxT; p.delay = duration.duration; p.t = fxT; StartCoroutine(DelayAndRecyle(p)); } } }
IEnumerator DelayAndRecyle(FxDelayParam p) { yield return new WaitForSeconds(p.delay); Recycle(p.t); }