CubismUpdateController

[最后更新时间:2020/10/21]

概述

通过将 CubismUpdateController 附加到 Prefab,您可以控制 Cubism SDK for Unity 的每个组件的执行顺序。

由于每个组件的执行顺序在 OW 方法中很重要,因此必须使用 CubismUpdateController 并遵守规范。
如果因为不需要控制执行顺序而不使用 CubismUpdateController,则组件的执行顺序由 Unity 侧决定,因此可能无法正确处理 Expression 等函数,具体取决于执行顺序。

要控制用户创建的组件的执行顺序,请在该组件上实现 ICubismUpdateable。

 

ICubism 可更新的实现

在执行顺序受控的组件中继承ICubismUpdateable接口。

如果未附加 CubismUpdateController,则不会执行 OnLateUpdate 过程,因此以下代码段将单独使用该组件。

  • HasUpdateController
    • 设定 CubismUpdateController 是否附加到 Prefab。
  • NeedsUpdateOnEditing
    • 返回当场景不在 Unity 中运行时是否需要进行更新。
      CubismUpdateController 也在编辑器模式下运行,因此如果组件没有运行并且不需要更新,它会返回 false。
  • ExecutionOrder
    • 返回该组件的执行顺序。
      这个值越小,越早被调用。
      Cubism SDK for Unity 的每个组件的执行顺序在 CubismUpdateExecutoinOrder 中定义。
    •  如果用户追加了控制执行顺序的组件,请参考 CubismUpdateExecutoinOrder 的定义,并注意何时使用此处返回的值调用它。
      • 示例(如果您想在 CubismLookController 和 CubismPhysicsController 之间的时间调用自己的组件):
        • CubismLookController 设定为 700,CubismPhysicsController 设定为 800,因此将您自己的组件设定为返回 750。
  • OnLateUpdate()
    • 该函数通过 CubismUpdateController 控制执行顺序来调用。
      描述该组件执行的更新过程。

 

执行过程中追加或删除组件时的注意事项

CubismUpdateController 控制执行顺序的组件在 OnEnable() 的时机执行。
如果所有组件都预先追加到 Prefab 上是可以的,但是如果在场景运行时动态追加或删除组件,则必须显式调用 CubismUpdateController.Refresh() 重新加载。

© 2010 - 2022 Live2D Inc.