public void Play(LegionExpEffectType type, UnitCtl unit) { if (War.sceneData.visiableLegionLevelMsg == false) { return; } targetPos = targetGlow.transform.position; Vector3 unitPos = unit.transform.position; if (type == LegionExpEffectType.L) { unitPos += new Vector3(-2, 1, 0); } point.anchoredPosition = unitPos.WorldPosToAnchorPos(); beginPos = point.position; GameObject go = War.pool.legionExpPool.Get(type); go.SetActive(false); go.transform.SetParent(transform); go.transform.position = beginPos; d = targetPos - beginPos; magnitude = d.magnitude / 10f; //Debug.Log("targetPos =" +targetPos + " d.magnitude=" + d.magnitude); midePos = beginPos + d * 0.5f + v * magnitude * Random.Range(-1f, 1f); go.transform.DOPath(new Vector3[] { beginPos, midePos, targetPos }, Mathf.Max(0.8f, 1f * magnitude), PathType.CatmullRom).SetDelay(count * 0.05f).SetEase(Ease.InExpo).OnStart(() => { go.SetActive(true); }).OnComplete(() => { go.GetComponent <PrefabPoolItem>().Release(); go.SetActive(false); go.transform.position = Vector3.zero * -1000; targetGlow.DOKill(); targetGlow.color = targetGlow.color.SetAlhpa(1); targetGlow.DOFade(0, 0.5f); count--; }); count++; }
public void Init(MonoBehaviour manager) { LegionExpEffectType[] types = new LegionExpEffectType[] { LegionExpEffectType.L, LegionExpEffectType.M, LegionExpEffectType.S }; string[] names = new string[] { "LegionExpEffect_L", "LegionExpEffect_M", "LegionExpEffect_S" }; string[] res = new string[] { WarRes.e_legionexp_l, WarRes.e_legionexp_m, WarRes.e_legionexp_s }; Transform transform = manager.transform; PrefabPool pool = null; for (int i = 0; i < types.Length; i++) { pool = new PrefabPool(); pool.cullAbove = 30; pool.cullDelay = 5; pool.cullMaxPerPass = 5; pool.manager = manager; pool.prefab = WarRes.GetPrefab(res[i]); pool.group = new GameObject(names[i]).transform; pool.group.SetParent(transform); poolDict.Add(types[i], pool); } }
public GameObject Get(LegionExpEffectType type) { return(poolDict[type].Get()); }