2017-06-21 40 views
0

我有兩個DLL加載到我的Unity項目中的PDB文件。一個針對「選擇插件平臺」檢查器中的編輯器,並位於文件夾Assets/Plugins中。其他目標WSAPlayer,爲SDK選擇了UWP,爲腳本後端選擇了DotNet。它位於Assets/Plugins/WSA文件夾中。我試圖構建Windows應用商店(SDK:Universal 10,目標設備:PC,UWP Build Type:XAML,UWP SDK:最新安裝,以及在本地計算機上構建和運行)時出現以下錯誤:Unity爲WSA構建時加載錯誤的名稱空間

資產\ CubeScript.cs(16,48):錯誤CS0246:類型或命名空間名稱 'Win32HidDevice' 找不到(?是否缺少using指令或程序集引用)

錯誤因爲腳本有編譯器錯誤

我不希望UWP能夠加載Win32HidDevice,我的UWP DLL也不會使用它,所以它必須來自其他DLL。該應用程序在編輯器中可以很好地進行調試,如果我還在第一個DLL上檢查「Standalone」,那麼我可以構建並運行獨立應用程序。

我需要什麼設置讓Unity忽略Win32 DLL並在爲WSA構建時使用UWP?

我不認爲這是劇本本身,而是爲了完整性這裏是:

using UnityEngine; 
using Zanzibar; 

public class OrbScript : MonoBehaviour 
{ 
    public Mat mat; 

    void Start() 
    { 
     MatManager.Instance.MatConnected += MatConnected; 
     MatManager.Instance.MatDisconnected += MatDisconnected; 
     MatManager.Instance.Initialize(Communication.AllSupported); 
    } 

    private void MatConnected(Mat mat) 
    { 
     Debug.LogFormat("Mat {0}", mat.UniqueName); 
     this.mat = mat; 
    } 

    private void MatDisconnected(Mat mat) 
    { 
     this.mat = null; 
    } 

    void Update() 
    { 
     if (mat == null) 
     { 
      GetComponent<Renderer>().material.color = Color.black; 
     } 
     else if (mat.TaggedObjects.Count > 0) 
     { 
      GetComponent<Renderer>().material.color = Color.green; 
     } 
     else if (mat.Touches.Count > 0) 
     { 
      GetComponent<Renderer>().material.color = Color.magenta; 
     } 
     else 
     { 
      GetComponent<Renderer>().material.color = Color.white; 
     } 
    } 
} 

回答

0

@ Tautvydas-Zilys發現我的問題了在統一論壇here。我一直在看錯腳本,呵呵! CubeScript.cs包含這一行:

var currentMat = orb.mat.Device as Win32HidDevice; 

,我需要與這些線來代替:

#if UNITY_STANDALONE_WIN || UNITY_EDITOR 
    var currentMat = orb.mat.Device as Win32HidDevice; 
#elif UNITY_WSA_10_0 
    var currentMat = orb.mat.Device as UwpDevice; 
#endif 
相關問題