编写自定义操作(C#)

除了使用 内置动作arrow-up-right之外,你可以通过脚本(C#)编写自己的动作。

circle-info

务必阅读 高级概念 页面。


创建自定义动作的不同方式

自 Text Animator 3.0 起,你可以通过多种方式创建动作,根据项目需求提供更多灵活性。

将动作作为组件创建

circle-check
[System.Serializable]
class ExampleActionComponent : TypewriterActionScriptable
{
    [SerializeField] float timeToWait;
    
    // 主逻辑在这里, 
    
    // ...可以是无状态的
    protected override IActionState CreateCustomState(ActionMarker marker, object typewriter)
        => new ExampleState(timeToWait);
        
    // ...或作为协程
    protected override IEnumerator PerformAction(TypingInfo typingInfo)
    {
        // yield return ...
    }
}

将动作作为 ScriptableObject 创建

circle-check
circle-exclamation

实现动作逻辑的不同方式

你可以决定如何编写动作的核心逻辑。

  • 在协程(IEnumerator)内部,或

  • 通过单独的“tick”方法(该方法返回动作是否应继续运行或已完成)。

首先,导入正确的命名空间:

创建协程

编写协程非常简单!

例如,在你的 TypewriterAction 类(无论是组件还是 Scriptable)中,只需重写 PerformAction 方法:

创建无状态动作

另一方面,创建无状态动作需要你创建一个继承于自定义结构体, IActionState 并且该结构体将执行动作(在此示例中:在继续打字器之前等待几秒),例如:

然后你可以通过在你的动作类中重写 CreateCustomState 方法来实例化此结构体(我们在这里看到的那个 创建自定义动作的不同方式).

属性

  • 标记 参数包含关于你的标签的有用信息,例如 ID 或是否有随之而来的任何参数(例如 <playSound=02>).

  • typewriter 引用当前正在执行该动作的 Typewriter 组件或 AnimatedLabel

  • typingInfo 包含诸如当前打字速度(你可以修改)和打字器内已过时间等信息。


circle-check