基于VS2017和Unity的Hololens应用开发

序言

最近因为某些原因与Hololens结下了缘分,在上课之余经过自己及小组成员的不懈努力,终于完成了这个说大不大说小不小的工程,也可谓是历经千辛万苦,下面的讲解纯属小白入门过程,还请大佬们自动忽略,如果有学习需求的话这篇博客将带你进入Hololens应用及游戏开发的新世界(小姐姐~~别走啊啊啊啊啊啊(。_。),非宅男技术帖!!!!!)

环境安装及配置

在使用VS及Unity对Hololens应用进行开发时,需要先对电脑的环境进行相关配置,原料需求如下:

  1. VS2017传送门 :这里由于使用需求不同,VS组件的安装也都不尽相同,一般大家在安装了c语言和c++的组件之后就能满足日常需求,而这里由于需要使用Unity的开发组件,因此在安装时一定要勾选相应的内容基于VS2017和Unity的Hololens应用开发_第1张图片
    如上图所示点击修改即可进入修改组件界面基于VS2017和Unity的Hololens应用开发_第2张图片
    选择其中的通用Windows平台开发(即常说的UWP应用开发)、.NET桌面开发和使用Unity的游戏开发组件,单个组件的安装列表见下图
    基于VS2017和Unity的Hololens应用开发_第3张图片
    基于VS2017和Unity的Hololens应用开发_第4张图片
    基于VS2017和Unity的Hololens应用开发_第5张图片
    在Unity的安装组件中,有一个可选的Unity编辑器,官方推荐在安装VS中的Unity组件时尽量不要选择该编辑器,因为Unity官方有提供LTS(long term support)version,下载链接见下文;(当然如果想省事的话博主偷偷告诉大家VS提供的编辑器也是可以用的!!)

  2. Unity传送门:该安装版本是Microsoft官方推荐的Unity LTS版本,推荐大家下载使用;当然在安装的时候一定要选择相应的组件(博主就是因为缺少对应的组件在上面纠缠了一个下午╮(╯_╰)╭),如下图所示在安装界面选择如下组件(作为Hololens开发以下组件已足够)直接选择next即可,安装时尽量按照默认安装位置,并且最好确保VS与Unity在同一个盘内;
    基于VS2017和Unity的Hololens应用开发_第6张图片
    图中安装组件包括了编辑器、编译器必要的说明文档以及标准的asset库,同时Windows Store .NET Scripting Backened用于编译生成c#工程文件,Windows Store IL2CPP Scripting Backened用于编译生成c++工程(IL2CPP是Unity近几年提出的新的框架,但是作为入门的话.NET框架更接地气一点,emmm至少还是能看一看的)

  3. MRTK(Mixed Reality Toolkit) 传送门:MRTK是一系列脚本和组件,旨在加速针对Microsoft HoloLens和Windows混合现实沉浸式(VR)耳机的应用程序的开发。 该项目旨在减少创建混合现实应用程序的障碍,在github上有开源的项目代码,关于其使用还请参看后文

  4. Hololens Emulator传送门:在前期测试工程时,可以先将生成的工程在Emulator里运行,测试无误之后再将应用安装进头戴设备;

使用方法

  1. 打开安装完成的Unity,在启动界面选择打开现有工程,打开我们之前下载的MRTK工程(选择对应的文件夹后Unity能自动辨识是否为正确的工程文件)
    基于VS2017和Unity的Hololens应用开发_第7张图片
    进入后点击Assets->export package,会出现如下界面基于VS2017和Unity的Hololens应用开发_第8张图片
    选择要导出的内容(在不知道需要什么的情况下建议大家全部导出哈,虽然大了点但是你可以有足够的素材搭建自己的游戏场景),导出至本地文件夹;
  2. 有了上面的准备之后就可以建立自己的第一个工程了,在启动界面新建空工程,根据自己的需求选择项目属性,进入之后在左下方的Assets目录右击,选择import package->Custom Package,这样就将Holotoolkit中已经涵盖的脚本等资源文件加入到了自己的工程中,下面就是搭建场景了;
  3. 场景搭建过程主要是向场景中添加对象并为对象配置脚本,这里我们可以从刚刚导入的Package中选择游戏对象并将其放置到游戏场景中,简单的一个scene就完成了,点击运行之后就会呈现出上图所示的界面基于VS2017和Unity的Hololens应用开发_第9张图片
  4. 有了场景之后,我们当然更希望能够让场景"活过来",这时候就到了脚本出场的时候了,Unity中的脚本文件主要运用基于Unity引擎的c#脚本,当然也有JavaScript版本,这个就根据个人兴趣或者已掌握的编程语言来决定了,比如在我们Porject的asset目录下新建一个脚本的过程如下,点击create或者右击空白区域在选项中选中create均可以创建新的脚本,下面是一个最基本的移动、旋转和缩放立方体的c#脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyScript : MonoBehaviour {
    public GameObject myCube;
    public int tranSpeed = 100;
    public float RotaSpeed = 10.5f;
    public float scale = 3;
    private void OnGUI()
    {
        if(GUILayout.Button("MoveCube"))
        {
            myCube.transform.Translate(Vector3.forward * tranSpeed * Time.deltaTime, Space.World);
        }
        if(GUILayout.Button("RotateCube"))
        {
            myCube.transform.Rotate(Vector3.up * RotaSpeed, Space.World);
        }
        if(GUILayout.Button("ZoomCube"))
        {
            myCube.transform.localScale = new Vector3(scale, scale, scale);
        }
    }
    // Use this for initialization
    void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

将脚本文件拖给对象之后,运行的效果如下:基于VS2017和Unity的Hololens应用开发_第10张图片
可以看到运行之后在场景的左上方出现了三个按钮控件(GUI控件的一种),此时只要点击对应的按钮即可实现立方体的缩放、旋转以及移动。

  1. 到此为止,我们在Unity里面的工作已经进行完了,场景创建、脚本添加结束之后检查运行效果,就可以Build生成.Net框架的VS工程了,在Unity中左上角点击
    File–>BuildSettings会出现如下界面,这里我们需要做一部分工作;首先点击Add Open Scenes按钮,我们刚刚创建的场景就会自定添加进来,其后的编号就是在将来生成的工程中该场景的序号,在进行场景切换时会用到该序号。基于VS2017和Unity的Hololens应用开发_第11张图片
    添加完场景之后,在左侧的Platform中选择对应的生成平台,这里由于我们要生成基于Hololens的应用程序,因此选择UWP(Universal Winsows Platform)平台作为目标平台,选中之后点击Switch Platform即可,之后在右侧的下拉选项中分别选中对应选项,操作之后的结果如下
    基于VS2017和Unity的Hololens应用开发_第12张图片
    此时点击Switch Platform按钮旁边的Player Settings,会在右侧出现一堆选项如下图所示:
    基于VS2017和Unity的Hololens应用开发_第13张图片
    在右侧的6个下拉选项中我们主要操作其中的3个,首先点击Other Settings,在Configuration部分修改Scripting Backened选项至下图结果(如果默认为如下结果则可忽略该步骤,当然这里由于.NET版本不同可能略微有差异)
    基于VS2017和Unity的Hololens应用开发_第14张图片
    紧接着点击Publishing Settings并拉至最底端,在Capability选项中勾选Microphone和SpartialPerception;然后点击XR Settings并勾选Virtual Reality Supported选项
    (!!!就是这个鬼让楼主头疼了半天,因为建了好久的三维模型到了Hololens中变成了二维场景呜呜呜),这样就大功告成啦!点击Build之后选择自己的目标文件夹然后就静候佳音吧(因为首次Build可能会比较慢哈哈哈哈哈)。这里有一个小tips,生成c#工程时,我们默认是在Unity工程目录下,新建一个App子目录,并将工程Build到该文件夹中(方便小可爱们日后查找哟~~)

基于VS2017和Unity的Hololens应用开发_第15张图片

6.此时,进入我们刚刚生成的App文件夹中运行解决方案文件(格式为ProjectName.sln),在VS中就打开我们的工程啦!有木有很开心,没错我们离成功只有咫尺之遥了!但是还是不能高兴的太早,毕竟行百里者半九十,在打开VS工程后,我们选择解决方案配置中的Debug选项,为了验证程序的正确性并减少不必要的麻烦,我们先在虚拟机上尝试运行,选择x86平台(Hololens是32位系统),之后选择运行平台为Hololens Emulator(这时候就要看之前的 Hololens Emulator有木有装好了),配置好之后的界面如下图所示基于VS2017和Unity的Hololens应用开发_第16张图片
这里除了Hololens Emulator版本可能不一样,其他配置均应相同。运行我们的程序,在虚拟机中运行的效果如图所示(第一次启动虚拟机可能会消耗比较长的时间,等十几分钟也很常见):
基于VS2017和Unity的Hololens应用开发_第17张图片
基于VS2017和Unity的Hololens应用开发_第18张图片
这里由于我是通过GUI来添加的Button,因此在生成三维场景之后,二维的Button是无法看到的。这里仅仅作为例子说明使用,大家如果需要使用三维空间的Button控件的话可以直接在创建场景时create button即可,这时候的Button控件即为三维空间中的Button.

结语

到此为止,本篇教程基本结束,希望大家在看了之后能够有所收益。这里我再列举几个过程中比较罕见的错误以及解决方案(其实没有什么解决方案,没有什么问题是把环境重新装一遍解决不了的,如果有…还是推荐大家别装第三遍,仔细阅读下上面的内容看是不是哪里出错了!)
1、生成的VS工程中缺少必要的文件:这种情况一般不会是程序的问题,因为只要是在Unity中能够正常运行的程序生成VS项目之后都应该能在虚拟机上运行,此时就要考虑是不是Unity的安装出了问题(推荐大家安装官方给出的版本,因为我已开始装的最新版的Unity在生成工程之后竟是遇到了上述问题…)
2、生成VS工程时一定记得配置Player Settings!否则工程生成之后无法使用!
3、部分版本的VS在将应用程序加载进Hololens之前需要对工程进行部分修改,这里指出一个比较关键的地方,有时会影响到程序运行是否成功——在生成的VS工程中,选择Package.appxmanifest文件如下图所示基于VS2017和Unity的Hololens应用开发_第19张图片
在选择该文件夹之后右键选择查看代码即可看到对应的源代码,在Dependencies分支下进行修改如下
修改前:

`

  `

修改后:


    
  

你可能感兴趣的:(杂项)