Files
aibis-dream/Assets/Scripts/Utility/FadeSprite.cs
T
2024-09-05 02:44:23 +08:00

76 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using DG.Tweening.Core;
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<Sprite>("Art/Character/" + imagePath);
}
public IEnumerator MoveTo(Vector3 targetPos, float duration)
{
var tweenerCore = _spriteRenderer.transform.DOMove(targetPos, duration);
if (!tweenerCore.IsComplete())
{
yield return null;
}
}
}
}