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)再次执行之前要执行的任务

相关推荐
在路上看风景1 天前
15. 纹理尺寸是4的倍数
unity
星依网络1 天前
使用LabelImg工具标注数据(游戏辅助脚本开发)
python·游戏引擎·图形渲染·骨骼绑定
AT~1 天前
unity 使用Socket和protobuf实现网络连接
unity·游戏引擎
feiduoge1 天前
教程 36 - 方向光照
windows·游戏引擎·图形渲染
怣疯knight1 天前
Cocos creator判断节点是否能用的方法
unity·cocos2d
tealcwu1 天前
Google Play的Keystore不可用时的解决方法
unity
呼呼突突1 天前
Unity使用TouchSocket的RPC
unity·rpc·游戏引擎
qq_428639612 天前
虚幻基础:安装插件
游戏引擎·虚幻
qq 180809512 天前
从零构建一个多目标多传感器融合跟踪器
unity