Skip to content

Commit 554d595

Browse files
committed
add new effect control
1 parent db6016d commit 554d595

File tree

8 files changed

+249
-3
lines changed

8 files changed

+249
-3
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
### Add the lines below to `Packages/manifest.json`
66

7-
for version `1.0.2`
7+
for version `1.0.3`
88
```csharp
9-
"com.virtuesky.scriptableobject.architecture":"https://github.com/VirtueSky/SO.Architecture.git#1.0.2",
9+
"com.virtuesky.scriptableobject.architecture":"https://github.com/VirtueSky/SO.Architecture.git#1.0.3",
1010
```

VirtueSky/Misc/EffectAppear.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using DG.Tweening;
2+
using UnityEngine;
3+
4+
public class EffectAppear : MonoBehaviour
5+
{
6+
[Range(0, 2f)] public float TimeScale = .7f;
7+
public Ease EaseType;
8+
public Vector3 fromScale;
9+
private Vector3 CurrentScale;
10+
11+
public void Awake()
12+
{
13+
CurrentScale = transform.localScale;
14+
}
15+
16+
public void OnEnable()
17+
{
18+
transform.localScale = fromScale;
19+
DoEffect();
20+
}
21+
22+
public void DoEffect()
23+
{
24+
if (!gameObject.activeInHierarchy) return;
25+
transform.DOScale(CurrentScale, TimeScale).SetEase(EaseType);
26+
}
27+
}

VirtueSky/Misc/EffectAppear.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

VirtueSky/Misc/EffectZoomInOut.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using System;
2+
using DG.Tweening;
3+
using DG.Tweening.Core;
4+
using DG.Tweening.Plugins.Options;
5+
using UnityEngine;
6+
7+
public class EffectZoomInOut : MonoBehaviour
8+
{
9+
public Vector3 CurrentScale;
10+
[Range(0, 2f)] public float TimeDelay;
11+
[Range(.1f, 2f)] public float SizeScale = .1f;
12+
[Range(0, 2f)] public float TimeScale = .7f;
13+
14+
private Sequence _sequence;
15+
private TweenerCore<Vector3, Vector3, VectorOptions> _tweenerCore;
16+
17+
public void Awake()
18+
{
19+
CurrentScale = transform.localScale;
20+
}
21+
22+
public void OnEnable()
23+
{
24+
transform.localScale = CurrentScale;
25+
DoEffect(SizeScale, false);
26+
}
27+
28+
private void OnDisable()
29+
{
30+
_sequence?.Kill();
31+
_tweenerCore?.Kill();
32+
}
33+
34+
public void DoEffect(float sizeScale, bool delay)
35+
{
36+
if (!gameObject.activeInHierarchy) return;
37+
_sequence = DOTween.Sequence().AppendInterval(TimeDelay * (delay ? 1 : 0)).AppendCallback(() =>
38+
{
39+
_tweenerCore = transform.DOScale(
40+
new Vector3(transform.localScale.x + sizeScale, transform.localScale.y + sizeScale,
41+
transform.localScale.z),
42+
TimeScale).SetEase(Ease.Linear).OnComplete(() => { DoEffect(-sizeScale, !delay); });
43+
});
44+
}
45+
}

VirtueSky/Misc/EffectZoomInOut.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

VirtueSky/Misc/UIEffect.cs

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
using DG.Tweening;
2+
using Sirenix.OdinInspector;
3+
using UnityEngine;
4+
5+
public class UIEffect : MonoBehaviour
6+
{
7+
[Header("Data config")] [SerializeField]
8+
private AnimType animType;
9+
10+
[SerializeField] private bool playOnAwake = true;
11+
[SerializeField] private float animTime = .5f;
12+
[SerializeField] private float delayAnimTime;
13+
14+
[SerializeField] private Vector3 fromScale = Vector3.one;
15+
[SerializeField] private Vector3 saveLocalScale = Vector3.one;
16+
17+
[Header("Shake Effect")] [SerializeField]
18+
private float strength = 3f;
19+
20+
[Header("Move Effect")] [ShowIf(nameof(animType), AnimType.Move)] [SerializeField]
21+
private MoveType _moveType;
22+
23+
[ShowIf(nameof(IsShowAttributeFromPosition))] [SerializeField]
24+
private Vector3 fromPosition;
25+
26+
[ShowIf(nameof(IsShowAttributesMoveDirection))] [SerializeField]
27+
private DirectionType directionType;
28+
29+
[ShowIf(nameof(IsShowAttributesMoveDirection))] [SerializeField]
30+
private float offset;
31+
32+
[ShowIf(nameof(animType), AnimType.Move)] [ReadOnly]
33+
private Vector3 _saveAnchorPosition;
34+
35+
private RectTransform _rectTransform;
36+
private Sequence _sequence;
37+
38+
private bool IsShowAttributeFromPosition => animType == AnimType.Move && _moveType == MoveType.Vector3;
39+
private bool IsShowAttributesMoveDirection => animType == AnimType.Move && _moveType == MoveType.Direction;
40+
41+
public void Awake()
42+
{
43+
_rectTransform = GetComponent<RectTransform>();
44+
_saveAnchorPosition = _rectTransform.anchoredPosition;
45+
saveLocalScale = _rectTransform.localScale;
46+
}
47+
48+
public void OnEnable()
49+
{
50+
if (playOnAwake)
51+
{
52+
PlayAnim();
53+
}
54+
}
55+
56+
public void PlayAnim()
57+
{
58+
switch (animType)
59+
{
60+
case AnimType.OutBack:
61+
transform.localScale = fromScale;
62+
_sequence = DOTween.Sequence().OnStart(() => transform.localScale = fromScale).SetDelay(delayAnimTime)
63+
.Append(transform.DOScale(Vector3.one, animTime).OnKill(() => transform.localScale = saveLocalScale)
64+
.SetEase(Ease.OutBack));
65+
break;
66+
case AnimType.Shake:
67+
_sequence = DOTween.Sequence().SetDelay(delayAnimTime)
68+
.Append(transform.DOShakeRotation(animTime, strength).SetEase(Ease.Linear));
69+
break;
70+
case AnimType.Move:
71+
_rectTransform.anchoredPosition = _saveAnchorPosition;
72+
switch (_moveType)
73+
{
74+
case MoveType.Vector3:
75+
transform.DOLocalMove(_saveAnchorPosition, animTime).SetDelay(delayAnimTime)
76+
.SetEase(Ease.Linear);
77+
break;
78+
case MoveType.Direction:
79+
switch (directionType)
80+
{
81+
case DirectionType.Up:
82+
_sequence = DOTween.Sequence().SetDelay(delayAnimTime).Append(transform
83+
.DOLocalMoveY(transform.localPosition.y + offset, animTime).SetEase(Ease.InBack));
84+
break;
85+
case DirectionType.Down:
86+
_sequence = DOTween.Sequence().SetDelay(delayAnimTime).Append(transform
87+
.DOLocalMoveY(transform.localPosition.y - offset, animTime).SetEase(Ease.InBack));
88+
break;
89+
case DirectionType.Left:
90+
_sequence = DOTween.Sequence().SetDelay(delayAnimTime).Append(transform
91+
.DOLocalMoveX(transform.localPosition.x - offset, animTime).SetEase(Ease.InBack));
92+
break;
93+
case DirectionType.Right:
94+
_sequence = DOTween.Sequence().SetDelay(delayAnimTime).Append(transform
95+
.DOLocalMoveX(transform.localPosition.x + offset, animTime).SetEase(Ease.InBack));
96+
break;
97+
}
98+
99+
break;
100+
}
101+
102+
break;
103+
}
104+
}
105+
106+
public void OnDisable()
107+
{
108+
Reset();
109+
_sequence?.Kill();
110+
}
111+
112+
113+
public void Reset()
114+
{
115+
if (!Application.isPlaying) return;
116+
_rectTransform = GetComponent<RectTransform>();
117+
_rectTransform.anchoredPosition = _saveAnchorPosition;
118+
_rectTransform.localScale = saveLocalScale;
119+
}
120+
}
121+
122+
public enum AnimType
123+
{
124+
OutBack,
125+
Shake,
126+
Move,
127+
}
128+
129+
public enum MoveType
130+
{
131+
Vector3,
132+
Direction,
133+
}
134+
135+
public enum DirectionType
136+
{
137+
Up,
138+
Down,
139+
Left,
140+
Right,
141+
}

VirtueSky/Misc/UIEffect.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "com.virtuesky.scriptableobject.architecture",
33
"displayName": "ScriptableObjectArchitecture",
44
"description": "ScriptableObjectArchitecture for unity",
5-
"version": "1.0.2",
5+
"version": "1.0.3",
66
"unity": "2021.3",
77
"category": "virtuesky",
88
"keywords": [

0 commit comments

Comments
 (0)