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