为啥从assetBundle添加MeshCollider时网格被标记为不可访问以及如何解决?

Posted

技术标签:

【中文标题】为啥从assetBundle添加MeshCollider时网格被标记为不可访问以及如何解决?【英文标题】:Why the mesh has been marked as non-accessible when adding MeshCollider from assetBundle and how to solve it?为什么从assetBundle添加MeshCollider时网格被标记为不可访问以及如何解决? 【发布时间】:2019-12-12 09:01:34 【问题描述】:

我有一个可脚本化的资产,在 GameObject 变量上包含一个 fxbModel,我正在这样做:

model = Instantiate(caAsset.model, origin);
fbxComponents.All(fbxComponent => fbxComponent.gameObject.AddComponent<MeshCollider>());

资源是否从资源加载,一切正常。*

但是来自 AssetBundle 的资产**会发生以下错误。

CollisionMeshData couldn't be created because the mesh has been marked as non-accessible. 
Mesh asset path "" Mesh name "Flanschdeckel_low"
UnityEngine.GameObject:AddComponent()

(*)MyScriptableAsset caAsset = Resources.Load(scriptableObjectName);

(**)MyScriptableAsset caAsset = bundle.LoadAsset&lt;MyScriptableAsset&gt;(scriptableObjectName);

【问题讨论】:

【参考方案1】:

在网格子文本下的模型选项卡上的 fbx 文件上有一个启用读/写的属性,如果您勾选该框,它可能会起作用。检查图片右上角以便更好地理解。enter image description here

【讨论】:

是的,这就是诀窍。谢谢你。我发现,统一进一步在 fbx 导入时选中了此复选框。我还没有找到编辑此设置的方法,但使用 docs.unity3d.com/ScriptReference/Mesh-isReadable.html 可以通过通知正在创建资产的用户来控制创建资产包的过程。

以上是关于为啥从assetBundle添加MeshCollider时网格被标记为不可访问以及如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

unity中Assetbundle打包windows成功,为啥打包Android失败

Unity进阶----AssetBundle_03(2018/11/07)

AssetBundle 从入门到掌握--学习笔记

Siki_Unity_3-7_AssetBundle从入门到掌握

assetbundle 脚本怎么打包

如何实现 AssetBundle 的依赖部分从 Resource 获取