feat(fix-system): 优化损坏模块火花表现

This commit is contained in:
2026-07-16 17:50:48 +08:00
parent 3be0bf8201
commit 754d03b47d
2 changed files with 64 additions and 52 deletions
+49 -40
View File
@@ -26817,6 +26817,10 @@ PrefabInstance:
propertyPath: m_SortingLayerID
value: 467777933
objectReference: {fileID: 0}
- target: {fileID: 851264023435953513, guid: 00201a2051999414b93a0afa905a4d9a, type: 3}
propertyPath: m_SortingLayerID
value: 467777933
objectReference: {fileID: 0}
- target: {fileID: 4299601253263290863, guid: 00201a2051999414b93a0afa905a4d9a, type: 3}
propertyPath: flashSpriteRenderer
value:
@@ -27017,15 +27021,16 @@ MonoBehaviour:
flickerMinInterval: 0.06
flickerMaxInterval: 0.18
sparkAsset: {fileID: 8926484042661614526, guid: e4d341c0a7404c7f90831f00f40a6d23, type: 3}
sparkMinInterval: 0.35
sparkMaxInterval: 1.2
sparkBoundsPadding: 0.06
sparkBoundsScale: {x: 1, y: 1}
sparkMinInterval: 0.3
sparkMaxInterval: 1
sparkBoundsPadding: 0.01
sparkBoundsScale: {x: 0.9, y: 0.92}
sparkCenterOffset: {x: 0, y: 0}
sparkBurstCount: {x: 2, y: 5}
sparkLifetime: {x: 0.08, y: 0.22}
sparkSizeFactor: {x: 0.025, y: 0.055}
sparkVelocityFactor: 1.5
sparkBurstCount: {x: 3, y: 6}
sparkLifetime: {x: 0.1, y: 0.24}
sparkSizeFactor: {x: 0.032, y: 0.065}
sparkWidth: 0.45
sparkVelocityFactor: 0.9
--- !u!114 &910000000000000002
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -27043,15 +27048,16 @@ MonoBehaviour:
flickerMinInterval: 0.06
flickerMaxInterval: 0.18
sparkAsset: {fileID: 8926484042661614526, guid: e4d341c0a7404c7f90831f00f40a6d23, type: 3}
sparkMinInterval: 0.35
sparkMaxInterval: 1.2
sparkBoundsPadding: 0.06
sparkBoundsScale: {x: 1, y: 1}
sparkMinInterval: 0.3
sparkMaxInterval: 1
sparkBoundsPadding: 0.01
sparkBoundsScale: {x: 0.9, y: 0.92}
sparkCenterOffset: {x: 0, y: 0}
sparkBurstCount: {x: 2, y: 5}
sparkLifetime: {x: 0.08, y: 0.22}
sparkSizeFactor: {x: 0.025, y: 0.055}
sparkVelocityFactor: 1.5
sparkBurstCount: {x: 3, y: 6}
sparkLifetime: {x: 0.1, y: 0.24}
sparkSizeFactor: {x: 0.032, y: 0.065}
sparkWidth: 0.45
sparkVelocityFactor: 0.9
--- !u!114 &910000000000000003
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -27069,15 +27075,16 @@ MonoBehaviour:
flickerMinInterval: 0.06
flickerMaxInterval: 0.18
sparkAsset: {fileID: 8926484042661614526, guid: e4d341c0a7404c7f90831f00f40a6d23, type: 3}
sparkMinInterval: 0.35
sparkMaxInterval: 1.2
sparkBoundsPadding: 0.06
sparkBoundsScale: {x: 1, y: 1}
sparkMinInterval: 0.3
sparkMaxInterval: 1
sparkBoundsPadding: 0.01
sparkBoundsScale: {x: 0.9, y: 0.92}
sparkCenterOffset: {x: 0, y: 0}
sparkBurstCount: {x: 2, y: 5}
sparkLifetime: {x: 0.08, y: 0.22}
sparkSizeFactor: {x: 0.025, y: 0.055}
sparkVelocityFactor: 1.5
sparkBurstCount: {x: 3, y: 6}
sparkLifetime: {x: 0.1, y: 0.24}
sparkSizeFactor: {x: 0.032, y: 0.065}
sparkWidth: 0.45
sparkVelocityFactor: 0.9
--- !u!114 &910000000000000004
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -27095,15 +27102,16 @@ MonoBehaviour:
flickerMinInterval: 0.06
flickerMaxInterval: 0.18
sparkAsset: {fileID: 8926484042661614526, guid: e4d341c0a7404c7f90831f00f40a6d23, type: 3}
sparkMinInterval: 0.35
sparkMaxInterval: 1.2
sparkBoundsPadding: 0.06
sparkBoundsScale: {x: 1, y: 1}
sparkMinInterval: 0.3
sparkMaxInterval: 1
sparkBoundsPadding: 0.01
sparkBoundsScale: {x: 0.9, y: 0.92}
sparkCenterOffset: {x: 0, y: 0}
sparkBurstCount: {x: 2, y: 5}
sparkLifetime: {x: 0.08, y: 0.22}
sparkSizeFactor: {x: 0.025, y: 0.055}
sparkVelocityFactor: 1.5
sparkBurstCount: {x: 3, y: 6}
sparkLifetime: {x: 0.1, y: 0.24}
sparkSizeFactor: {x: 0.032, y: 0.065}
sparkWidth: 0.45
sparkVelocityFactor: 0.9
--- !u!114 &910000000000000005
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -27121,15 +27129,16 @@ MonoBehaviour:
flickerMinInterval: 0.06
flickerMaxInterval: 0.18
sparkAsset: {fileID: 8926484042661614526, guid: e4d341c0a7404c7f90831f00f40a6d23, type: 3}
sparkMinInterval: 0.35
sparkMaxInterval: 1.2
sparkBoundsPadding: 0.06
sparkBoundsScale: {x: 1, y: 1}
sparkMinInterval: 0.3
sparkMaxInterval: 1
sparkBoundsPadding: 0.01
sparkBoundsScale: {x: 0.9, y: 0.92}
sparkCenterOffset: {x: 0, y: 0}
sparkBurstCount: {x: 2, y: 5}
sparkLifetime: {x: 0.08, y: 0.22}
sparkSizeFactor: {x: 0.025, y: 0.055}
sparkVelocityFactor: 1.5
sparkBurstCount: {x: 3, y: 6}
sparkLifetime: {x: 0.1, y: 0.24}
sparkSizeFactor: {x: 0.032, y: 0.065}
sparkWidth: 0.45
sparkVelocityFactor: 0.9
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@@ -7,15 +7,15 @@ namespace AibisDream.FixSystem
{
/// <summary>
/// 模块运行状态的纯表现层:Module Pic 始终显示,文字负责常亮/闪烁/熄灭,
/// 火花依据 Module Pic 的世界包围盒生成在外围并渲染在本体下层。
/// 火花依据 Module Pic 的世界包围盒收束在底边,并渲染在本体下层。
/// </summary>
public class ModuleConditionVisual : MonoBehaviour
{
private static readonly Vector2[] SparkDirections =
{
new(-1f, -1f), new(0f, -1f), new(1f, -1f),
new(-1f, 0f), new(1f, 0f),
new(-1f, 1f), new(0f, 1f), new(1f, 1f)
new(-0.5f, -0.86f),
new(0f, -0.86f),
new(0.5f, -0.86f)
};
[Header("模块引用")]
@@ -28,15 +28,16 @@ namespace AibisDream.FixSystem
[Header("损坏火花")]
[SerializeField] private VisualEffectAsset sparkAsset;
[SerializeField, Min(0.01f)] private float sparkMinInterval = 0.35f;
[SerializeField, Min(0.01f)] private float sparkMaxInterval = 1.2f;
[SerializeField, Min(0f)] private float sparkBoundsPadding = 0.06f;
[SerializeField] private Vector2 sparkBoundsScale = Vector2.one;
[SerializeField, Min(0.01f)] private float sparkMinInterval = 0.3f;
[SerializeField, Min(0.01f)] private float sparkMaxInterval = 1f;
[SerializeField, Min(0f)] private float sparkBoundsPadding = 0.01f;
[SerializeField] private Vector2 sparkBoundsScale = new(0.9f, 0.92f);
[SerializeField] private Vector2 sparkCenterOffset = Vector2.zero;
[SerializeField] private Vector2 sparkBurstCount = new(2f, 5f);
[SerializeField] private Vector2 sparkLifetime = new(0.08f, 0.22f);
[SerializeField] private Vector2 sparkSizeFactor = new(0.025f, 0.055f);
[SerializeField, Min(0f)] private float sparkVelocityFactor = 1.5f;
[SerializeField] private Vector2 sparkBurstCount = new(3f, 6f);
[SerializeField] private Vector2 sparkLifetime = new(0.1f, 0.24f);
[SerializeField] private Vector2 sparkSizeFactor = new(0.032f, 0.065f);
[SerializeField, Min(0.01f)] private float sparkWidth = 0.45f;
[SerializeField, Min(0f)] private float sparkVelocityFactor = 0.9f;
private readonly List<VisualEffect> _sparkEmitters = new();
private Coroutine _textFlickerCoroutine;
@@ -228,6 +229,8 @@ namespace AibisDream.FixSystem
effect.SetVector2("Lifetime Min/Max", sparkLifetime);
if (effect.HasVector2("Size Min/Max"))
effect.SetVector2("Size Min/Max", sparkSizeFactor * sizeBase);
if (effect.HasFloat("Sparkle Width"))
effect.SetFloat("Sparkle Width", sparkWidth);
if (effect.HasVector3("Initial Velocity_vector"))
{
var speed = sizeBase * sparkVelocityFactor;