同步
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
Yarn Spinner is licensed to you under the terms found in the file LICENSE.md.
|
||||
*/
|
||||
|
||||
using System.Threading;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using Yarn.Markup;
|
||||
using Yarn.Unity.Attributes;
|
||||
|
||||
#if USE_TMP
|
||||
using TMPro;
|
||||
#else
|
||||
using TMP_Text = Yarn.Unity.TMPShim;
|
||||
#endif
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace Yarn.Unity
|
||||
{
|
||||
public class LinePresenterButtonHandler : ActionMarkupHandler
|
||||
{
|
||||
[MustNotBeNull, SerializeField] Button? continueButton;
|
||||
|
||||
[MustNotBeNullWhen(nameof(continueButton), "A " + nameof(DialogueRunner) + " must be provided for the continue button to work.")]
|
||||
[SerializeField] DialogueRunner? dialogueRunner;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
if (continueButton == null)
|
||||
{
|
||||
Debug.LogWarning($"The {nameof(continueButton)} is null, is it not connected in the inspector?", this);
|
||||
return;
|
||||
}
|
||||
continueButton.interactable = false;
|
||||
continueButton.enabled = false;
|
||||
}
|
||||
|
||||
public override void OnPrepareForLine(MarkupParseResult line, TMP_Text text)
|
||||
{
|
||||
if (continueButton == null)
|
||||
{
|
||||
Debug.LogWarning($"The {nameof(continueButton)} is null, is it not connected in the inspector?", this);
|
||||
return;
|
||||
}
|
||||
// enable the button
|
||||
continueButton.interactable = true;
|
||||
continueButton.enabled = true;
|
||||
|
||||
continueButton.onClick.AddListener(() =>
|
||||
{
|
||||
if (dialogueRunner == null)
|
||||
{
|
||||
Debug.LogWarning($"Continue button was clicked, but {nameof(dialogueRunner)} is null!", this);
|
||||
return;
|
||||
}
|
||||
|
||||
dialogueRunner.RequestNextLine();
|
||||
});
|
||||
}
|
||||
|
||||
public override void OnLineDisplayBegin(MarkupParseResult line, TMP_Text text)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public override YarnTask OnCharacterWillAppear(int currentCharacterIndex, MarkupParseResult line, CancellationToken cancellationToken)
|
||||
{
|
||||
return YarnTask.CompletedTask;
|
||||
}
|
||||
|
||||
public override void OnLineDisplayComplete()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public override void OnLineWillDismiss()
|
||||
{
|
||||
if (continueButton == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// disable interaction
|
||||
continueButton.onClick.RemoveAllListeners();
|
||||
continueButton.interactable = false;
|
||||
continueButton.enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user