编写自定义操作(C#)
除了使用 内置动作之外,你可以通过脚本(C#)编写自己的动作。
创建自定义动作的不同方式
自 Text Animator 3.0 起,你可以通过多种方式创建动作,根据项目需求提供更多灵活性。
将动作作为组件创建
作为组件创建的动作允许你更容易地引用场景对象
[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 创建
作为 ScriptableObject 的动作可以重复使用并在无需加载场景的情况下被引用
附言:别忘了在项目视图中创建你的动作 ScriptableObject,并将其添加到动作数据库中。
实现动作逻辑的不同方式
你可以决定如何编写动作的核心逻辑。
在协程(IEnumerator)内部,或
通过单独的“tick”方法(该方法返回动作是否应继续运行或已完成)。
首先,导入正确的命名空间:
创建协程
编写协程非常简单!
例如,在你的 TypewriterAction 类(无论是组件还是 Scriptable)中,只需重写 PerformAction 方法:
创建无状态动作
另一方面,创建无状态动作需要你创建一个继承于自定义结构体, IActionState 并且该结构体将执行动作(在此示例中:在继续打字器之前等待几秒),例如:
然后你可以通过在你的动作类中重写 CreateCustomState 方法来实例化此结构体(我们在这里看到的那个 创建自定义动作的不同方式).
属性
该
标记参数包含关于你的标签的有用信息,例如 ID 或是否有随之而来的任何参数(例如<playSound=02>).该
typewriter引用当前正在执行该动作的 Typewriter 组件或 AnimatedLabel该
typingInfo包含诸如当前打字速度(你可以修改)和打字器内已过时间等信息。
完成!通过这个简单的步骤,你可以添加任何你想要的自定义动作。