纺纱机3.1

Unity 3.1 的 Yarn Spinner 包含许多改进和有用的更改。

Dialogue Runner 现在更加异步

对话运行者的 StartDialogueStop 现在的方法是 async,并返回一个任务。当你打电话时 StartDialogue,您将收到一个任务(或者是 System.Threading.Tasks 任务,一个 UnityEngine.Awaitable,或一个 UniTask)将在每个对话演示者完成其运行后完成 OnDialogueStartedAsync 方法。同样, Stop 方法将在每个对话演示者完成其运行后完成 OnDialogueCompleteAsync 方法。这对于确保您不会在对话演示者准备过程中意外更改场景非常有用。

对话选项失败

在 Yarn Spinner 中,您可以将条件添加到选项末尾。如果条件评估为 false,纺纱机会将该选项标记为“不可用”。由您的游戏决定这意味着什么 - 您可能希望使该选项可见但不可选择,或者您可能希望完全向玩家隐藏该选项。但是,如果_every_选项不可用,则玩家无法选择任何选项。以前,这可能会导致您的游戏必须软锁定玩家,因为他们无法继续。

在 Yarn Spinner 3.1 中,对话演示者现在可以告诉对话运行者根本没有选择任何选项。发生这种情况时,Yarn Spinner 将跳过这些选项并继续执行脚本的下一部分:

Guard: Who goes there?

// If the player is a thief, a royal visitor, or a merchant, then
// go run the appropriate conversation for that. The player might be
// some combination of the three, so let them choose.
-> A thief! <<if $player_is_thief>>
    <<jump Guard_Thief_Conversation>>
-> A royal visitor! <<if $player_is_royal_visitor>>
    <<jump Guard_RoyalVisitor_Conversation>>
-> A merchant! <<if $player_is_merchant>>
    <<jump Guard_Merchant_Conversation>>

// But if the player is NONE of those, then none of the options would have
// been available. We'll fall through to here.

Player: I'm nobody!
<<jump Guard_Nobody_Conversation>>

[!信息] 您可以通过设置来关闭此行为 allowOptionFallthrough 您的财产 DialogueRunnerfalse.

线路知道它们来自哪里

当 Yarn Spinner 向您的游戏发送一条线时,它会将线包裹在一个称为 LocalizedLine。以前,如果您的游戏有多个同时运行的对话运行程序,则无法知道该线路来自哪个运行程序。在纺纱机 3.1 中, LocalizedLine 现在有一个 Source 告诉您它来自哪里的属性。

现在可以匆忙取消期权

就像线路有单独的“快点”和“下一步”取消标记一样,它们充当推动事情进展的信号,选项现在也有相同的“快点”和“下一步”标记。 (以前,他们只有一个取消标记,表明不再需要选择选项。)这允许您的游戏发出信号,表明您想要加快对话选项的呈现。

新打字机系统

我们更新了内置 Line Presenter 系统中打字机的使用方式,使其更易于定制。当您想要完全控制线条随时间的显示方式,以及当您想要在线条出现时发生游戏内事件(例如声音效果)时,这非常有用。

要创建自定义打字机,请创建一个实现 IAsyncTypewriter。您可以在源代码中找到如何编写自定义打字机的示例 LetterTypewriter 班级。

[!信息] 作为此更改的一部分,Line Presenter 上的“按字符键入”事件已被删除。如果您想在每次出现角色时运行代码,请创建一个新脚本,该脚本是从 动作标记处理器,并将其添加到场景中的对象中。将该对象添加到 Line Presenter 的“事件处理程序”列表中。在 ActionMarkupHandler 子类中,您可以编写每次字符出现在屏幕上时调用的代码,方法是实现 OnCharacterWillAppear 方法.

删除旧版 DialogueView 课程

Yarn Spinner 3.0 引入了一种用于呈现对话的新编程模型,称为 对话主持人。作为推出这个新 API 的一部分,我们制作了旧 API DialogueView 类充当兼容性层,并将其标记为已弃用。 Yarn Spinner 3.1 删除了这个已弃用的代码。如果您有以 Yarn Spinner 2.0 项目开始的代码,您将需要 迁移旧的对话演示 UI 代码以使用对话演示器.