The following settings worked with Unity Version: 2018.4.24f1:
- Go to File > Build Settings.
- Target Device: HoloLens
- Architecture: x86
- Build Type: D3D
- Target SDK Version: Latest installed
- Minimum Platform Version: 10.0.10240.0
- Visual Studio Version: Visual Studio 2019
- Build and Run on: Local Machine
- Build configuration: Release
- Copy References: not checked
- Unity C# Projects: not checked
- Development Method: default
- Go to File > Build Settings
- Click Build
- The Unity editor will open a dialog box asking where you want the project to built be built. Select a folder. I use a folder named 'VS' in the Unity project directory (HoloArt/VS).
- Open the solution file (HoloArt/VS/HoloArt.sln) in Visual Studio 2019 (Community Edition).
- Set the Solutions Platforms to x86.
- Optional: Double click on Package.appxmanifest in the Solution Explorer, switch to the Capabilities tab, and check that the following are enabled:
- Gaze Input
- Internet (Client)
- Microphone
- Spatial Perception
- Webcam
- Build the solution: Build > Build Solution.
- Deploy to Remote Machine
Note: To set the deployment target to HoloLens:
- Ensure that the HoloLens is switched on.
- Right click the HoloArt project in the Solution Explorer.
- Select Properties.
- Go to Debugging.
- Select Machine and then click Locate from the dropdown menu.
- Select the HoloLens device
- Tidy up source code.
- Document source code.
- TextureScale class is currently disabled. This is called by DisplayPanel.DownloadThumbnailImage(). TextureScale will not compile when the Scripting Backend (PlayerSettings > Other Settings) is set to .NET. Could try switching to IL2CPP or find some other way to rescale the thumbnail image.
- Create a close box for the holographic display panel. Look at examples from HoloToolkit. It should be possible to close a display panel by selecting the close box.
- Display panels are closed using a "Close" voice command, which invokes AppManager.CloseWindows(). Consider destroying the display panel game object rather than setting the game object to false.
- AppManager.CloseWindows() uses GameObject.FindGameObjectsWithTag(), which is resource intensive. Implement alternative solution to manage open display panels.
- ImageCapture.GetImage() attempts to calculate a target position for the display position (this.CalculateDisplayPanelPosition()). Exceptions are thrown when this code is run, so the routine is disabled. Investigate the source of the exceptions and attempt to resolve.