using System.Collections; using DG.Tweening; using UnityEngine; namespace AibisDream { public class FadeSprite : IFadeObject { private readonly SpriteRenderer _spriteRenderer; public FadeSprite(SpriteRenderer spriteRenderer) { _spriteRenderer = spriteRenderer; } public void FadeIn(float duration) { _spriteRenderer.gameObject.SetActive(true); _spriteRenderer.DOFade(1, duration); } public void FadeOut(float duration) { _spriteRenderer.DOFade(0, duration).onComplete += () => { _spriteRenderer.gameObject.SetActive(false); }; } public IEnumerator FadeInSync(float duration) { _spriteRenderer.gameObject.SetActive(true); var tweener = _spriteRenderer.DOFade(1, duration); while (tweener.active && !tweener.IsComplete()) { yield return null; } } public IEnumerator FadeOutSync(float duration) { var tweener = _spriteRenderer.DOFade(0, duration); while (tweener.active && !tweener.IsComplete()) { yield return null; } _spriteRenderer.gameObject.SetActive(false); } public void Show() { _spriteRenderer.gameObject.SetActive(true); _spriteRenderer.color = Color.white; } public void Hide() { _spriteRenderer.color = Color.clear; _spriteRenderer.gameObject.SetActive(false); } public void SwitchImage(string imagePath) { _spriteRenderer.sprite = Resources.Load("Art/Character/" + imagePath); } public IEnumerator MoveTo(Vector3 targetPos, float duration) { var tweenerCore = _spriteRenderer.transform.DOMove(targetPos, duration); if (!tweenerCore.IsComplete()) { yield return null; } } } }