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

相关推荐
NIKITAshao1 天前
Unity 跨项目稳定迁移资源
unity·游戏引擎
sindyra1 天前
Unity资源内存管理与释放
unity·游戏引擎·资源管理·资源释放·内存释放
CreasyChan1 天前
Unity FairyGUI高斯模糊实现方法
unity·游戏引擎·fgui
avi91111 天前
Unity半官方的AssetBundleBrowser插件说明+修复+Reporter插件
unity·游戏引擎·打包·assetbundle·游戏资源
郝学胜-神的一滴1 天前
深入理解Mipmap:原理、实现与应用
c++·程序人生·unity·游戏程序·图形渲染·unreal engine
一个笔记本1 天前
godot log | 修改main scene
游戏引擎·godot
nnsix2 天前
Unity PicoVR开发 实时预览Unity场景 在Pico设备中(串流)
unity·游戏引擎
一只一只2 天前
Unity之UGUI Button按钮组件详细使用教程
unity·游戏引擎·ugui·button·ugui button
神米米2 天前
Maya快速安装UE4 布料权重绘制插件PhysX导出apx
游戏引擎·ue4·maya
WarPigs2 天前
Unity阴影
unity·游戏引擎