CRIWARE Unity Plugin Manual  Last Updated: 2025-05-08
常见问题解答/故障排除
关于Asset Support Add-on的问题,请确认:

CI构建失败

出现 DllNotFoundException 或 entryPointNotFoundException 时

在Linux上出现 DllNotFoundException 时,请参照 在Linux上运行时出现 DllNotFoundException

使用上述方法后仍然无法解决时,请确认插件库的执行权限。
请确认 Assets/CRIMW/CriWare/Runtime/Platforms/ 的运行时库于您的CI环境中是否可以执行。
特别是,在执行构建时,从版本控制系统获取Unity项目可能会导致缺乏执行权限的问题。
因此,请在获取项目后,启动Unity前,更改库的权限。

此外,如果 CriManaUsmAssetImporter 导致异常,请通过禁用USM Asset的 [Import Movie Info] 来避免DLL执行权限要求。
请注意,禁用 [Import Movie Info] 时,CriManaUsmAsset.MovieInfo 可能变为无效值。

构建设备的内存不足时

在旧的CRI Addressables版本中构建Bundle时,会自动大量加载项目中的资产,并导致内存耗尽的问题。
此问题已在CRI Addressables 0.6.05中修复。如果您使用的版本低于此版本时,请尝试最新版本。

无法播放使用了CRI Addressables的Asset

请确认以下各项:

是否直接引用内置场景

在CRI Addressables管理的CRI Asset必须通过Addressables的API进行加载
  • Addressables.LoadAssetAsync
如果从内置场景或内置场景引用的Prefab引用CRI Asset, 由于变为不存在与CRI Asset对应的Non-Asset数据的状态,将无法加载数据。

另外,如果从内置场景中引用了由Addressables管理的Asset时,会多重增加相同数据的复写, 因此不建议将其作为Addressables Asset System的使用方法。
可以使用Addressables Analyze工具来确认是否存在此类不正常的引用。

确认是否引用自Resource文件夹

同样,加载了作为Resource文件夹中的Asset或其依赖目标时,也无法正常播放。
因此建议使用Addressables(而不是Resource文件夹)进行管理或加载。

需要从脚本指定DeployType时

可以通过操作 CriWare.Assets.CriAssetImporter.implementation 来更改 DeployType。
以下的示例中自动将DeployType设置为AssetPostprocessor。
public class MyCriAssetPostprocessor : UnityEditor.AssetPostprocessor
{
void OnPreprocessAsset()
{
CriAssetImporter importer = assetImporter as CriAssetImporter;
if (importer == null) return; // 非CRI Asset时则返回
// 此示例中根据扩展指定不同的DeployType
var extension = System.IO.Path.GetExtension(assetImporter.assetPath);
if (extension == ".acf" || extension == ".acb") // OnMemory
importer.implementation = new CriSerializedBytesAssetImplCreator();
if(extension ==".awb" || extension == ".usm") // Addressables
importer.implementation = new CriCustomAddressableAssetImplCreator();
}
}
CriWare.Assets.CriAssetImporter.implementation 指定继承 CriWare.Assets.ICriAssetImplCreator 的实例。
在CRI Assets/CRI Addressables的标准实现中的三种类型如下。
实际上DeployType是在 CriWare.Assets.CriAssetImporter.implementation 的更改后,重新导入Asset时被反映。
使用AssetPostprocessor执行操作时,会立即执行重新导入。需要在某个时机反映时,请使用以下代码重新导入。
EditorUtility.SetDirty(importer);
importer.SaveAndReimport();

在Addressables注册的Asset的类型

使用CRI Addressables时,您可以选择在或不在Addressable Group中注册CRI Asset。

指定CRI Asset的地址后加载时

在Addressables管理下加载单个CRI Asset时,请将其直接注册到任意的AddressableGroup中。

加载依赖CRI Asset的Asset时

从Prefab或场景中引用的CRI Asset则无须在Addressables进行注册。
将参照源的场景或Asset注册到AddressableGroup中,可以在已加载参照源Asset时同时加载CRI Asset。

关于AWB Asset

AWB Asset始终引用ACB Asset。
因此,在可以加载ACB Asset的状态下,则无需在Addressables注册AWB Asset。

translated_by_Google.png

THIS SERVICE MAY CONTAIN TRANSLATIONS POWERED BY GOOGLE. GOOGLE DISCLAIMS ALL WARRANTIES RELATED TO THE TRANSLATIONS, EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF ACCURACY, RELIABILITY, AND ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.