Files
aibis-dream/Assets/Scripts/UI/MainUIViewer.cs
T
2024-09-19 01:12:10 +08:00

132 lines
3.4 KiB
C#

using System.Collections;
using AibisDream.Kit;
using UnityEngine;
using UnityEngine.UI;
namespace AibisDream
{
public class MainUIController : Singleton<MainUIController>
{
private const string TVScene = "TV Scene";
private const string BlackImage = "Fade Image";
private const string NewsImage = "News";
private const string ObjPanel = "Show Obj";
#region 主场景图片
private FadeImage _tvScene;
private FadeImage _blackImage;
private FadeImage _news;
private GameObject _objPanel;
private FadeImage _objImage;
#endregion
public override void OnSingletonInit()
{
InitChildObj();
}
#region 基本淡入淡出
public void FadeIn(float duration)
{
_blackImage.FadeIn(duration);
}
public IEnumerator FadeInSync(float duration)
{
return _blackImage.FadeInSync(duration);
}
public void FadeOut(float duration)
{
_blackImage.FadeOut(duration);
}
public IEnumerator FadeOutSync(float duration)
{
return _blackImage.FadeOutSync(duration);
}
#endregion
#region TV场景淡入淡出
public void TVFadeIn(float duration)
{
_tvScene.FadeIn(duration);
_news.FadeIn(duration);
}
public IEnumerator TVFadeInSync(float duration)
{
_news.FadeIn(duration);
return _tvScene.FadeInSync(duration);
}
public void TVFadeOut(float duration)
{
_tvScene.FadeOut(duration);
_news.FadeOut(duration);
}
public IEnumerator TVFadeOutSync(float duration)
{
_news.FadeOut(duration);
return _tvScene.FadeOutSync(duration);
}
public void SwitchTV(string newsName)
{
_news.SwitchImage($"Art/Background/{newsName}");
}
#endregion
/// <summary>
/// 隐藏整个UI
/// </summary>
public void HideMainUI()
{
gameObject.SetActive(false);
}
/// <summary>
/// 显示物体
/// </summary>
/// <returns>协程</returns>
public IEnumerator ShowObj(string picName)
{
_objPanel.gameObject.SetActive(true);
_objImage.SwitchImage($"Art/Obj/{picName}");
return _objImage.FadeInSync(1);
}
/// <summary>
/// 隐藏物体
/// </summary>
/// <returns>协程</returns>
public IEnumerator HideObj()
{
yield return _objImage.FadeOutSync(1);
_objPanel.SetActive(false);
}
private void InitChildObj()
{
var rawTvScene = transform.Find(TVScene).gameObject.GetComponent<Image>();
_tvScene = new FadeImage(rawTvScene);
var rawBlackImage = transform.Find(BlackImage).gameObject.GetComponent<Image>();
_blackImage = new FadeImage(rawBlackImage);
var rawNews = transform.Find(NewsImage).gameObject.GetComponent<Image>();
_news = new FadeImage(rawNews);
_objPanel = transform.Find(ObjPanel).gameObject;
var rawObj = _objPanel.transform.GetChild(0).GetComponent<Image>();
_objImage = new FadeImage(rawObj);
}
}
}