LaboratoryProtection/Assets/UnityTest/ZXL/Scripts/UI/DialogueUI.cs

128 lines
4.3 KiB
C#
Raw Normal View History

2023-09-13 02:20:37 +08:00
using System;
using DG.Tweening;
using DragonSoul.Shared;
2023-09-13 02:20:37 +08:00
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
namespace UnityTest.ZXL
{
2023-09-13 15:31:44 +08:00
public class DialogueUI : UI
2023-09-13 02:20:37 +08:00
{
public DialogueStr left;
2023-10-05 17:03:37 +08:00
public DialogueStr left1;
2023-09-13 02:20:37 +08:00
public DialogueStr right;
public Button btnNext;
private ETTask task;
2023-09-13 02:20:37 +08:00
public override void OnInit()
{
base.OnInit();
btnNext.onClick.AddListener(ClickNext);
btnNext.gameObject.SetActive(false);
left.content.text = "";
left.role.text = "";
2023-10-05 17:03:37 +08:00
left1.content.text = "";
left1.role.text = "";
right.content.text = "";
right.role.text = "";
}
private void ClickNext()
{
task.SetResult();
}
public async ETTask StartAnDialogueAsync(DialogueData2 data)
2023-09-13 02:20:37 +08:00
{
2023-09-13 15:04:19 +08:00
DialogueRoleManager.Instance().HideAllRole(); // 隐藏所有
task = ETTask.Create();
var leftData = data.left;
var rightData = data.right;
var list = DialogueRoleManager.Instance().ShowRole(leftData.dialogueType, rightData.dialogueType);
2023-09-13 02:20:37 +08:00
2023-10-05 17:03:37 +08:00
var leftParent = left.role.transform.parent;
var left1Parent = left1.role.transform.parent.parent;
if (data.index != 2)
{
// left0
list[0].enabled = true;
list[1].enabled = false;
leftParent.gameObject.SetActive(true);
left1Parent.gameObject.SetActive(false);
left.role.text = leftData.dialogueType.ToString();
right.role.text = rightData.dialogueType.ToString();
await left.content.WaitDoTMPText(leftData.content, data.left.clipName);
}
else
{
// left1
list[0].enabled = true;
list[1].enabled = false;
leftParent.gameObject.SetActive(false);
left1Parent.gameObject.SetActive(true);
left1.role.text = leftData.dialogueType.ToString();
right.role.text = rightData.dialogueType.ToString();
await left1.content.WaitDoTMPText(leftData.content, data.left.clipName);
}
2023-09-13 02:20:37 +08:00
list[0].enabled = false;
list[1].enabled = true;
2023-10-08 18:04:13 +08:00
list[0].Play("Take 001", -1, 0f);
list[0].Update(0f);
2023-09-27 23:28:03 +08:00
await right.content.WaitDoTMPText(rightData.content, data.right.clipName);
2023-09-19 09:50:35 +08:00
list[1].enabled = false;
2023-10-08 18:04:13 +08:00
list[1].Play("Take 001", -1, 0f);
list[1].Update(0f);
btnNext.gameObject.SetActive(true);
await task;
2023-09-13 15:04:19 +08:00
// ResetAll
left.content.text = "";
left.role.text = "";
right.content.text = "";
right.role.text = "";
btnNext.gameObject.SetActive(false);
DialogueRoleManager.Instance().HideAllRole(); // 隐藏所有
2023-09-13 02:20:37 +08:00
}
// 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, "");
// }
2023-09-13 15:04:19 +08:00
private void OnDisable()
2023-09-13 02:20:37 +08:00
{
2023-09-13 15:04:19 +08:00
DialogueRoleManager.Instance().HideAllRole();
2023-09-13 02:20:37 +08:00
}
}
[System.Serializable]
public struct DialogueStr
{
public TextMeshProUGUI role;
public TextMeshProUGUI content;
public RawImage dialogueType;
}
}