Trilib运行时导入模型后无法选中对象的问题排查
Trilib导入3D模型后无法选中操作的问题解决
问题核心原因
AssetLoader.LoadModelFromFile是异步加载方法,你同步调用时模型还在加载流程中,返回的AssetLoaderContext尚未完成初始化,因此会为空,导致无法获取模型GameObject。模型能显示是因为Trilib内部先渲染了临时资源,但加载上下文的Models集合还未填充完成。
解决方案
改用Trilib提供的异步加载API,在加载完成的回调中处理模型对象:
修改后的代码示例
public void ImportModel() { var paths = StandaloneFileBrowser.OpenFilePanel("Select 3d model", "", "", false); if(paths != null && paths.Length > 0) { string filePath = paths[0]; // 使用异步加载并传入完成回调 AssetLoader.LoadModelFromFileAsync(filePath, OnModelLoadCompleted); } } private void OnModelLoadCompleted(AssetLoaderContext assetLoaderContext) { if (assetLoaderContext == null || assetLoaderContext.Models.Count == 0) { Debug.Log("加载上下文为空或无模型对象"); return; } // 获取第一个模型GameObject loadedModel = assetLoaderContext.Models.Keys.FirstOrDefault(); if(loadedModel != null) { AssignTag(loadedModel); AttachMeshCollider(loadedModel); Debug.Log("模型处理完成:" + loadedModel.name); } else { Debug.Log("无法找到加载模型的根GameObject"); } }
补充说明
- 若一定要用同步加载,需检查Trilib设置面板,确认是否开启同步加载模式(部分版本默认关闭),但异步加载是官方推荐方式,可避免阻塞主线程。
- 模型无法选中操作的直接原因是缺少碰撞器和可编辑标签,而这两个操作依赖正确获取模型GameObject,因此解决加载上下文的初始化问题是核心。
内容的提问来源于stack exchange,提问作者zakilman
相关产品推荐
相关产品推荐

