728x90
반응형
조금 된 일이긴 하지만
위처럼 동전이 살~짝 날아가고 위아래로 움직이는 마음이 좀 아픈 연출을 DOTween으로 구현하고 동전 같은 경우는 Pool에 미리 깔아 두고 사용하고 있었음
#if UNITY_EDITOR
using UnityEditor;
#endif
using System;
using DG.Tweening;
public class Goods : GoodsBase
{
Sequence _effect = null;
public void Init()
{
if (_effect == null)
{
_effect = DOTween.Sequence();
_effect.Append(transform.DOJump(_vec3_end, _jumpPower, _jumpCount, _jumpDuration));
_effect.Append(transform.DOMoveY(_pos_y + _pos_y_range, 0.5f)).OnComplete(() => transform.DOMoveY(_pos_y - _pos_y_range, 1f).SetLoops(-1, LoopType.Yoyo));
}
Managers.UpdateM._updateDropItems -= Move;
Managers.UpdateM._updateDropItems += Move;
}
private void OnDisable()
{
Clear();
}
public override void Clear()
{
if (Managers.Instance != null)
{
Managers.UpdateM._updateDropItems -= Move;
}
if (_effect != null)
{
DOTween.Kill(transform);
_effect = null;
}
transform.position = _vec3_original;
}
#region Functions
public void Move()
{
transform.position = new UnityEngine.Vector3(transform.position.x - UnityEngine.Time.deltaTime * _speed, transform.position.y, transform.position.z);
}
public void GetItems()
{
switch (_item)
{
case Define.DropItems.Gold:
// TODO -> 골드 처리
UnityEngine.Debug.Log("골드 획득");
break;
}
Managers.PoolM.PushToPool(gameObject);
}
#endregion
#if UNITY_EDITOR
[CustomEditor(typeof(Goods))]
public class customEditor : Editor
{
public override void OnInspectorGUI()
{
EditorGUILayout.HelpBox("드롭되는 아이템 설정 [ GoodsBase.cs ]", MessageType.Info);
base.OnInspectorGUI();
}
}
#endif
}
코드는 대충 요딴 식인데
DOTween - Sequence를 사용
여기서 딴거 다 필요 없고 Sequence를 DOTween.Kill(transform); 이렇게 Kill을 했음
아니 이게 [ DOTween.Kill(_effect); or 이것 저것 다 넘겨 봄 ]로 하면 Init()에서 실행하는 Sequence가 너무 이상했음 (날아간 뒤에 위아래 무빙을 안 해버려)
그러다
저 Gold는 DOTween을 사용 중인데 씬에 활성화돼서 DOTween - Sequence가 실행되면서 DDOL에 DOTween이 하나 생기는 걸 이제야 봄...
뭔가 싶어 보니까 Play, Pause의 상황을 볼 수 있고 강제로 Kill도 할 수 있었음
문제는 확실히 제대로 Kill이 안돼서 Gold 오브젝트가 풀에 들어갔다 다시 나오면 Sequence를 계속 새로 만들고 있었음
근데 뭐 별건 없는 게 옆에 Transform 있길래 Kill 할 때 Sequence 자체를 넣지 않고 그냥 Gold의 transform을 넘기니까 Kill이 되었.....
일긴가..
반응형
'Unity > Tips' 카테고리의 다른 글
Unity UI 위치 변경 [ RectTransform - anchoredPosition ] (0) | 2022.02.21 |
---|---|
Unity transform.parent 보단 SetParent()를 사용하자 (0) | 2022.02.20 |
Unity 애니메이션은 코드 없이 CrossFade (3) | 2022.02.13 |
Unity 확장 메서드 사용 (0) | 2022.01.19 |
Unity delegate(대리자)와 Action 간단하지만 명확하게 + 예제 (0) | 2022.01.02 |