private void CreateEffectNodeDate() { m_EffectNodeMesh = null; m_EffectNodePrefab = null; switch (m_EffectType) { case UEffectType.UET_EffectPrefab: m_EffectNodePrefab = new UEffectNodeData_Prefab(this); return; case UEffectType.UET_EffectMesh: m_EffectNodeMesh = new UEffectNodeData_Mesh(this); return; case UEffectType.UET_EffectMaterial: m_EffectNodeMaterial = new UEffectNodeData_Material(this); return; } }
protected void InitEffectPrefabRefParam(UEffectPrefabParam _effectParam) { if (_effectParam.EffectRes == null) { Trace.LogWarning("实例化UI效果类型:" + _effectParam.AttachEffectType + " 失败,资源没加载"); return; } //异步没加载完 if (!_effectParam.EffectRes.isLoadFinish) { return; } //实例化失败,已报错 if (_effectParam.EffectGameObject == null) { return; } GameObject _goEffect = _effectParam.EffectGameObject; Transform EffectTrans = _goEffect.transform; EffectTrans.SetParent(_effectParam.AttachParent, false); //初始化坐标 if (_effectParam.AttachPosition != null) { EffectTrans.localPosition = (Vector3)_effectParam.AttachPosition; } //初始化角度 if (_effectParam.AttachRotation != null) { EffectTrans.GetComponentsInChildren <ParticleSystem>().ToList() .ForEach(x => { x.startRotation = (float)_effectParam.AttachRotation * Mathf.Deg2Rad; }); } //初始化延迟 if (_effectParam.AttachDelay != null) { int timerID = (int)EEffectTimer.EET_Delay * MaxTimerIDCount + _goEffect.GetComponent <UEffectNode>().To <UEffectNodeData_Prefab>().EffectPrefabTypeID; TimerManager.SetTimer(this, timerID, (float)_effectParam.AttachDelay, 1); _goEffect.SetActive(false); m_dicTimerIDObject.Add(timerID, _goEffect); } ////////粒子相关 UEffectNodeData_Prefab prefab = _goEffect.GetComponent <UEffectNode>().To <UEffectNodeData_Prefab>(); prefab.InitParticles(); //是否需要播放完后自动移除 if (_effectParam.AutoDestroy) { //检测是否有循环播放的粒子系统,有的话不能自动移除 if (prefab.IsLoopEffect()) { Trace.LogWarning("UI效果:" + EffectTrans.name + "不能用于自动移除,因为用到循环粒子系统"); } else { prefab = _goEffect.GetComponent <UEffectNode>().To <UEffectNodeData_Prefab>(); prefab.SetAutoDestroy(); } } //if(_effectParam.AttachEffectType == UEffectPrefabType.UEPT_HeroPreviewFrame_GradeFrame4) //{ // Debug.Log("begin InitEffectPrefabRefParam"); // UParticleMask mask = _goEffect.GetComponent<UParticleMask>(); // if (mask == null) // mask = _goEffect.AddComponent<UParticleMask>(); // RectTransform rectTrans = (EffectTrans as RectTransform); // rectTrans.sizeDelta = new Vector2(152f, 190f); // Debug.Log(rectTrans.gameObject.name + "..InitEffectPrefabRefParam.." + rectTrans.position); // Debug.Log("end InitEffectPrefabRefParam"); //} //最后播放粒子 prefab.ReplayEffect(); //异步资源回调 if (_effectParam is UEffectPrefabAsyncParam) { if ((_effectParam as UEffectPrefabAsyncParam).onResLoadFinished != null) { (_effectParam as UEffectPrefabAsyncParam).onResLoadFinished.Invoke(_effectParam as UEffectPrefabAsyncParam); } } }