using UnityEditor; using UnityEngine; using UnityEngine.UIElements; public class DialogueBox : MonoBehaviour { string ActorName = "ActorName"; string DialogueText = "DialogueText"; TextElement[] Buttons = new TextElement[5]; public void OnEnable() { var uiDocument = GetComponent<UIDocument>(); VisualElement root = uiDocument.rootVisualElement; var visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/UI/DialogueBox/DialogueBox.uxml"); var styleSheet = AssetDatabase.LoadAssetAtPath<StyleSheet>("Assets/UI/DialogueBox/DialogueBox.uss"); VisualElement tree = visualTree.CloneTree(); tree.styleSheets.Add(styleSheet); root.Add(tree); Buttons[0] = GetComponent<UIDocument>().rootVisualElement.Q<Button>("Button1"); Buttons[1] = GetComponent<UIDocument>().rootVisualElement.Q<Button>("Button2"); Buttons[2] = GetComponent<UIDocument>().rootVisualElement.Q<Button>("Button3"); Buttons[3] = GetComponent<UIDocument>().rootVisualElement.Q<Button>("Button4"); Buttons[4] = GetComponent<UIDocument>().rootVisualElement.Q<Button>("Button5"); setActor(ActorName); setText(DialogueText); Buttons[0].RegisterCallback<MouseUpEvent>((e) => { GetComponent<StateMachine>().nextNote(0); }); Buttons[1].RegisterCallback<MouseUpEvent>((e) => { GetComponent<StateMachine>().nextNote(1); }); Buttons[2].RegisterCallback<MouseUpEvent>((e) => { GetComponent<StateMachine>().nextNote(2); }); Buttons[3].RegisterCallback<MouseUpEvent>((e) => { GetComponent<StateMachine>().nextNote(3); }); Buttons[4].RegisterCallback<MouseUpEvent>((e) => { GetComponent<StateMachine>().nextNote(4); }); } public void setActor(string actor) { GetComponent<UIDocument>().rootVisualElement.Q<Label>("Actor").text = actor; } public void setText(string text) { GetComponent<UIDocument>().rootVisualElement.Q<TextElement>("Dialogue").text = text; } public void setTransitions(StateMachine.Transition[] transitions) { for (int i = 0; i < 5; i++) { if (i < transitions.Length) { Buttons[i].visible = true; Buttons[i].text = transitions[i].TransitionName; } else { Buttons[i].visible = false; } } } public void setNote(string Actor, string Dialogue) { setActor(Actor); setText(Dialogue); } public void hideButton(int count) { Buttons[count].visible = false; } public void showButton(int count) { Buttons[count].visible = true; } }