47 lines
1.4 KiB
C#
47 lines
1.4 KiB
C#
using UnityEngine;
|
|
using AibisDream.Framework;
|
|
|
|
namespace AibisDream
|
|
{
|
|
public class OnelineOptions : MonoBehaviour
|
|
{
|
|
[SerializeField] private GameObject choiceButtonPrefab;
|
|
[SerializeField] private bool showDisabledOptions;
|
|
|
|
public void ShowOptions(DialogOption[] dialogOptions)
|
|
{
|
|
gameObject.SetActive(true);
|
|
|
|
Debug.Log($"ShowOptions: {dialogOptions.Length}, {dialogOptions[0].Line}");
|
|
|
|
// 生成新按钮
|
|
foreach (var option in dialogOptions)
|
|
{
|
|
// 如果选项不可用且不显示不可用选项,则跳过
|
|
if (!option.IsAvailable && !showDisabledOptions) continue;
|
|
|
|
// 生成按钮
|
|
var choiceInstance = Instantiate(choiceButtonPrefab, transform);
|
|
var choiceButton = choiceInstance.GetComponent<OnelineOption>();
|
|
|
|
choiceButton.Init();
|
|
choiceButton.SetOption(option);
|
|
}
|
|
}
|
|
|
|
public void HideOptions()
|
|
{
|
|
// 销毁所有按钮
|
|
foreach (Transform child in transform)
|
|
{
|
|
Destroy(child.gameObject);
|
|
}
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
EnumEventSystem.Global.Register<DialogEventEnum, LineInfo>(DialogEventEnum.OptionSelected,
|
|
_ => HideOptions());
|
|
}
|
|
}
|
|
} |