| | |
| | | //防范effeid 为0 |
| | | if (effectConfig != null && effectConfig.isSpine != 0) |
| | | { |
| | | PlaySpineEffect(closePMA); |
| | | PlaySpineEffect(closePMA).Forget(); |
| | | } |
| | | return; |
| | | } |
| | |
| | | // 加载spine特效资源 |
| | | if (effectConfig.isSpine != 0) |
| | | { |
| | | PlaySpineEffect(closePMA); |
| | | PlaySpineEffect(closePMA).Forget(); |
| | | } |
| | | else |
| | | { |
| | | PlayerEffect(); |
| | | PlayerEffect().Forget(); |
| | | } |
| | | |
| | | |
| | |
| | | spineAnimationState.TimeScale = speed; |
| | | } |
| | | |
| | | protected void PlaySpineEffect(bool closePMA = false) |
| | | protected async UniTask PlaySpineEffect(bool closePMA = false) |
| | | { |
| | | |
| | | // 从特效预制体池获取特效 |
| | |
| | | if (spineComp.skeletonDataAsset == null || spineAnimationState == null) |
| | | { |
| | | //LoadAsset 已经有缓存SkeletonDataAsset |
| | | spineComp.skeletonDataAsset = ResManager.Instance.LoadAsset<SkeletonDataAsset>("UIEffect/" + effectConfig.packageName, effectConfig.fxName); |
| | | spineComp.skeletonDataAsset = await ResManager.Instance.LoadAssetAsync<SkeletonDataAsset>("UIEffect/" + effectConfig.packageName, effectConfig.fxName); |
| | | //为true时会有部分特效不显示 如满级经验条;改成伽马后部分特效正常,还有部分依然要改此设置 |
| | | spineComp.MeshGenerator.settings.pmaVertexColors = !closePMA; |
| | | spineComp.raycastTarget = false; |
| | |
| | | // { |
| | | // spineComp.material = null; |
| | | // } |
| | | spineComp.material = ResManager.Instance.LoadAsset<Material>("Materials", "SkeletonGraphicDefault-Straight"); |
| | | ResManager.Instance.LoadAssetAsync<Material>("Materials", "SkeletonGraphicDefault-Straight").ContinueWith(material => |
| | | { |
| | | if (material != null) |
| | | { |
| | | spineComp.material = material; |
| | | } |
| | | else |
| | | { |
| | | Debug.LogError("Failed to load material for Spine effect: " + effectConfig.fxName); |
| | | } |
| | | }).Forget(); |
| | | |
| | | spineAnimationState = spineComp.AnimationState; |
| | | spineAnimationState.TimeScale = speedRate; |
| | |
| | | |
| | | |
| | | //unity特效 |
| | | protected virtual void PlayerEffect() |
| | | protected virtual async UniTask PlayerEffect() |
| | | { |
| | | var effectPrefab = ResManager.Instance.LoadAsset<GameObject>("UIEffect/" + effectConfig.packageName, effectConfig.fxName); |
| | | var effectPrefab = await ResManager.Instance.LoadAssetAsync<GameObject>("UIEffect/" + effectConfig.packageName, effectConfig.fxName); |
| | | if (effectPrefab == null) |
| | | { |
| | | Debug.LogError($"加载UI特效失败: {effectConfig.packageName}"); |