using System; using System.Collections; using UniRx; using UnityEngine; using UnityEngine.UI; using UnityEngine.AddressableAssets; public class MessageBox : MonoBehaviour { private static MessageBox Instance; public Text Message; public Button SetButton; public Button CloseButton; public Action action; void Start() { SetButton.OnClickAsObservable() .Subscribe(_ => { action?.Invoke(); Destroy(gameObject); }); CloseButton.OnClickAsObservable() .Subscribe(_ => { Destroy(gameObject); }); } public static void Show(string info, Color Color, Action action = null) { Addressables.LoadAssetAsync("MessageBoxPanel").Completed += Loaded => { Instance = Instantiate(Loaded.Result).GetComponent(); Instance.transform.SetParent(UIManager.GetCanvas().transform.Find("Popup"), false); Instance.Message.text = info; Instance.Message.color = Color; Instance.action = action; }; } public static void Show(string info, Color Color, float time) { Addressables.LoadAssetAsync("MessageBoxPanel").Completed += Loaded => { Instance = Instantiate(Loaded.Result).GetComponent(); Instance.transform.SetParent(UIManager.GetCanvas().transform.Find("Popup"), false); Instance. Message.text = info; Instance. Message.color = Color; Instance.StartCoroutine(Instance.ShowCoroutine(time)); }; } IEnumerator ShowCoroutine(float time) { yield return new WaitForSeconds(time); Destroy(gameObject); } }