work_branch #5
@@ -222,8 +222,8 @@ ParticleSystem:
|
||||
startColor:
|
||||
serializedVersion: 2
|
||||
minMaxState: 2
|
||||
minColor: {r: 1, g: 0.960782, b: 0.504717, a: 1}
|
||||
maxColor: {r: 1, g: 0.8388864, b: 0.0141509175, a: 1}
|
||||
minColor: {r: 0.5766447, g: 1, b: 0.5058824, a: 1}
|
||||
maxColor: {r: 0.17530738, g: 1, b: 0.015686274, a: 1}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||
@@ -4888,7 +4888,7 @@ ParticleSystem:
|
||||
vectorLabel1_3: W
|
||||
--- !u!199 &5285646635033452282
|
||||
ParticleSystemRenderer:
|
||||
serializedVersion: 6
|
||||
serializedVersion: 7
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
@@ -4907,6 +4907,8 @@ ParticleSystemRenderer:
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
@@ -4928,9 +4930,11 @@ ParticleSystemRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_RenderMode: 0
|
||||
m_MeshDistribution: 0
|
||||
m_SortMode: 0
|
||||
@@ -4962,7 +4966,6 @@ ParticleSystemRenderer:
|
||||
m_MeshWeighting1: 1
|
||||
m_MeshWeighting2: 1
|
||||
m_MeshWeighting3: 1
|
||||
m_MaskInteraction: 0
|
||||
--- !u!1 &2114415160723529283
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -5188,8 +5191,8 @@ ParticleSystem:
|
||||
startColor:
|
||||
serializedVersion: 2
|
||||
minMaxState: 2
|
||||
minColor: {r: 1, g: 0.960782, b: 0.504717, a: 1}
|
||||
maxColor: {r: 1, g: 0.8388864, b: 0.0141509175, a: 1}
|
||||
minColor: {r: 0.59607846, g: 0.9176471, b: 0.15686275, a: 1}
|
||||
maxColor: {r: 0.4431373, g: 0.7843138, b: 0.13333334, a: 1}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||
@@ -9724,7 +9727,7 @@ ParticleSystem:
|
||||
vectorLabel1_3: W
|
||||
--- !u!199 &4180933505945455149
|
||||
ParticleSystemRenderer:
|
||||
serializedVersion: 6
|
||||
serializedVersion: 7
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
@@ -9743,6 +9746,8 @@ ParticleSystemRenderer:
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
@@ -9764,9 +9769,11 @@ ParticleSystemRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_RenderMode: 0
|
||||
m_MeshDistribution: 0
|
||||
m_SortMode: 0
|
||||
@@ -9798,7 +9805,6 @@ ParticleSystemRenderer:
|
||||
m_MeshWeighting1: 1
|
||||
m_MeshWeighting2: 1
|
||||
m_MeshWeighting3: 1
|
||||
m_MaskInteraction: 0
|
||||
--- !u!1 &6645571033960280413
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -10021,8 +10027,8 @@ ParticleSystem:
|
||||
startColor:
|
||||
serializedVersion: 2
|
||||
minMaxState: 2
|
||||
minColor: {r: 1, g: 0.960782, b: 0.504717, a: 1}
|
||||
maxColor: {r: 1, g: 0.8388864, b: 0.0141509175, a: 1}
|
||||
minColor: {r: 0.5071181, g: 1, b: 0.5058824, a: 1}
|
||||
maxColor: {r: 0.2311385, g: 1, b: 0.015686274, a: 1}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||
@@ -14615,7 +14621,7 @@ ParticleSystem:
|
||||
vectorLabel1_3: W
|
||||
--- !u!199 &3640578483788987625
|
||||
ParticleSystemRenderer:
|
||||
serializedVersion: 6
|
||||
serializedVersion: 7
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
@@ -14634,6 +14640,8 @@ ParticleSystemRenderer:
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
@@ -14655,9 +14663,11 @@ ParticleSystemRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_RenderMode: 0
|
||||
m_MeshDistribution: 0
|
||||
m_SortMode: 0
|
||||
@@ -14689,7 +14699,6 @@ ParticleSystemRenderer:
|
||||
m_MeshWeighting1: 1
|
||||
m_MeshWeighting2: 1
|
||||
m_MeshWeighting3: 1
|
||||
m_MaskInteraction: 0
|
||||
--- !u!1 &8019872819181951081
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -14912,8 +14921,8 @@ ParticleSystem:
|
||||
startColor:
|
||||
serializedVersion: 2
|
||||
minMaxState: 2
|
||||
minColor: {r: 1, g: 0.960782, b: 0.504717, a: 1}
|
||||
maxColor: {r: 1, g: 0.8388864, b: 0.0141509175, a: 1}
|
||||
minColor: {r: 0.62127614, g: 1, b: 0.5058824, a: 1}
|
||||
maxColor: {r: 0.1546962, g: 1, b: 0.015686274, a: 1}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||
@@ -19507,7 +19516,7 @@ ParticleSystem:
|
||||
vectorLabel1_3: W
|
||||
--- !u!199 &3389323591799672497
|
||||
ParticleSystemRenderer:
|
||||
serializedVersion: 6
|
||||
serializedVersion: 7
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
@@ -19526,6 +19535,8 @@ ParticleSystemRenderer:
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
@@ -19548,9 +19559,11 @@ ParticleSystemRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_RenderMode: 0
|
||||
m_MeshDistribution: 0
|
||||
m_SortMode: 0
|
||||
@@ -19582,4 +19595,3 @@ ParticleSystemRenderer:
|
||||
m_MeshWeighting1: 1
|
||||
m_MeshWeighting2: 1
|
||||
m_MeshWeighting3: 1
|
||||
m_MaskInteraction: 0
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 69d4557372f902f448f5acb3b8e3cbeb
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,126 +0,0 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using PrimeTween;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Darkmatter.Features.Mainmenu.Buttons
|
||||
{
|
||||
public enum ButtonEffectType
|
||||
{
|
||||
None,
|
||||
Scale,
|
||||
PunchScale,
|
||||
ShakePosition,
|
||||
ShakeRotation,
|
||||
Bounce,
|
||||
Pulse,
|
||||
Wobble,
|
||||
Flip,
|
||||
Spin
|
||||
}
|
||||
|
||||
[RequireComponent(typeof(Button))]
|
||||
[DisallowMultipleComponent]
|
||||
public class ButtonEffect : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private ButtonEffectType effect = ButtonEffectType.Scale;
|
||||
[SerializeField] private RectTransform target;
|
||||
|
||||
[Header("Shared")]
|
||||
[SerializeField, Min(0.01f)] private float duration = 0.3f;
|
||||
[SerializeField] private Ease ease = Ease.OutBack;
|
||||
[SerializeField, Min(0f)] private float loopInterval = 0.5f;
|
||||
|
||||
[Header("Effect Tuning")]
|
||||
[SerializeField] private float scaleAmount = 1.15f;
|
||||
[SerializeField] private float shakeStrength = 10f;
|
||||
[SerializeField] private float rotationStrength = 15f;
|
||||
|
||||
private Vector3 baseScale;
|
||||
private Vector3 baseEuler;
|
||||
private Vector3 baseLocalPosition;
|
||||
private Tween currentTween;
|
||||
private CancellationTokenSource loopCts;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (target == null) target = transform as RectTransform;
|
||||
baseScale = target.localScale;
|
||||
baseEuler = target.localEulerAngles;
|
||||
baseLocalPosition = target.localPosition;
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
loopCts = CancellationTokenSource.CreateLinkedTokenSource(this.GetCancellationTokenOnDestroy());
|
||||
PlayLoopAsync(loopCts.Token).Forget();
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
loopCts?.Cancel();
|
||||
loopCts?.Dispose();
|
||||
loopCts = null;
|
||||
currentTween.Stop();
|
||||
}
|
||||
|
||||
private async UniTaskVoid PlayLoopAsync(CancellationToken token)
|
||||
{
|
||||
while (!token.IsCancellationRequested)
|
||||
{
|
||||
Play();
|
||||
if (currentTween.isAlive)
|
||||
{
|
||||
await UniTask.WaitWhile(() => currentTween.isAlive, cancellationToken: token);
|
||||
}
|
||||
if (loopInterval > 0f)
|
||||
{
|
||||
await UniTask.Delay(TimeSpan.FromSeconds(loopInterval), cancellationToken: token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Play()
|
||||
{
|
||||
currentTween.Stop();
|
||||
target.localScale = baseScale;
|
||||
target.localEulerAngles = baseEuler;
|
||||
target.localPosition = baseLocalPosition;
|
||||
|
||||
switch (effect)
|
||||
{
|
||||
case ButtonEffectType.None:
|
||||
break;
|
||||
case ButtonEffectType.Scale:
|
||||
currentTween = Tween.Scale(target, baseScale * scaleAmount, duration, ease, 2, CycleMode.Yoyo);
|
||||
break;
|
||||
case ButtonEffectType.PunchScale:
|
||||
currentTween = Tween.PunchScale(target, Vector3.one * (scaleAmount - 1f), duration);
|
||||
break;
|
||||
case ButtonEffectType.ShakePosition:
|
||||
currentTween = Tween.ShakeLocalPosition(target, Vector3.one * shakeStrength, duration);
|
||||
break;
|
||||
case ButtonEffectType.ShakeRotation:
|
||||
currentTween = Tween.ShakeLocalRotation(target, new Vector3(0f, 0f, rotationStrength), duration);
|
||||
break;
|
||||
case ButtonEffectType.Bounce:
|
||||
currentTween = Tween.Scale(target, baseScale * scaleAmount, duration, Ease.OutBounce, 2, CycleMode.Yoyo);
|
||||
break;
|
||||
case ButtonEffectType.Pulse:
|
||||
currentTween = Tween.Scale(target, baseScale * scaleAmount, duration * 0.5f, Ease.InOutSine, 4, CycleMode.Yoyo);
|
||||
break;
|
||||
case ButtonEffectType.Wobble:
|
||||
currentTween = Tween.LocalEulerAngles(target, baseEuler, baseEuler + new Vector3(0f, 0f, rotationStrength), duration * 0.25f, Ease.InOutSine, 4, CycleMode.Yoyo);
|
||||
break;
|
||||
case ButtonEffectType.Flip:
|
||||
currentTween = Tween.LocalEulerAngles(target, baseEuler, baseEuler + new Vector3(0f, 360f, 0f), duration, ease);
|
||||
break;
|
||||
case ButtonEffectType.Spin:
|
||||
currentTween = Tween.LocalEulerAngles(target, baseEuler, baseEuler + new Vector3(0f, 0f, 360f), duration, ease);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0e5e02a6b9f322a4d893b3e45a3a2967
|
||||
@@ -9,7 +9,10 @@ namespace Darkmatter.Features.Mainmenu
|
||||
{
|
||||
public class MainmenuView : MonoBehaviour
|
||||
{
|
||||
[Header("UI Elements")]
|
||||
[SerializeField] private Button playBtn;
|
||||
[SerializeField] private ParticleSystem playBtnParticle;
|
||||
|
||||
[SerializeField] private SkeletonGraphic mascotSkeletonGraphic;
|
||||
|
||||
[Header("Mascot Animations")]
|
||||
@@ -58,6 +61,14 @@ namespace Darkmatter.Features.Mainmenu
|
||||
|
||||
private void OnPlayBtnClicked()
|
||||
{
|
||||
playBtn.interactable = false;
|
||||
PlayBtnSequenceAsync(this.GetCancellationTokenOnDestroy()).Forget();
|
||||
}
|
||||
|
||||
private async UniTaskVoid PlayBtnSequenceAsync(CancellationToken token)
|
||||
{
|
||||
playBtnParticle.Play();
|
||||
await UniTask.WaitUntil(() => !playBtnParticle.IsAlive(true), cancellationToken: token);
|
||||
OnPlayBtnClickedEvent?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6cc101d67503b4fc09ebcac4fecbcea9
|
||||
File diff suppressed because one or more lines are too long
@@ -8,7 +8,7 @@ ScriptedImporter:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
|
||||
generateWrapperCode: 1
|
||||
generateWrapperCode: 0
|
||||
wrapperCodePath: Assets/Darkmatter/Code/Services/Inputs/Generated/GameInputs.cs
|
||||
wrapperClassName:
|
||||
wrapperCodeNamespace:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user