using System; using DG.Tweening; using DragonSoul.Shared; using TMPro; using UnityEngine; using UnityEngine.Serialization; using UnityEngine.UI; namespace UnityTest.ZXL { public class DialogueUI : UI { public DialogueStr left; public DialogueStr right; public Button btnNext; private ETTask task; public override void OnInit() { base.OnInit(); btnNext.onClick.AddListener(ClickNext); btnNext.gameObject.SetActive(false); left.content.text = ""; left.role.text = ""; right.content.text = ""; right.role.text = ""; } private void ClickNext() { task.SetResult(); } public async ETTask StartAnDialogueAsync(DialogueData2 data) { DialogueRoleManager.Instance().HideAllRole(); // 隐藏所有 task = ETTask.Create(); var leftData = data.left; var rightData = data.right; var list = DialogueRoleManager.Instance().ShowRole(leftData.dialogueType, rightData.dialogueType); list[0].enabled = true; list[1].enabled = false; left.role.text = leftData.dialogueType.ToString(); await left.content.WaitDoTMPText(leftData.content, ""); list[0].enabled = false; list[1].enabled = true; right.role.text = rightData.dialogueType.ToString(); await right.content.WaitDoTMPText(rightData.content, ""); btnNext.gameObject.SetActive(true); await task; // ResetAll left.content.text = ""; left.role.text = ""; right.content.text = ""; right.role.text = ""; btnNext.gameObject.SetActive(false); DialogueRoleManager.Instance().HideAllRole(); // 隐藏所有 } // public async ETTask StartLeftDialogueAsync(DialogueContentData leftData) // { // DialogueRoleManager.Instance().HideAllRole(); // 隐藏所有 // left.role.text = leftData.dialogueType.ToString(); // left.content.text = ""; // // DialogueRoleManager.Instance().ShowRole(leftData.dialogueType, leftData.dialogueType); // await left.content.WaitDoTMPText(leftData.content, ""); // } // // public async ETTask StartRightDialogueAsync(DialogueContentData rightData) // { // DialogueRoleManager.Instance().HideAllRole(); // 隐藏所有 // right.role.text = rightData.dialogueType.ToString(); // right.content.text = ""; // // DialogueRoleManager.Instance().ShowRole(rightData.dialogueType, rightData.dialogueType); // await right.content.WaitDoTMPText(rightData.content, ""); // } private void OnDisable() { DialogueRoleManager.Instance().HideAllRole(); } } [System.Serializable] public struct DialogueStr { public TextMeshProUGUI role; public TextMeshProUGUI content; public RawImage dialogueType; } }