使用SRP时的注意事项
最終更新: 2022年1月31日
概述
从2018年1月起,Unity追加了“Scriptable Render Pipeline(SRP)”,这是一种允许您使用C#脚本控制渲染设置和执行的机制。
有关SRP的详细信息,请参考Unity官方文档。
使用此渲染管道时,不会调用Unity的部分Event函数。
因此,Cubism SDK for Unity可能无法正常动作。
我们正在考虑如何在Cubism SDK中处理该情况。
[2020年1月31日 追加记载]
Cubism 4 SDK for Unity R1或更高版本支持SRP。
如果您使用Cubism 4 SDK for Unity beta2或更早版本,请按照以下步骤修复。
详细信息以及如何修复在下面进行说明。
原因
在Cubism SDK for Unity中,各Cubism组件由LateUpdate()更新,此处设置的值由CubismModel.OnRenderObject()用于更新网格。
OnRenderObject()是当置入在Scene中的Camera组件在Unity的传统渲染管道中完成渲染时调用的函数。
但是,在使用Unity的SRP时,并没有调用Camera发出的Event函数。
因此,如果您按原样使用Cubism SDK for Unity,更新的参数和其他值将不会应用在网格中,您将无法在画面上为模型设置动画。
应对方法
可以通过在另一个时间处理CubismModel.OnRenderObject()来应对。
您也可以通过从LateUpdate()调用它来应对。
但是,如果在CubismModel之后调用Cubism的各组件的处理,则不会应用该组件操作的值,因此需要将CubismModel的执行顺序显式设置为最后。
请通过Unity的功能设置执行顺序、使用CubismUpdateController等来控制CubismModel的执行顺序。
它也可以通过使用Unity的PlayerLoop类来支持。
PlayerLoop可以通过Unity操作Event函数调用,防止现有Event函数被调用,或者在生命周期的任意时间插入用户定义的函数调用。
有关PlayerLoop类,请参考Unity官方文档。