文章目录
- [1. 配置MRTK](#1. 配置MRTK)
- [2. 复制标准模板](#2. 复制标准模板)
-
- [2.1 导入Demos-HandTracking](#2.1 导入Demos-HandTracking)
- [2.2 NearMenuExamples](#2.2 NearMenuExamples)
- [2.3 模板复制在项目里](#2.3 模板复制在项目里)
- [3. 修改模板](#3. 修改模板)
-
- [3.1 按钮](#3.1 按钮)
-
- [3.1.1 解除预制体](#3.1.1 解除预制体)
- [3.1.2 跟随功能](#3.1.2 跟随功能)
- [3.1.3 修改按钮名称](#3.1.3 修改按钮名称)
- [3.1.4 修改按钮图标](#3.1.4 修改按钮图标)
- [3.2 添加触发事件](#3.2 添加触发事件)
-
- [3.2.1 编辑触发事件脚本](#3.2.1 编辑触发事件脚本)
- [3.2.2 挂载脚本](#3.2.2 挂载脚本)
- [3.2.3 按钮添加触发事件](#3.2.3 按钮添加触发事件)
- 遇到的错误
-
- [Import TMP Essentials时出错](#Import TMP Essentials时出错)
- [Couldn't decompress package](#Couldn't decompress package)
1. 配置MRTK
先新建项目,配置MRTK,激活XR功能,创建和设置场景
配置MRTK时一定要配置Mixed Reality Toolkit Examples
可以参考我之前的博文:Holoens2开发环境配置及项目程序部署
2. 复制标准模板
2.1 导入Demos-HandTracking
Window → Windows → Package Manager

Mixed Reality Toolkit Examples → Demos-HandTracking → lmport into Project

点击 Import TMP Essentials

2.2 NearMenuExamples
1)双击NearMenuExamples

2)选择自己想要的模板,选中模板,右键Copy 进行复制
本文选择的是NearMenu4x2 ,4列2行

2.3 模板复制在项目里
1)在Assets 文件夹下找到自己原来的场景,双击打开
找的时候可以注意场景的图标

2)在Hierarchy 选项窗口下,右键Paste 进行粘贴即可

3. 修改模板
3.1 按钮
3.1.1 解除预制体

解除预制体:
选中按钮,右键Unpack Prefab Completely

3.1.2 跟随功能
勾选RadialView 组件启动跟随功能(默认是没有被选中的)
跟随菜单与相机的之间的距离(单位m):
Min Distance
Max Distance

3.1.3 修改按钮名称
在Hierarchy 选项窗口下,找到ButtonOne 按钮里的TextMeshPro 双击

3.1.4 修改按钮图标

3.2 添加触发事件
3.2.1 编辑触发事件脚本
在Asstes 文件夹或其子目录下的文件夹里,新建C#脚本文件

ButtonHandler.cs代码如下:
点击此按钮后,会自动执行OnButtonClick()任务
csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ButtonHandler : MonoBehaviour
{
// 按钮点击事件处理
public void OnButtonClick()
{
Debug.Log("按钮被点击了!");
// 这里可以添加更多逻辑
}
}
3.2.2 挂载脚本
1)在Hierarchy 选项窗口下,空白处右键Create Empty 创建空对象

2)将ButtonHandler.cs拖拽到新建的空对象上

挂载成功如下图所示

3.2.3 按钮添加触发事件
1)将空对象拖拽到按钮的触发事件

2)选择触发事件

选择后如下图所示

遇到的错误
Import TMP Essentials时出错
ageResourceImporter.cs:45)
TMPro.TMP_PackageResourceImporterWindow:OnGUI () (at Library/PackageCache/com.unity.textmeshpro@2.1.4/Scripts/Runtime/TMP_PackageResourceImporter.cs:215)
UnityEngine.GUIUtility:ProcessEvent (int,intptr)
解决方案:
Window → TextMeshPro → Import TMP Essential Resources

Couldn't decompress package
Failed to import package with error: Couldn't decompress package
UnityEditor.AssetDatabase:ImportPackage (string,bool)
解决方案:清理 Library
1)退出 Unity
2)删除项目根目录下的 Library 文件夹(只删 Library,不要动 Assets、Packages)
3)重新打开项目,等待 Unity 重新导入所有资源
4)再次执行之前要执行的任务