From 4fde46699701b1a8b74b4dab516624852b24a86d Mon Sep 17 00:00:00 2001 From: yyl <yyl> Date: 星期一, 23 六月 2025 14:24:50 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts --- Main/Component/UI/Effect/EffectPlayer.cs | 77 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 77 insertions(+), 0 deletions(-) diff --git a/Main/Component/UI/Effect/EffectPlayer.cs b/Main/Component/UI/Effect/EffectPlayer.cs new file mode 100644 index 0000000..4370458 --- /dev/null +++ b/Main/Component/UI/Effect/EffectPlayer.cs @@ -0,0 +1,77 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EffectPlayer : MonoBehaviour +{ + public int effectId; + + public bool autoDestroy = false; + + public float destroyDelay = 0f; + + public Canvas canvas = null; + + public GameObject effectTarget = null; + + protected void Start() + { + if (EffectMgr.Instance.IsNotShowBySetting(effectId)) + { + return; + } + + if (null != effectTarget) + { + DestroyImmediate(effectTarget); + effectTarget = null; + } + + EffectConfig effectCfg = EffectConfig.Get(effectId); + + if (null == effectCfg) + { + return; + } + + // YYL TODO + // 鍦ㄨ繖閲岃�冭檻鐢ㄦ睜鐨勮瘽鍙兘璧伴厤缃ソ涓�鐐� 鍘熸湰鐨勬槸鏃犺濡備綍閮借蛋姹� 浣嗘槸瀹為檯涓婃湁浜涚壒鏁堝苟涓嶉渶瑕� + + // 鍔犺浇鐗规晥璧勬簮 + var effectPrefab = ResManager.Instance.LoadAsset<GameObject>("UIEffect/" + effectCfg.packageName, effectCfg.fxName); + if (effectPrefab == null) + { + Debug.LogError($"鍔犺浇UI鐗规晥澶辫触: {effectCfg.packageName}"); + return; + } + + // 瀹炰緥鍖栫壒鏁� + effectTarget = Instantiate(effectPrefab, transform); + effectTarget.name = $"Effect_{effectCfg.packageName}"; + + if (null == canvas) + canvas = GetComponentInParent<Canvas>(); + + if (null == canvas) + { + Debug.LogError("can not find canvas for UIEffect " + effectId); + return; + } + + // 娣诲姞鐗规晥绌块�忛樆鎸″櫒 + EffectPenetrationBlocker blocker = effectTarget.AddComponent<EffectPenetrationBlocker>(); + blocker.parentCanvas = canvas; + + // 寤惰繜涓�甯ф墠鐢熸晥 + this.DelayFrame(blocker.UpdateSortingOrder); + + // blocker.UpdateSortingOrder(); + + // 鑷姩閿�姣� + if (autoDestroy) + { + Destroy(effectTarget, destroyDelay); + } + } + +} -- Gitblit v1.8.0