常见问题

最終更新: 2023年2月21日

Q. 我已经将Cubism SDK for Unity载入Unity,但是当我放入模型时等,则出现DllNotFoundException。
Q. 如果我的场景中有多个模型,绘制调用会增加。我该怎么办?
Q. 从Unity输出支持哪些平台?
Q. 有基准吗?
Q. 我是Cubism 2.x用户。我应该将我的2.x项目升级到3.x吗?
Q. Cubism SDK for Unity支持哪些版本的Unity?
Q. 将项目从Unity 5.x更新到Unity 2017.x或更高版本时有什么需要注意的问题吗?
Q. 蒙皮物理模拟在SDK上没有像预期的那样摇动。
Q. 我想将使用R8以前的SDK制作的Unity项目兼容Android 64bit。
Q. 通过Unity运行时生成的AnimationClip能否在Cubism SDK for Unity上使用?
Q. Cubism SDK是否适用于IE11?
Q. 覆盖和载入Unity SDK时,无法复制CubismCore。
Q. 循环可以与Cubism SDK一起使用吗?
Q. 使用Cubism SDK for Web显示多个模型时,部分模型没有更新。我该怎么办?

Q. 我已经将Cubism SDK for Unity载入Unity,但是当我放入模型时等,则出现DllNotFoundException。

A. 请重启Unity。

例如首次载入或更新Cubism SDK for Unity时等,在不重启Unity的情况下更新模型时,将输出DllNotFoundException:Live2DCubismCore等错误。

这是由于Unity无法导入Cubism SDK for Unity附带的本机工具库导致的错误。
Unity在开启时会导入本机工具库,因此如果出现此错误,请重启Unity并查看是否出现相同的错误。
点击 此处 了解详情

Q. 如果我的场景中有多个模型,绘制调用会增加。我该怎么办?

A. 请使用 排序层和排序排列来组织您的模型。

您可以使用SDK附带的 CubismRenderController 组件轻松设置排序值。

Unity的SetPass调用随着场景中绘制的网格的纹理和着色器等的变化而增加。
即使在模型创建阶段也可以减少SetPass的数量,但各模型之间的SetPass数量也会增加。
因此,如果所有模型都可以用于切换纹理和着色器等,则可以减少SetPass调用的次数。
使用排序层和排序排列来组织多个模型之间的切换。

有关减少纹理和着色器等切换的详细信息,以及创建模型时的注意事项,请参考Editor手册中的“处理SDK中模型时的性能”。

Q. 从Unity输出支持哪些平台?

A. Cubism SDK for Unity目前支持的平台有:

  Windows macOS Linux Android iOS Console
PlayStation®4 Nintendo Switch™
兼容情况

有关更多信息,请参考“平台支持”。

Q. 有基准吗?

A. Cubism SDK for Unity包含用于基准的范例场景,因此您可以轻松查看各平台上的性能。

Native、Web上无基准。

Q. 我是Cubism 2.x用户。我应该将我的2.x项目升级到3.x吗?

A. 视项目规模及开发运营期而定。
从3.0 开始,由于SDK的大幅改进,它与以前的版本不兼容。
Cubism 2.x的嵌入模型数据与3.0 SDK不兼容,Cubism 2.x SDK的API与3.0 SDK不兼容。
要使用3.0 SDK,您需要使用3.0 Editor重新输出模型数据或升级您的Unity项目中的代码、资产等。
因此,在决定项目升级之前,请考虑Editor和SDK的好处以及升级成本。

Q. Cubism SDK for Unity支持哪些版本的Unity?

A. Unity正式支持的版本原则上是SDK发布时的最新版本,所以正式支持的版本是3.3,目前是Unity 2018.3。
早期版本不支持,但在重新创建预制件或材料等时会运转。

SDK包中的csc.rsp、mcs.rsp可以通过将文件名更改为gmcs.rsp、smcs.rsp,以在Unity 5.5中使用。
有关详细信息,请参考此处

Q. 将项目从Unity 5.x更新到Unity 2017.x或更高版本时有什么需要注意的问题吗?

A. 将项目从Unity 5.x更新到Unity 2017.x或更高版本时,未存储在Assets中的模型Prefab组件会消失。
如果您想将项目从5.x更新到2017.x或更高版本,请在使用Apply按钮更新Hierarchy上的模型后上传项目。

Q. 蒙皮物理模拟在SDK上没有像预期的那样摇动。

A. 物理模拟受输入差分时间(FPS)的影响。

物理模拟的计算结果根据参数、内部摆锤的状态和输入而变化。
使用多级摆锤模型的蒙皮物理模拟的计算结果特别在输入量很小的情况会出现较大差异。
如果您想要完全相同的动作,请使用物理模拟烘焙的.motion3.json文件。

如果Cubism Editor的物理模拟/场景混合设置中的外观与SDK中的外观不同,则可能是因为操作的FPS不同。
当前的Cubism Editor是根据实际运行的FPS计算得出的,计算出来的FPS取决于模型的规模和运行PC的性能。
如果要微调物理模拟的操作,建议在实机上查看。
Cubism Editor的物理模拟难以与SDK等匹配的问题将在以后的更新中修复。

Q. 我想将使用R8以前的SDK制作的Unity项目兼容Android 64bit。

A. 请从最新版的SDK中获取并使用64bit兼容版本的工具库。

Cubism 3 SDK for Unity R8之前的SDK不支持Android 64bit。
如果您想让使用R8或更早版本的SDK创建的项目与64bit兼容,请从R9或更高版本的Cubism SDK for Unity获取64bit兼容版本Android的工具库并将其追加到项目中。
Cubism SDK for Unity的64bit兼容版本Android工具库文件位于以下层次结构中。

/Assets/Live2D/Cubism/Plugins/Android/arm64-v8a/libLive2DCubismCore.so

此外,由于Cubism SDK for Native中包含的Android工具库文件与Cubism SDK for Unity中包含的相同,因此使用Native的64bit兼容版本的Android工具库也可以支持64bit。
Cubism SDK for Native的64bit兼容版本的Android工具库文件位于以下层次结构中。

/Core/lib/android/arm64-v8a/libLive2DCubismCore.a
/Core/dll/android/arm64-v8a/libLive2DCubismCore.so

如果您追加了项目工具库,请确保选择了该工具库并且在Inspector上正确设置了Platform和CPU。

Q. 通过Unity运行时生成的AnimationClip能否在Cubism SDK for Unity上使用?

A. 仅仅使用Cubism SDK for Unity是行不通的。

运行时生成的AnimationClip无法通过AnimatorController或Playable API播放。
因此,也不支持使用这些功能的Cubism SDK for Unity。

如果使用运行时生成的AnimationClip,则可以使用Unity的Animation组件播放。
但是,Cubism SDK for Unity的“MotionFade”功能不支持Animation组件的动态播放。
这可以通过不使用MotionFade、或在用户端自定义SDK源来处理。

Cubism SDK for Unity的MotionFade需要随着动态播放及时处理渐变,并监控动态播放状态。
在Cubism SDK for Unity中,CubismFadeStateObserver、CubismMotionLayer用于监控播放状态。
可以通过在用户端实装用于监控Animation组件播放状态的组件来支持。
监控动态播放状态的组件实装了ICubismFadeState。

Q. Cubism SDK是否适用于IE11?

A. Cubism SDK for Web已确认可与IE11配合使用并支持。

Cubism SDK for Unity支持的浏览器依赖于Unity,但IE11可能已被弃用或禁用。
有关更多详细信息,请参考Unity官方 参考。 

Q. 覆盖和载入Unity SDK时,无法复制CubismCore。

A. 请在空场景或未使用Cubism SDK的场景打开的情况下重启Unity。

Cubism SDK for Unity的Cubism Core无法替代Editor中使用的Cubism Core,因为在场景中使用时Unity会引用它。
如果要重置Cubism Core参考,请在未使用Cubism Core的场景(空场景等)打开的情况下重启Unity。

Q. 循环可以与Cubism SDK一起使用吗?

A. 使用Cubism SDK时没有出现错误,但是很多功能没有按预期工作。

许多功能(例如使用具有循环设置的参数的动态播放和物理模拟等)无法按预期工作。
如果您想在Cubism SDK上使用循环来表达,您需要在用户端实装每个功能。

即使您使用在SDK中设置了循环参数的模型,也不会发生错误。
因此,如果不使用循环,则可以按原样使用模型。

Q. 使用Cubism SDK for Web显示多个模型时,部分模型没有更新。我该怎么办?

A. 调用CubismFramework.initialize()时,将需确保的内存记忆量传递给参数。

这种现象是Emscripten原始化模块时,需确保的内存记忆不足造成的。
这可以通过在Cubism Core端分配更多内存记忆来避免。
要指定需确保的内存记忆,请将内存记忆量传递给CubismFramework.initialize()的参数。

传递给参数的值应为1024 * 1024 * 16 字节(16MB)或更多。

CubismFramework.initialize(1024 * 1024 * 32);


传递其他值时,将转换为1024 * 1024 * 16字节。

// 1024 * 1024 * 16
CubismFramework.initialize(256);
请问这篇文章对您有帮助吗?
关于本报道,敬请提出您的意见及要求。