Files
aibis-dream/Assets/Scripts/Dialog System/YarnOption.cs
T
2024-08-13 02:43:38 +08:00

67 lines
1.7 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Yarn.Unity;
namespace AibisDream
{
public class YarnOption
{
private DialogueOption dialogueOption;
private Action<int> onOptionSelected;
public YarnOption(DialogueOption dialogueOption, Action<int> onOptionSelected)
{
this.dialogueOption = dialogueOption;
this.onOptionSelected = onOptionSelected;
}
/// <summary>
/// 选项中的文字
/// </summary>
public string Text
{
get
{
return dialogueOption.Line.TextWithoutCharacterName.Text;
}
}
/// <summary>
/// 选择该选项
/// </summary>
public void SelectOption()
{
if (onOptionSelected == null)
{
Debug.LogWarning($"选项 {Text} 已经执行过了");
}
else
{
onOptionSelected.Invoke(dialogueOption.DialogueOptionID);
onOptionSelected = null;
}
}
/// <summary>
/// 生成选项
/// </summary>
/// <param name="options">原始选项</param>
/// <param name="onOptionSelected">选择</param>
/// <returns>包装选项</returns>
public static YarnOption[] GeneOptions(DialogueOption[] options, Action<int> onOptionSelected)
{
YarnOption[] yarnOptions = new YarnOption[options.Length];
for (int i = 0; i < options.Length; i++)
{
yarnOptions[i] = new YarnOption(options[i], onOptionSelected);
}
return yarnOptions;
}
}
}