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)