Unity play模式下正常,打包时报错:Cannot build player while editor is importing assets or compiling scripts
问题描述
今天build过程中,在build过程中出现:
Cannot build player while editor is importing assets or compling scripts. |
并且在build完成后,控制台报错如下:
Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@f2323a9b7aec\Providers\WindowsMixedReality\XRSDK\WindowsMixedRealityDeviceManager.cs(404,128): error CS0104: 'Handedness' is an ambiguous reference between 'Microsoft.MixedReality.Input.Handedness' and 'Microsoft.MixedReality.Toolkit.Utilities.Handedness' |
问题分析
可以看到在build过程中出现Cannot build player while editor is importing assets or compling scripts. 可得,由两种情况:一是:editor is importing assets ;另一种是compling scripts 出现错误
editor is importing assets
这种一般都比较好解决,出现原因是: 引用UnityEditor的文件必须放到Editor文件夹中(好像只要有就行)
解决办法:
创建一个Editor文件夹,把用到UnityEditor及其API的脚本放到Editor文件夹下面
compling scripts 出现错误
我这里的原因是:
Handedness
是一个模糊的引用,存在两个可能的选择:Microsoft.MixedReality.Input.Handedness
和 Microsoft.MixedReality.Toolkit.Utilities.Handedness
出错的一行如下:
WindowsMixedRealityXRSDKGGVHand detectedController = new WindowsMixedRealityXRSDKGGVHand(TrackingState.NotTracked, Handedness.None, inputSource); |
但其实查阅官网发现:
WindowsMixedRealityXRSDKGGVHand
有四个参数:
Parameters | |
---|---|
trackingState |
TrackingState |
controllerHandedness |
Handedness |
inputSource |
IMixedRealityInputSource |
interactions |
MixedRealityInteractionMapping[] |
然后点到Handedness
其实发现它的命名空间为:Microsoft.MixedReality.Toolkit.Utilities
,因此,要想要解决报错,只需要进行进一步的限定即可:
WindowsMixedRealityXRSDKGGVHand detectedController = new WindowsMixedRealityXRSDKGGVHand(TrackingState.NotTracked, Microsoft.MixedReality.Toolkit.Utilities.Handedness.None, inputSource); |
Microsoft.MixedReality.Input.Handedness
是没有None
属性的,因此build时会同样报错,这里很坑!
Comment