using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace TBTK{ public class UIMessage : UIScreen { private Vector3 scale=new Vector3(1, 1, 1); private float scaleZoomed=1.15f; public GameObject messageObj; public List msgList=new List(); private static UIMessage instance; public override void Awake () { rectT=gameObject.GetComponent(); Vector3 origin=rectT.anchoredPosition; base.Awake(); canvasGroup.interactable=false; canvasGroup.blocksRaycasts=false; canvasGroup.alpha=1; rectT.anchoredPosition=origin; instance=this; thisObj.SetActive(true); } public override void Start () { for(int i=0; i<5; i++){ if(i==0) msgList.Add(new UIMsgItem(messageObj)); else msgList.Add(new UIMsgItem(UI.Clone(messageObj, "TextMessage"+(msgList.Count+1)))); msgList[i].rootObj.SetActive(false); } } void OnEnable(){ TBTK.onGameMessageE += DisplayMessage ; } void OnDisable(){ TBTK.onGameMessageE -= DisplayMessage ; } public static void DisplayMessage(string msg){ DisplayMessageStack(msg); //DisplayMessageSingle(msg); } #if UNITY_EDITOR //void Update(){ // if(Input.GetKeyDown(KeyCode.Space)){ // Debug.Log("fire from UIMessage.cs"); // DisplayMessageStack("This is a test message "+Random.Range(0, 99999)+" !!"); // } //} #endif public static void DisplayMessageStack(string msg){ instance._DisplayMessageStack(msg); } void _DisplayMessageStack(string msg){ int index=GetUnusedTextIndex(); msgList[index].label.text=msg; StartCoroutine(DisplayItemRoutineStack(msgList[index])); } IEnumerator DisplayItemRoutineStack(UIMsgItem item){ //item.rectT.SetAsFirstSibling(); item.rectT.SetAsLastSibling(); UI.FadeIn(item.canvasG, 0.1f, item.rootObj); StartCoroutine(ScaleRectTRoutineStack(item.rectT, .1f, scale, scale*scaleZoomed)); yield return StartCoroutine(UIControl.WaitForRealSeconds(.1f)); StartCoroutine(ScaleRectTRoutineStack(item.rectT, .25f, scale*scaleZoomed, scale)); yield return StartCoroutine(UIControl.WaitForRealSeconds(2.25f)); UI.FadeOut(item.canvasG, 1.0f, item.rootObj); } IEnumerator ScaleRectTRoutineStack(RectTransform rectt, float dur, Vector3 startS, Vector3 endS){ float timeMul=1f/dur; float duration=0; while(duration<1){ rectt.localScale=Vector3.Lerp(startS, endS, duration); duration+=Time.unscaledDeltaTime*timeMul; yield return null; } } private int GetUnusedTextIndex(){ for(int i=0; i(); rectT=rootObj.GetComponent(); label=rootObj.GetComponent(); canvasG.interactable=false; canvasG.blocksRaycasts=false; } } } }