using System.Collections; using System.Collections.Generic; using TMPro; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; using Yarn.Unity; namespace AibisDream.Test { public class OptionTest : MonoBehaviour { private GameObject panel; private GameObject prefab; private GameObject[] buttonGroup; private YarnOption[] _options; void Start() { // 初始化时注册Command // 第一个参数为[command name=xxx]的参数 // 第二个参数是注册的函数,在Yarn走到选择项时触发 DialogController.Instance.RegisterOptionCommand("show_buttons", ShowButtons); // 不重要 panel = transform.GetChild(0).gameObject; prefab = Resources.Load("Prefabs/UI/Choice Button"); } /// /// 注册的命令 /// /// 触发时提供的选择项 public void ShowButtons(YarnOption[] options) { // 将前两个选项生成清单 buttonGroup = InstantiateButtons(options); _options = options; } private GameObject[] InstantiateButtons(YarnOption[] options) { // 这里默认是前两个选项生成按钮,你也可以利用Text或Index来判断哪些是需要生成按钮的选项 GameObject[] res = new GameObject[2]; for (int i = 0; i < 2; i++) { var option = options[i]; var instance = Instantiate(prefab, panel.transform, true); var textMesh = instance.GetComponentInChildren(); textMesh.text = option.Text; instance.GetComponent