You need to enable JavaScript to run this app. Unity开发Hololens 2应用时MRTK按钮显示粉色伴加载报错的排障咨询
优惠活动
大模型
产品
解决方案
定价
更多

Unity开发Hololens 2应用时MRTK按钮显示粉色伴加载报错的排障咨询

HoloLens 2 MRTK工具箱按钮显示粉色问题处理

基础现象

  • 开发环境为面向HoloLens 2的Unity项目,已通过MRTK工具箱向场景添加按钮组件
  • 异常表现:按钮的交互、点击逻辑运行完全正常,但按钮材质统一呈现Unity中典型的粉色提示效果(代表着色器未正常加载)
  • 参考素材:
    • MRTK按钮显示为粉色的界面截图
    • 已安装的MRTK相关插件版本列表截图

已完成的排查动作

每次操作后均按编辑器提示完成TextMesh Pro基础资源导入,依次执行以下操作均未解决问题:

  • 切换不同项目构建平台
  • 启用Windows Mixed Reality平台下的全部可选功能
  • 分别在Unity 2019.4.24f1、Unity 2020.3.1f1版本下创建全新空项目复现问题
  • 删除项目Library文件夹重新生成全量缓存

伴随的稳定报错

无论在原有项目还是全新创建的空项目中,该报错都会稳定出现,核心堆栈信息如下:

System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Projekte\MyHololens\poc-3d-visualisierung-hololens\ButtonTest\Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@5db3df152788-1616077456490\SDK\Experimental\InteractiveElement\Examples\Scripts\CustomStateExample\KeyboardState'.
  at System.IO.__Error.WinIOError (System.Int32 errorCode, System.String maybeFullPath)
  at Microsoft.MixedReality.Toolkit.Utilities.Editor.OnLoadUtilities.FindShaderFolderInPackage ()
  at Microsoft.MixedReality.Toolkit.Utilities.Editor.OnLoadUtilities.EnsureShaders (System.Boolean bypassIgnore)
  at Microsoft.MixedReality.Toolkit.Utilities.Editor.OnLoadUtilities..cctor ()
UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes (System.Type[])

这个报错的触发逻辑很明确:MRTK标准资源包在编辑器启动阶段会自动扫描包内文件路径,定位内置的MRTK专用着色器;扫描过程中代码会尝试访问一个已经不存在的实验性示例目录,直接打断了整个着色器初始化流程,所有用了MRTK内置着色器的材质就会触发Unity默认的粉色占位显示——这也是为什么交互功能完全正常,只有显示出问题的核心原因。

针对性排障操作

  1. 对齐MRTK配套包的版本
    从报错的包哈希值可以判断,当前安装的是MRTK 2.7.0预览版本,这个版本存在已知的逻辑缺陷:扫描文件路径时会尝试查找已被移除的实验性示例目录,直接触发路径找不到的异常。把MRTK Foundation、Standard Assets、Tools三个互相关联的包统一升级到2.7.2及以上的稳定正式版,就能直接修复这个扫描逻辑的bug。
  2. 手动触发着色器加载
    打开Unity项目设置里的图形配置面板(路径为Edit > Project Settings > Graphics),在Always Included Shaders的强制加载列表里,手动添加MRTK的两个核心着色器:Mixed Reality Toolkit/Standard、适配TextMesh Pro文本的MRTK专用着色器,保存配置后重启编辑器,就能绕开出问题的自动扫描流程,强制完成所有MRTK着色器的编译加载。
  3. 规避Windows路径长度限制
    从报错的路径可以看到,项目嵌套在多层目录下,Windows系统默认有260字符的路径长度上限,一旦路径超过长度限制,系统会直接判定深层的PackageCache目录不存在,触发找不到路径的报错。可以把项目整体移动到磁盘根目录下的浅层路径(比如C:\HoloLensTest\),重新用Unity打开项目,就能避开长路径的影响。

内容的提问来源于stack exchange,提问作者Salatgurke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 18:54:02