Unity添加近身菜单-MRTK

文章目录

  • [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

WindowWindowsPackage Manager

Mixed Reality Toolkit ExamplesDemos-HandTrackinglmport 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)

解决方案:
WindowTextMeshProImport 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)再次执行之前要执行的任务

相关推荐
nnsix21 小时前
Unity 刚体的 默认力、瞬时力 区别
unity·游戏引擎
nnsix21 小时前
Unity Sprite的 Generate Physics Shape 参数解释
unity·游戏引擎
魔士于安21 小时前
Unity完整小球迷宫项目
前端·unity·游戏引擎·贴图·模型
め.21 小时前
Unity协程的原理
unity·游戏引擎
天人合一peng2 天前
unity 生成标记根据背景色标记变色
unity·游戏引擎
天人合一peng2 天前
unity 生成标记根据背景色变色为明显的颜色
unity·游戏引擎
魔士于安2 天前
Unity 超市总动员 超市收银台 超市货架 超市购物手推车 超市常见商品
游戏·unity·游戏引擎·贴图·模型
CandyU22 天前
Unity —— 数据持久化
unity·游戏引擎
zh路西法2 天前
【Unity实现Oneshot胶卷显形】游戏窗口化与Win32API的使用
游戏·unity·游戏引擎
迪捷软件2 天前
显控系统虚拟仿真的工程化路径
游戏引擎·cocos2d