using System.Collections; using UnityEngine; using UnityEngine.UI; namespace AibisDream { public class MainUIController : Singleton { 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 protected override void Awake() { base.Awake(); 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 /// /// 隐藏整个UI /// public void HideMainUI() { gameObject.SetActive(false); } /// /// 显示物体 /// /// 协程 public IEnumerator ShowObj(string picName) { _objPanel.gameObject.SetActive(true); _objImage.SwitchImage($"Art/Obj/{picName}"); return _objImage.FadeInSync(1); } /// /// 隐藏物体 /// /// 协程 public IEnumerator HideObj() { yield return _objImage.FadeOutSync(1); _objPanel.SetActive(false); } private void InitChildObj() { var rawTvScene = transform.Find(TVScene).gameObject.GetComponent(); _tvScene = new FadeImage(rawTvScene); var rawBlackImage = transform.Find(BlackImage).gameObject.GetComponent(); _blackImage = new FadeImage(rawBlackImage); var rawNews = transform.Find(NewsImage).gameObject.GetComponent(); _news = new FadeImage(rawNews); _objPanel = transform.Find(ObjPanel).gameObject; var rawObj = _objPanel.transform.GetChild(0).GetComponent(); _objImage = new FadeImage(rawObj); } } }