using System.Collections; using AibisDream.Kit; using AibisDream.Utility; using DG.Tweening; using UnityEngine; namespace AibisDream { public class SpriteShowcase : Singleton { [SerializeField] private SpriteRenderer _spriteRenderer; [SerializeField] private SpriteRenderer _backgroundSpriteRenderer; public override void OnSingletonInit() { // 初始状态:隐藏 _spriteRenderer.gameObject.SetActive(false); _spriteRenderer.SetAlpha(0); } /// /// 显示物体 /// /// 图片名称(相对于 Resources/Art/Obj/ 的路径) /// 协程 public IEnumerator ShowObj(string picName, float duration = 1) { _spriteRenderer.gameObject.SetActive(true); // 切换图片 var newSprite = Resources.Load($"Art/Obj/{picName}"); _spriteRenderer.sprite = newSprite; // 然后淡入 yield return _spriteRenderer.DOFade(1, duration).WaitForCompletion(); } /// /// 隐藏物体 /// /// 协程 public IEnumerator HideObj(float duration = 1) { yield return _spriteRenderer.DOFade(0, duration).WaitForCompletion(); _spriteRenderer.gameObject.SetActive(false); } /// /// 淡入(异步协程版本) /// /// 淡入时长 /// 协程 public IEnumerator FadeInAsync(float duration = 1) { if (_backgroundSpriteRenderer == null) yield break; _backgroundSpriteRenderer.gameObject.SetActive(true); yield return _backgroundSpriteRenderer.DOFade(1, duration).WaitForCompletion(); } /// /// 淡出(异步协程版本) /// /// 淡出时长 /// 协程 public IEnumerator FadeOutAsync(float duration = 1) { if (_backgroundSpriteRenderer == null) yield break; _backgroundSpriteRenderer.gameObject.SetActive(true); yield return _backgroundSpriteRenderer.DOFade(0, duration).WaitForCompletion(); _backgroundSpriteRenderer.gameObject.SetActive(false); } /// /// 淡入(同步版本,启动协程) /// /// 淡入时长 public void FadeInSync(float duration = 1) { StartCoroutine(FadeInAsync(duration)); } /// /// 淡出(同步版本,启动协程) /// /// 淡出时长 public void FadeOutSync(float duration = 1) { StartCoroutine(FadeOutAsync(duration)); } } }