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

相关推荐
相信神话202110 小时前
第四章:创建《酒魂》项目与场景结构
游戏·游戏引擎·godot·2d游戏开发
mxwin10 小时前
Unity Shader URP 使用模板测试 · 深度测试实现秘境空间效果
unity·游戏引擎·shader
真鬼1231 天前
【Unity 6】Unity6快捷下载,快速下载
unity·游戏引擎
会潜水的小火龙1 天前
unity打包apk报错Failure to initialize问题解决方法
unity·游戏引擎
平行云1 天前
实时云渲染平台数据通道,支持3D应用文件上传下载分享无缝交互
linux·unity·云原生·ue5·gpu算力·实时云渲染·像素流送
Sator11 天前
unity仅用粒子系统实现拖尾
unity·游戏引擎
游乐码1 天前
Unity基础(五)四元数相关
unity·游戏引擎
想做后端的前端1 天前
Unity热更新 - HybridCLR & YooAsset
unity·游戏引擎
鹿野素材屋1 天前
Unity预加载:减少游戏中首次加载资源时的卡顿
windows·游戏·unity
RPGMZ1 天前
RPGMZ游戏引擎事件技巧大全
javascript·游戏引擎·事件·rpgmz·rpgmakermz