HoloLens-Unity简单开发与部署
New Scene。
文章目录
一、创建New Scene并导入MRTK资源
-
在已经配置好
MRTK包环境的项目中创建一个新的场景,并保存到Asset目录下,后续可以移动至Asset->Scene目录下 -
注:
MRTK配置过程见 https://blog.csdn.net/weixin_46371062/article/details/132946601?spm=1001.2014.3001.5502

-
导入MRTK资源包,
Mixed Reality->Toolkit->Add Sence to Configuration
-
更改配置

二、手部抓取物体并实现移动
-
创建一个
3D物体(若非Unity内置的物体对象需要手动添加Collider属性)`
-
对新添加的物体添加
Object Maniputor组件,系统会自动添加Constraint Manager
-
点击
Game,进入游戏模式,按下Space空格键,场景内会出现右手,移动鼠标出现指引线与焦点,直至焦点移动到物体上,点击鼠标左键并移动鼠标,即可实现移动物体的目的。
三、创建用户跟随菜单
-
Packages/Mixedreality Toolkit Foundation->SDK->Features->UX->Prefabs->Menus目录下找到菜单

-
选择合适的菜单拖动到
Hierarchy层级目录中
-
勾选
RadialView组件启动跟随功能(默认是没有被选中的),同时可以设置Min Distance以及Max Distance实现自定义跟随菜单与相机的之间的距离

四、点击按钮实现目标放大
- 对物体添加脚本
Enlarge.cs,一定保证脚本左侧的复选框是出于未选中状态(如果选中,则无论是否点击了按钮,都会执行当前脚本)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enlarge : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Transform transform = gameObject.transform;
transform.localScale *= 2;
}
// Update is called once per frame
void Update()
{
}
}
-
对菜单的第一个按钮重命名为
Enlarge,与脚本名称保持一致
-
给
EnlargeObject脚本添加监听事件OnClick,具体操作就是将物体拖到None(Object)的物体窗口上,然后添加EnlargeObject脚本的enable属性,表示点击按钮就会激活Enlarge脚本的属性,就能执行脚本
-
点击
Game,进入游戏模式,按下Space空格键,场景内会出现右手,移动鼠标出现指引线与焦点,直至焦点移动到Enlarge按钮上,点击鼠标左键,即可实现放大物体的目的。

-
按照上述方法同理能够实现物体的缩小
五、点击按钮实现目标缩放
-
实现点击之后物体放大,再次点击之后物体缩小
-
1.首先将按钮的名字修改成
ChangeScale
-
2.将
Selection Mode修改成Toggle,并勾选Can Select以及Can Deselect复选框,表示既可以选择,也可以不选择,is Toggled默认是不选择,表示没有被选中
-
3.创建
ChangeScaleObject脚本,确保左侧复选框出于未选中状态,通过判断按钮的isToggled属性,实现放大与缩小交替实现的效果
using Microsoft.MixedReality.Toolkit.UI;
using Microsoft.MixedReality.Toolkit.Utilities;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class ChangeScaleObject : MonoBehaviour
{
[SerializeField]
Interactable inter;
// 标志变量,保证物体不会一直放大或者缩小
bool enlargeFlag = false;
bool shrinkFlag = false;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Transform transform = gameObject.transform;
// 按下按钮,放大物体,注意将标志位取反
if (inter.IsToggled && !enlargeFlag)
{
enlargeFlag = true;
shrinkFlag = false;
transform.localScale *= 2;
}
// 再次按下按钮,缩小物体,注意将标志位取反
else if (!inter.IsToggled && !shrinkFlag)
{
shrinkFlag = true;
enlargeFlag = false;
transform.localScale /= 2;
}
}
}
-
4.将按钮
ChangeScale的interactor添加到ChangeScaleObject脚本的作用域内,这样才能访问到按钮ChangeScale的interactor
-
5.点击
Game,进入游戏模式,按下Space空格键,场景内会出现右手,移动鼠标出现指引线与焦点,直至焦点移动到ChangeScale按钮上,点击鼠标左键,即可实现放大、缩小物体的目的。
六、点击按钮实现目标放大\缩小
- 第四步使用的
Button模式,只能实现点击一次就放大一次,再次点击无法实现继续放大 - 借鉴第五步的方法,我们可以使用
Toggle模式,只要点击就会实现物体的放大,只要点击就会实现物体的缩小 - 采用第五步相同的办法,修改脚本
EnlargeObject,并且将Button修改成Toggle
using Microsoft.MixedReality.Toolkit.UI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnlargeObject : MonoBehaviour
{
[SerializeField]
Interactable inter;
bool firstFlag = false;
bool secondFlag = false;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Transform transform = gameObject.transform;
if (inter.IsToggled && !firstFlag)
{
firstFlag = true;
secondFlag = false;
transform.localScale *= 2;
}
else if (!inter.IsToggled && !secondFlag)
{
secondFlag = true;
firstFlag = false;
transform.localScale *= 2;
}
}
}
- 此时就可以不断点击按钮实现物体的放大
七、部署到HoloLens
1.打包输出项目
-
配置输出名称



-
输出配置

-
打包项目

2. 部署项目
- 将
Windows开发者模式打开
- 使用
USB数据线将计算机与Hololens连接
大坑!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
确保HoloLens能够通过USB实现数据传输!!!!!(大坑),具体操作就是前往HoloLens的设置->设备->USB->启用数据传输
-
打开生成的
.sln项目解决方案,并按照图片所示配置
-
点击“调试->开始执行”即可
更多推荐



所有评论(0)