Hololens应用开发报错:_InnerGlowColor类型冲突及Transform引用丢失
HoloLens应用MRTK BoundingBox两类报错解决方案
第一类:Property _InnerGlowColor already exists in the property sheet with a different type: 2 报错
- 检查材质属性类型一致性:这个错误源于
_InnerGlowColor属性在材质/着色器中被定义了不同数据类型。确认你给BoundingBox使用的自定义材质中,该属性的类型与MRTK默认BoundingBox着色器(MixedRealityToolkit/Standard/BoundingBox)的类型一致(默认是Color类型),避免混用float、Vector4等其他类型。 - 切换回默认材质排查:暂时将BoundingBox的材质替换为MRTK提供的默认BoundingBox材质,若报错消失,说明自定义材质存在属性类型冲突,需针对性调整自定义材质的属性配置。
- 清理MRTK资源缓存:删除
Library/PackageCache下com.microsoft.mixedreality.toolkit.ui相关文件夹,重新导入MRTK UI包,解决可能的资源缓存冲突问题。
第二类:MissingReferenceException(已销毁的Transform对象仍被访问)
- 规范DestroyRig调用时机:确保在调用
DestroyRig后,不再直接访问BoundingBox的Rig Transform对象。在所有可能访问Rig的代码前添加空引用判断:if (rigTransform != null)。 - 修复组件生命周期逻辑:若在场景切换、对象销毁时触发,需在销毁BoundingBox所在对象前,手动调用
boundingBox.DestroyRig(),并确保后续代码不再引用该BoundingBox实例。 - 排查异步操作风险:如果有协程、异步任务处理Rig对象,必须在访问前增加双重空判断:
if (rigTransform != null && rigTransform.gameObject != null),避免异步任务执行时Rig已被销毁。 - 升级MRTK版本:该问题可能是旧版MRTK的已知bug,升级到最新稳定版MRTK UI包,大概率能修复DestroyRig方法未正确清空内部引用的问题。
内容的提问来源于stack exchange,提问作者Wildptr
相关产品推荐
相关产品推荐

