Unity 开发 HoloLens 综合教程
目录
-
第一部分:准备工作
(图片来源网络,侵删)- 1 硬件要求
- 2 软件安装
- 3 核心概念简介
-
第二部分:创建你的第一个 HoloLens 项目
- 1 安装 HoloLens 功能包
- 2 创建和配置新项目
- 3 构建并部署到 HoloLens
-
第三部分:基础交互与全息对象
- 1 添加和定位一个 3D 模型
- 2 让模型跟随你的凝视
- 3 实现手势点击(Air Tap)
- 4 添加空间音效
-
第四部分:进阶功能
- 1 空间锚定 - 让物体记住位置
- 2 手部追踪 - 获取用户手部模型
- 3 空间映射 - 与真实世界互动
-
第五部分:最佳实践与调试
(图片来源网络,侵删)- 1 性能优化
- 2 调试技巧
- 3 UX 设计原则
第一部分:准备工作
在开始之前,请确保你的开发环境已经准备就绪。
1 硬件要求
-
开发电脑:
- 操作系统: Windows 10 (版本 2004 或更高) 或 Windows 11。
- 处理器: 推荐 Intel Core i5 或 AMD Ryzen 5 或更高性能的 CPU。
- 内存: 推荐 16GB 或更多。
- 显卡: 支持 DirectX 12 的独立显卡 (如 NVIDIA GTX 1060 / AMD RX 580 或更高)。
- 存储: 至少 20GB 的可用空间。
- USB 3.0 端口: 用于连接 HoloLens。
-
HoloLens 设备:
- HoloLens (第一代) 或 HoloLens 2,本教程将以 HoloLens 2 为主,但大部分内容也适用于第一代。
2 软件安装
你需要安装以下几款核心软件:

-
Unity Hub: 用于管理不同版本的 Unity 编辑器。
-
Unity 编辑器:
- 打开 Unity Hub,点击 "Installs" -> "New"。
- 强烈推荐使用 Unity 2025.3.x LTS 版本,它对 HoloLens 2 有最好的支持和稳定性。
- 在安装界面,确保勾选以下模块:
- Build Support: 勾选 Universal Windows Platform。
- Install additional modules: 勾选 Windows IL2CPP Scripting Backend。
-
Visual Studio 2025:
- HoloLens 开发的标准 IDE。
- 下载地址: https://visualstudio.microsoft.com/vs/
- 安装时,选择 “使用 Unity 的桌面开发” 工作负载,它会自动包含所需的 C# 和 UWP 开发组件。
-
Windows SDK 和 HoloLens 驱动:
- 确保你的 Windows 10/11 已更新到最新版本。
- 从 Microsoft Store 安装 "HoloLens (2nd gen) USB Driver"。
3 核心概念简介
- 混合现实: 将虚拟数字内容叠加到现实世界中,HoloLens 是混合现实设备。
- 凝视: 你看向哪里,交互的焦点就在哪里。
- 手势: 主要使用 Air Tap (空中点击) 来选择和激活全息对象。
- 语音: 通过语音命令(如 "Select")来控制应用。
- 空间音效: 声音的来源和传播方式模拟现实世界,让你能通过声音判断物体的位置。
- 空间映射: HoloLens 扫描环境,创建一个网格化的 3D 模型,让虚拟物体可以“放置”在真实物体表面上。
第二部分:创建你的第一个 HoloLens 项目
1 安装 HoloLens 功能包
为了简化开发,微软提供了官方的 MRTK (Mixed Reality Toolkit)。
- 打开 Unity Hub,创建一个 3D (Core) 项目(使用你安装的 2025.3.x 版本)。
- 项目创建后,打开它。
- 在 Unity 编辑器顶部菜单栏,选择 Window > Package Manager。
- 在 Package Manager 窗口中,选择 "Packages: Unity Registry"。
- 找到并安装 Mixed Reality Toolkit Foundation 包,安装最新稳定版即可。
- 安装完成后,Unity 会提示你配置项目,点击 "Configure..."。
- 在弹出的配置窗口中:
- 选择 HoloLens 2 作为目标平台。
- 选择 Unity XR Plugin Management 作为输入系统。
- 点击 Apply,Unity 会自动安装所需的其他依赖包(如 XR Management, Microsoft Mixed Reality OpenXR 等)。
2 创建和配置新项目
我们将在场景中放置一个基础的全息对象。
-
在 Hierarchy 窗口中,右键点击,选择 3D Object > Cube,创建一个立方体。
-
为了让立方体看起来更像“全息”效果,我们可以创建一个简单的着色器。
-
在 Project 窗口中,右键点击,选择 Create > Shader > Unlit Shader,命名为 "HolographicShader"。
-
双击打开着色器文件,将代码替换为以下简单代码:
Shader "Holographic" { Properties { _Color ("Color", Color) = (1,0,1,1) } SubShader { Tags { "RenderType"="Transparent" "Queue"="Transparent" } LOD 100 Pass { ZWrite Off Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; }; struct v2f { float4 vertex : SV_POSITION; }; fixed4 _Color; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); return o; } fixed4 frag (v2f i) : SV_Target { return _Color; } ENDCG } } } -
回到 Unity 编辑器,在 Project 窗口中右键点击这个着色器,选择 Create > Material,命名为 "HolographicMaterial"。
-
选择这个新材质,在 Inspector 窗口中将颜色改为亮紫色或青色,并将它拖拽到场景中 Cube 对象上。
-
-
调整 Cube 的位置,使其位于摄像机前方,设置
Position为 (0, 0, 2)。
3 构建并部署到 HoloLens
- 连接设备: 用 USB-C 线将你的 HoloLens 2 连接到开发电脑,确保 HoloLens 已开启开发者模式(设置 > 更新和安全 > 开发者选项)。
- 构建设置:
- 在 Unity 顶部菜单,选择 File > Build Settings。
- 点击 "Switch Platform",选择 Universal Windows Platform。
- 在 Player Settings (点击 "Player Settings..." 按钮) 中,进行以下设置:
- Other Settings:
- Rendering: 勾选 Virtual Reality Supported。
- Virtual Reality SDKs: 确保包含 Windows Mixed Reality。
- Scripting Runtime Version: 选择 .NET 4.x Equivalent。
- Scripting Backend: 选择 IL2CPP。
- Publishing Settings:
- Package name: 设置一个唯一的包名,
com.yourname.MyFirstHoloApp。 - Certificate: 可以临时选择 "Create a new..." 来生成一个测试证书。
- Package name: 设置一个唯一的包名,
- Other Settings:
- 回到 Build Settings 窗口,确保场景已添加到 "Scenes in Build" 列表中(点击 "Add Open Scenes")。
- 构建:
- 点击 "Build" 按钮。
- 选择一个空文件夹来保存构建文件,然后点击 "Select Folder"。
- Unity 会开始构建项目,这可能需要几分钟,构建完成后,会自动打开文件管理器窗口,显示生成的
.sln和.csproj文件。
- 部署:
- 在 Visual Studio 中,打开刚刚生成的解决方案文件。
- 顶部工具栏的配置选择 Release,平台选择 x64。
- 在目标设备下拉菜单中,选择 "Remote Machine"。
- 点击旁边的按钮,输入你的 HoloLens 的 IP 地址(在 HoloLens 的 "设置 > 网络和 Internet > 高级选项" 中可以找到)。
- 确保 "Authentication Mode" 设置为 Universal。
- 按下 F5 或点击 "Start" 按钮进行部署。
- 首次部署时,HoloLens 上可能会弹出安全提示,请选择“信任”该应用。
- 几秒后,你的 HoloLens 屏幕上就会出现你创建的紫色立方体!恭喜你!
第三部分:基础交互与全息对象
让我们让这个立方体活起来。
1 添加和定位一个 3D 模型
我们可以用一个更复杂的模型替换立方体。
- 从网上下载一个简单的 FBX 格式 3D 模型(Sketchfab 上有很多免费模型)。
- 将下载的
.fbx文件拖入 Unity 的 Project 窗口。 - 删除场景中的 Cube,将新导入的模型拖入 Hierarchy 窗口。
- 调整模型大小和位置,使其适合在 HoloLens 中查看。
2 让模型跟随你的凝视
我们需要一个“指针”来表示你的凝视焦点。
- 在 Hierarchy 窗口中,右键点击,选择 XR > Mixed Reality Toolkit > [MRTK] [UX] Cursor,这会自动创建一个带有默认光标样式的预制体。
- 选中场景中的 Main Camera。
- 在 Inspector 窗口中,点击 "Add Component",搜索并添加 "MRTK - Gaze Provider" 脚本,这个脚本会控制凝视输入。
- 再次点击 "Add Component",搜索并添加 "MRTK - Eye Tracking" 脚本(可选,但可以实现更高级的凝视追踪)。
- 当你运行应用时,一个光标应该会跟随你的头部移动,指向你正在看的东西。
3 实现手势点击
- 选中你的 3D 模型。
- 点击 "Add Component",搜索并添加 "MRTK - Interactable" 脚本。
- 在 Interactable 脚本的设置中,你可以定义交互行为:
- Event: 在
On First Hover或On Click事件中,你可以添加动作,点击时让物体旋转。 - 点击 号,将你的 Main Camera 拖拽为
Receiver。 - 在
Function Name中选择Transform.Rotate。 - 设置
Axis为 (0, 30, 0),Space为World。
- Event: 在
- 运行应用,凝视并做出 Air Tap 手势,模型就会旋转!
4 添加空间音效
- 在 Project 窗口中,右键点击,选择 Create > Audio Mixer,创建一个混音器。
- 在 Hierarchy 中选中你的 3D 模型。
- 点击 "Add Component",搜索并添加 "Audio Source"。
- 在 Audio Source 组件中:
- 勾选 "Spatialize"。
- 将 "Spatial Blend" 滑块拖到最右边 (1.0)。
- 在 "3D Sound Settings" 中,调整 "Min Distance" 和 "Max Distance",定义声音的有效范围。
- 你可以导入一个
.wav音效文件,并将其拖到 Audio Source 的AudioClip插槽中。
第四部分:进阶功能
1 空间锚定 - 让物体记住位置
默认情况下,当你离开应用再回来时,所有物体都会回到初始位置,空间锚定可以解决这个问题。
- 创建一个新的空 GameObject,命名为 "PersistentObject"。
- 选中这个 PersistentObject,点击 "Add Component",搜索并添加 "MRTK - Spatial Anchor" 脚本。
- 将你想要记住位置的 3D 模型设置为这个 PersistentObject 的子物体。
- 当你移动这个模型后,下次启动应用时,它会出现在你上次放置的位置。
2 手部追踪 - 获取用户手部模型
MRTK 可以让你轻松显示用户的手部模型。
- 在 Hierarchy 窗口中,右键点击,选择 XR > Mixed Reality Toolkit > [MRTK] [Input] Hand Visualization Provider。
- 选中这个新创建的 Hand Visualization Provider。
- 在 Inspector 中,你可以配置手部模型的样式、颜色等。
- 运行应用,伸出你的手,你就能在虚拟空间中看到自己手的实时模型了。
3 空间映射 - 与真实世界互动
让虚拟物体可以放置在真实世界的桌面上。
- 在 Hierarchy 窗口中,右键点击,选择 XR > Mixed Reality Toolkit > [MRTK] [UX] Spatial Awareness Display System。
- 这个预制体会自动处理空间网格的显示,你可以在其子物体
Spatial Awareness Mesh的 Inspector 中调整网格的显示颜色、透明度等。 - 当你运行应用时,HoloLens 会显示它扫描到的环境网格。
- 你可以通过代码查询这些网格,并让你的 3D 模型“吸附”到最平的表面上,这通常需要编写一些脚本来实现,但 MRTK 提供了相关的 API 来简化这个过程。
第五部分:最佳实践与调试
1 性能优化
HoloLens 的计算资源有限,性能至关重要。
- 多边形数量: 保持 3D 模型的面数尽可能低。
- Draw Calls: 尽量合并材质,减少 Draw Call 次数。
- 动态批处理: Unity 会自动处理小型物体的批处理。
- 分辨率: 注意应用的渲染分辨率,避免不必要的过渲染。
- 使用 Profiler: Unity Profiler 是你最好的朋友,用来分析 CPU 和 GPU 的性能瓶颈。
2 调试技巧
- Unity Editor 模拟: 在不连接 HoloLens 的情况下,可以在 Unity 编辑器中模拟输入和视角,进行初步调试。
- 设备门户: 在 HoloLens 的 "设置 > 更新和安全 > 开发者选项" 中,找到 "设备门户",并开启它,在电脑浏览器中访问
https://<hololens_ip_address>,你可以远程查看应用的日志、截图、视频流,甚至安装应用,非常强大。 - Visual Studio 调试: 可以直接在 Visual Studio 中设置断点,调试部署到 HoloLens 上的应用代码。
3 UX 设计原则
- 1 米法则: 大多数交互设计在用户前方 1-2 米的范围内效果最好。
- 舒适区: 确保虚拟内容位于用户舒适的自然视野和头部转动范围内。
- 反馈: 用户交互后必须提供即时的视觉、听觉或触觉反馈。
- 尺度: 使用真实世界物体作为参照物,帮助用户理解虚拟物体的大小。
- 光线: 利用光影效果增强物体的真实感和存在感。
总结与下一步
这份教程涵盖了从零开始创建一个 HoloLens 应用的完整流程,你已经学会了:
- 搭建开发环境。
- 创建和配置项目。
- 部署应用到 HoloLens。
- 实现基础的凝视、手势和语音交互。
- 使用 MRTK 的核心功能,如空间锚定、手部追踪和空间映射。
下一步可以探索的方向:
- 学习 MRTK 的更多组件: 如按钮、滑块、菜单等 UI 控件。
- 深入研究 OpenXR: 了解 OpenXR 标准,让你的应用能更轻松地跨平台(如 Pico, Meta Quest)。
- 研究 Azure 混合现实服务: 如 Azure Spatial Anchors (在多台设备间共享锚点)、Azure Face Recognition (人脸识别) 等,打造更强大的企业级应用。
- 开发更复杂的交互逻辑: 如物体抓取、投掷、多人协作等。
祝你开发顺利,创造出令人惊叹的混合现实体验!
