粉丝53获赞310

嗨,大家好,我是大海,今天我带大家一起学习一下关于 unity ugui 这个 event system 时间系统,我们怎样去定义设限的一个输入。 在 vr ar 里面开发的时候,由于我们不能直接用鼠标进行一个操作,我们都是一个空间射线,所以我们需要去定义自己的输入模块,梳理和 ui 的交互事件。 然后我们现在简单的看一下,看一下效果, 然后大家可以看到我这里面的话, ui 是涵盖我们的三种渲染类型的, 这一个,这一个 ui 就是左侧的这一个 ui, 它采用的是一个相机,这个,呃,固定距离去渲染的, 然后右半部分的这一个 u i 采用的是屏幕渲染的,就是不需要相机的, 然后这一个的话是我,我的 space 就在世界空间里面的啊,这个也是,就就是他已经涵盖了 三种,三种不同的渲染模式,然后射线的话也是有 三种。呃,第一种呢就是空间的 啊,这个是我模拟的两个手柄,左手的,右手的,还有一个呢是屏幕的,就是屏幕的,如果我们嗯有一个坐标点, 然后我们需要这个点的话,它能够和 u i u i 去交互,然后怎样去实现?比如说这个小白点, 然后左侧的触发的这个按键是 q, 然后右手柄触发的是一,然后屏幕渲染触发的是 r, 然后我们待会来试一下。好,这样的话我们先解冻这一个, 为了方便给大家演示,我先把这个也关闭,我们先看左手的 好,左手的是抠,然后我这里直接按下抠键的话, 诶,这个坐标 muscle 的 好,你看我按下 q 键,我没有按下鼠标,我按下 q, 然后这个也能滑, 然后这些没问题,然后输入也知道没问题 啊,下拉框也是可以的,两边都是可以的,摊口也是可以的。 好,然后我们这一个,我们把右边的,这个右边的,左边的不用 他这个跟随逻辑好像有点有点不好, 然后看按下机都是可以的 啊,这些个都都都没啥问题。然后屏幕上的点呢?就是这个 盯着我鼠标这个小白点,小白点呢?大家可以看,我其实我不是按鼠标键,我看按这个键盘的 r 键,然后就可以说多种类型都可以,那你也可以把这个打开,然后这个打开,然后 然后你看和三 d 的屏幕上和三 d 的也是都没有没有问题的。然后这个是一种,另外一种呢,并且它还兼容本身的这个鼠标的输入, 这个就是自带的鼠标, 然后我们把它全部打开, 全部打开以后还有一点 就是三 d 物体,我这里面放了一个三 d 物体,然后三 d 物体的话它也能检测到拖拽,然后点击这些事件, 大家可以看一下,比如说现在是 ui 上它不会有反应,然后当我们去拖动的时候,哎,其实它是拖在这个 客服上的啊,当我们拖在这个 ui 上的话,它是不会检测到客服的。 好,然后这一个就是我们 ugui 自定义交互受限的完整功能, 如果大家学会这个功能以后,在 ar vr 里面开发,如果需要自己定义一套设限输入完全没问题的, 那这个还支持,还支持多个扩展的,就比如说左右手,然后也还有一个头瞄点, 你看我直接这样的,然后同一秒点呢?你用 我看啊,用个 f 手机, 好,来,就中间,中间这一个来,我们把另外三个关掉看一下, 好,按下 f 一,你看这样其实也是没有问题的,就说我们这个空间的射线它是支持多种的,你可以有很多手柄,都是可以的。 好,那这一节就先这样,下一节我们就开始来实现他的功能。

大家好,欢迎收看 pick vr 交互开发指南课程。在完成了 vr 开发之前的软件跟硬件准备以后,在实际进行 vr 应用程序开发的时候,我们首要做的第一步就是去创建一个 unit 项目。 实际上去创建一个 unit 项目并没有太大的困难,而更多的问题是集中在创建项目以后如何对项目进行相关初始化的工作,这包括相关开发工具的安装,对于项目的参数设置等等。 所以在这节课当中,我们将为大家介绍一下如何开始创建并初始化。我们的第一个 pick vr 项目要进行 unit 项目的创建,我们还是需要在 unit hub 当中完成。 打开这个软件以后,我们切换到项目这个页面当中,然后点击右上角的新项目按钮。在切换到的窗口当中,我们 首先要做的是确定创建项目所使用的 unity 版本,而在我们这套课程当中,我们将主要使用 unity 二零二一 l t s 来进行相关交互功能的演示。 具体的版本号目前最新的版本是二零二一点三点二九,那么在未来大家看到这套课程的时候,有可能是在小版本以后是二零二一点三点三零三一三二等等。 对于小版本我们没有任何硬性的要求,只需要保证是 lts 就可以了。那至于为什么我们没有使用二零二二 lts, 我们在上节课时当中也做了简单的介绍, 而我们也将在后续具体是在使用 level view 进行实时预览相关课时的时候,会为大家进行进一步的介绍,主要是为了方便给大家进行实时 交互功能的演示,目前来说二零二一 lts 是相对比较稳定的。然后我们选择一个创建项目所使用到的模板,那只有模板来说,就像我们创建一个 word 文档, word 会为我们提供一些预制的模板,比如说我们可以使用简历模板去创建一份简历, 使用一个笔记模板去记录一个笔记,而在 unit 当中,这些模板的作用也是相似的,默认情况下是勾选了三 d 模板,那就相当于在 word 当中去创建一个空文档, 我们可以使用这个模板来创建配口 vr 项目,但是我们推荐大家使用通用旋转管线来创建配口 vr 项目,因为通用旋转管线会对移动 vr 项目带来一定的性能优化,而我们可以基于两种不同的通用旋转管线模板来创建项目。首先在核心模板 当中,我们可以选择三 d 括号 urp, 这样的话会创建一个空的使用通用渲染管线的项目,我们选择三 durp, 括号内是 urp, 然后作为我们这套课程的演示,我们在这里使用的是三 d simple sin 括号 urp。 使用这个模板创建以后会自带一个视力场景, 使用这个模板的主要目的只是为了在后续的课程当中,为了进行一些快速的交互测试,可以直接使用视力场景当中的一些道具,比如说游戏桶,安全帽,工作台等等啊,这是我们使用这个模板的唯一的目的。 那么大家在日常的开发过程当中,完全可以使用核心模板当中的 urp 模板来创建项目,就像刚才所说,通用旋转管线会对移动维亚带来一定的性能优化,那么还是返回使用带有视力场景的模板创建项目, 那需要注意的是,当我们初次安装了某一个版本的 unit 编辑器,在某些模板的右侧会呈现这样的云端的图标啊,这代表的是这个模板还没有被下载到本地,我们需要手动的去进行下载,那就像这个模板一样, 我需要点击下载模板才能进行下一步的项目创建,那这是额外说明一点的,那接下来就是去设定项目的名称以及项目的存储路径。那这里需要注意的是, 无论是项目的名称还是项目的存储位置,我们都不建议在这当中包含任何的中文字符,这是因为在某些情况下,如果涉及到对于外部文件的访问,如果我们的项目是处在一个中文路径下,那包括项目的名称也是路径的一部分, 如果出现了中文,在读取外部文件的时候会出现乱码,从而导致外部配置文件不能够正常的读取啊。这个问题多次出现在我们之前学员反馈的问题当中, 尤其是在 steam vr 当中,在应用程序启动的时候,会读取手柄的动作配置文件,而如果这个路径当中出现了中文字符,会导致这个动作配置文件读取失败,从而导致最终手柄不能够在 vr 当中正常的呈现啊,这是需要注意的, 在这里我们指定项目的名称将它设置为 mypeco 啊,这个名称大家可以任意指定,我们在这里将它设置为 mypeco project, 然后给它指定一个存储的路径啊,大家可以任意指定。另外在下方是确定是否进 进行版本的管理,在这里我们不建议对这个选项进行勾选,在勾选以后,会使用 unit 的 plastic i c m 去进行版本管理。考虑到我们这套课程的主题不会涉及太多关于版本管理的内容,所以大家可以取消对它进行勾选, 保证我们后续演示界面的一致。那在指定的项目名称以及位置以后,我们可以点击右下角的创建项慢钮, 这时候就会开启一个项目创建的流程,我们稍作等待。在项目创建完毕以后, 我们看到这是 unit 编辑器的默认布局,同时会打开视力模板当中所包含的视力场景,它的名称是 simbosen。 对于 unit 的布局,我们推荐大家使用二乘三的布局,那具体的设置是在 window, 然后选择 的料子第一个选项二乘三啊。选择这个布局呢,是因为我们可以最大化的显示 game 窗口与 cc 窗口。同时在某些情况下,我们可以一边运行应用程序,看到应用程序的预览, 然后在 sin 窗口当中,以全局也就是上帝视角的这样一种视图去观察在场景当中摄像机所覆盖不到的范围当中,各个游戏对象的状态。那当然在某些情况下,我们也会将 game 窗口与 sin 窗口放在一起, 这样话能够得到更大的 send 窗口的编辑区域,那么在运行应用程序的时候,也会自动切换到 game 窗口。 然后对于 project 的窗口呢,也是根据大家的使用习惯来定,所有个人更加习惯于使用这种纯的树形结构,也就是点 击 project 窗口右上角的三个点,选择 one column out 啊,这样的话会以一个完全的输赢结构来呈现项目当中的各种资源 啊,大家可以根据自己的使用习惯来调整使用 unit 的布局。那么在创建项目以后, 我们需要做的第二步就是安装各种 vr 开发的工具,这主要是用于交互开发的 unit 的引弹声 toolkit 以及 picco 所提供的 picco 的 sdk。 主要是这两个工具我们在接下来会进行演示,那首先我们先安装 unity 的引台神 toolkit, 那至于这些工具的具体的使用情况,在这节课当中我们将不会进行更加详细的介绍,我们这节课更多的是将注意力集中在工 做流程上的演示,对于具体的工具,我们会有专门的课时为大家进行介绍。那首先是安装 unit 隐藏式 tokey 的,大家可以在 package manager 当中对它进行安装,选择 window, 然后 package manager 这时候会打开 package manage 窗口,我们在顶部的 packages 分类下,将这个下拉列表展开选择 unity registry, 默认情况下是显示在当前项目当中所安装的各种 package。 我们切换到 unit registry, 然后滚动到页面的底部啊,因为是按照首字母进行排序,那同时也可以在右上角这个搜索框当中输入关键词, intection tokit 搜索。选择我们需要安装的工具, 那选择的是 axe intention toolkit, 那需要注意不同的 unit 版本对于 package manager, 它的界面是会有所不同的,像比如在 unit 二零二二当中,在工具右侧的详情页当中,页面的布局会有所不同,但是使用的方式, 其背后的机制都是相似的,那么选择这个工具以后,在详情页的右下角点击 install, 也就是进行安装, 这时候 unit 会请求这个 package 所托管的服务器来进行在线安装。那有的朋友会问,对于 unit 的 package 有没有相关的离线文件可以进行下载安装,因为他们有的时候会处在一个没有网络环境的工作环境当中,那对于 unit 相关的开发工具来说,是没有离线的安装包的,而对于配口来说, 他会提供一个可下载的安装包。稍后我们会进行介绍,那在安装 intention toket 的过程当中,会经历一次重启,也就是现在我们看到的对话框啊,这是因为 unity intention toket 会依赖于一个工具叫 input system, 在安装的过程当中会额外安装 input system, 而在安装了这个工具以后,要对 unit 的项目设置去做一些更改,这些更改需要重启一次 unit 变音器啊,所以我们这里点击 yes 就可以了,表示同意使用 input system 来处理外部的输入, 会继续安装,然后 unit 编辑器会重启,我们稍作等待好,这是在重启项目以后, unit 编辑器仍旧会打开 package manager。 那对于 intention toket 来说,为了能够高效的去 开发 vr 应用程序,我们还需要额外导入两个资源包,所以创建项目以后,在 package manager 当中,我们还是需要选择隐态生 tokit, 在 package 列表的最底部找到隐态生 tokit, 在它的详情页底部会有一个 symbose, 我们将它展开, 我们会用到两个资源包,一个是 start assets, 一个是 access device simulator。 在 start assets 当中会包含一系列必要的动作资源以及预知体,这是我们使用银探深 tokit 去开发 vr 应用程序所必需的一些资源。 我们会在隐台声 tokid 的使用课时当中为大家详细介绍这些资源,在这里我们先将它们导入进来,直接点击这个选项右侧的 input 按钮就可以了。然后下面是 x divine simulator, 这个包是提供了对于模拟器的使用,然后在没有设备的情况下,我们可以使用模拟器来进行应用程序的调试,那对于模拟器的使用,我们也会有专门的课时来为大家进行介绍。那么在这里我们也是先将它导入进来,选择右侧的 input。 在将这两个资源包导入进来以后,会在 project 窗口当中出现一个 sympose 文件夹,在这里就包含了我们刚才所导入进来的两个资源包啊,通过文件夹的名称我们就可以得知得知在项目创建以后,对于 x 隐台式 toolkit 的安装 啊,接下来就是去安装 pico 的 s d k, 那么对 pico s d k 相关的介绍,我们也会有专门的课时来为大家进行介绍。对于这节课主要还是涉及到工作流程上的演示,所以我们 在这里简要的介绍一下。对于 pick sdk 的获取,大家可以访问 pick 的官网,然后在顶部会有一个开放平台,我们选择第一个。 在跳转到页面以后,我们点击顶部的开发资源,这时候会跳转到相关工具的下载页面,我们选择的是 picco unity 隐台神 sdk, 那目前的最新版本是二点三啊,大家只需要注册一个 picco 的开发者账号就可以对他进行下载了。 另外我们也在课程资源当中为大家提供了这个 sdk 的下载,大家可以打开课程资源,然后选择 tos 这个文件夹,然后找到这个压缩包,将它下载到本地,然后解压缩就可以了。 下载了配口的 s d k 以后,我们返回到 unit 编辑当中,对于这个 s d k 的安装,我们还是需要在 package manager 当中进行,所以打开 package manager 与 intention took it 安装方式不同的地方在于,这个工具是可以进行离线安装的啊。对于他的安装方式,我们需要在 package manager 当中点击左上角的加号按钮,展开这个下拉列表, 选择一种安装方式,我们选择的是第一种 add package from disk。 我们定位到刚才所下载的 s d k 所在的磁盘的位置啊,大家可以根据自己的情况进行任意位置的指定。 将 sdk 的压缩包解压缩以后,我们打开解压缩以后的文件夹,然后找到一个 package, 点 jason 这样的一个文件,然后选中它,点击右下角的打开,这时候 package manager 会对这个工具进行安装,而在这个过程当中并没有任何需要我们进行 参与的设置,所以我们等待安装完成就可以了。在安装完毕以后,会弹出一个这样的关于 pico sdk 的设置窗口,这主要会让我们去做一个项目设置选项的应用。 好的,我们也可以再点击右上角的切换至中文来看一下,在这里 pick 的 s, d, k 会检查我们的项目设置, 然后根据情况我们列出一些需要进行改变的设置选项。那比如说在当前的项目当中, pickle 的 sdk 是建议我们将项目的构建目标 build target 切换为安卓平台,也就是之前大家比较熟悉的在 file build settings 打开项目的构建设置窗口。在 platform 这个列表当中是推荐我们需要将平台转换为安卓平台,因为 对于 pico 来说,它的操作系统是基于安卓的,为 pico 开发应用程序,本质上是使用 unit 去开发安卓应用程序,所以在这里列出了这两个选项,需要我们做出更改。 然后另外就是对应用程序画面的朝向默认是 auto rotation, 就像我们使用手机一样,随着屏幕的旋转,对应的内容会随之旋转。而在 pick 项目当中,我们需要将这个选项设置为水平向左,也就是 landscape left, 所以我们可以不用手动的去做这些设置,而只需要点击应用,具体的工作就可以自动完成啊,他会去更改我们的项目选项, 也是稍作等待。在完成了这些项目设置以后,我们就可以关闭配口的设置窗口,然后在 package manager 当中,我们可以找 到配口的 sdk, 我们可以选择 packages, 然后在这个分类下切换到第二个 in project, 也就是项目当中已经安装的 package 列表。这时候我们就可以看到 pickle intention 已经被安装成功了,同时他会打一个标签是 local, 也就是从本地进行了安装,这时候我们可以关闭 package 这边那种, 这样的话我们就完成了一个 piccovr 项目的创建和初步的初始化工作。对于项目的初始化,我们主要是安装了 xr 印探生 tokit 以及 picco 的 sdk。 对于这两款工具的使用,在这节课当中大家没有必要特别的关注,主要将注意力集中在项目的创建以及初始化的工作流程当中就可以了,因为这套课程在后续的课程当中将主要围绕这两款工具展开,尤其是对于隐态生 tokit 来说。那么在接下 下来的三节课时当中,我们先完成一个小的闭环,就是在创建了项目以后,我们要对项目进行测试,同时呢也是为了方便后续关于交互功能相关课时的展开,所以我们首先会介绍如何将应用程序导出至真机进行测试, 另外会介绍如何使用模拟器在没有设备的情况下对应用程序进行测试,同时也会介绍如何使用串流的手段在 unit 边线当中进行应用程序的测试。好,这节课就到这里,我们下节课见。

本期视频我们继续来说这个 ui, 关于锚点这一块,简单的说了一下,锚点的作用其实就是把这个 ui 应对于不同的分辨率, 让大家在不同的设备下都能够完整地呈现出来,而不做一些遮盖,没有遮盖的效,没有遮挡意外, 那么正好创建了这个 button, 我们把其他的 button 先删掉,删掉只保留一个,把它的位置重置 调为中心重置。 f 键 这个字有点大了,给它改小一点。三十, 拆开看一下这个 button, button 就是按钮,也就是我们可以在屏幕上点击的这个事件, 它也可以替换一些图像,比如说按钮图标,在这替换,替换的时候也需要把它转换成这个二 d 和 ui 的模式,不然它无法拖放进去。 也可以更改颜色类型的话,这里我不推荐修改 button 组件,这里可以调整这个正常没有触及的时候这个颜色,或者悬停的时候这个高亮按下的颜色等等。 在这是个比较主要的地方,这个鼠标单机, 我们点击加号,这里可以通通进去一个携带脚本,或者是携带一些音频组件或者其他的一些组件的一些对象,我们可以做一个示例, 这里随便找一个音频吧。 m p 三,拖拽过来,那我们忘了 创建文件夹,这是一个很好的习惯,把每一种把不同种类的素材分成类,放在不同的文件夹内,这样比较好管理。 audios 音频,我们回顾一下上节课的内容,右键音频源 重置位置,当然这个应聘员的位置,嗯,排着重置吧。 然后对于这个音频的这个类型啥的,我们不需要做调整,直接拖入 audio clip 拖进去,因为我们现在像 想要达到效果就是,嗯,点击这个 butt 按钮播放这个音频, 所以我们不需要这个唤醒时播放,这个唤醒时播放,也就是当您一点击播放的时候,他就会播放这个音频,我们来看一下他是否播放, 可以听到,应该可以听到,可以听到,我们需要的是点击这个按钮播放这个音频,所以我们取消这个唤醒式播放 循环,嗯,点击循环吧,让它循环循环播放,然后我们点击这个 butt 按钮,把这个啊 audio sauce 拖过来,里边找到 audio sauce, 里边找到这个 play 播放。也就是说当我们鼠标单接这个按钮的时候,它会播放这个音频,而且是循环播放。我们来测试一下 点击播放,点击八层,你可以听到这个声音, 那么我们如果想要就是第一次点击他播放声音,第二次播放,第二次点击的时候他停止 播放,这个我们可能就需要一段代码的,这个我们以后再说,暂时先不做考虑, 再来看下方的这个,嗯,看看还用到什么呢?原始图像吧,这个比较重要。这个 row image, 它和 image 的区别, 我们可以来看一下区别,它可以更改图像类型,而它不能更改, 他这可以看到一个纹理,而这是一个圆图像。他俩类型是不一样的,但是刚刚这个背景你也可以拖拽到这个里边, 它俩是互通的。 那么这个肉鱼妹子是用来做什么的呢?他一般会配合的这个视频,这个视频播放器共同使用来播放一段视频。 讲到这个 video player 了, 那我们来找一段视频吧。先创建一个视频文件夹 videos, 这是一个很好的习惯。 视频这里还没有视频,看看有没有视频。 嗯, 随便找一个吧。呃,这是啥嘛?这个 m p 四文件拖点过来,松手,待会自动导入,关掉 这里边的这个。嗯,一会再说。因为这种输出他不是警告,也不是报错,所以我们我们可以暂时忽略,如果后期的时候他出问题,我们再去管他视频,这 我们暂时不做改动。我们首先需要查看一下这个视频的分辨率, 因为我不想让它拉丝 右键属性详细信息增宽度二五六零,高度一四四零。 我们点击 readmage。 嗯,不能点 readmage。 嗯,先来下一步。如果你需要播放视频,那么需要的是一个, 呃,叫渲染器纹理,我们在这个 middle 文件夹下右键创建,找到渲染器纹理这儿渲染器纹理点击 命名,就为演示视频吧。演示视频渲染纹理 门里好刚刚的这个大小高度和宽度是二五六零乘以四四零,二五六零乘以一四四零。回车。 这个渲染器纹理也就是我们最终视频需要的这个大小,也就是承载这个视频的这么一个纹理。 所以我们需要把这个渲染视频的这个纹理,它的大小 尽量,也不能说尽量,就是必须和这个视频大小是一样的,这样他才不会有一些拉伸。好,修改完他之后, 我们点击这个 readmage, 把它的大小,先把位置重置,它的大小也改成二五六零乘一四四零, 也是为了防止这个视频进行拉伸。 f 键,你会发现它很大,它甚至超过了这个画布,那是肯定不可以的, 我们修改完这个宽度和高度之后,按下 r 键把它进行缩放,把它放在这个画布之内,不能超过画布,超过画布的话, 超过号不的部分就不会再显示了,我们再给它缩小点吧,不用这么大, 反正我比较喜欢这种规规矩矩的。我们可以把这个缩放改为一个整数,也不用说整数,就是一个小数的整数吧。保存 这个给咱定个名,就叫视频, 这里有个纹理,嗯,我们需要把这个渲染器的这个渲染纹理附上去, 你会发现他刚刚那个白色图片没有了,这个不用怕, 然后点击这个 video player, 上方有两,嗯,这个组件上有两个无,一个是视频剪辑,就是这个演示视频,这个 m p 四文件拖过去,渲染器纹理,渲染器纹理拖过去, 嗯,这个我们也采用一个,看看行不行啊?我们把这个 button, 嗯,这个音频吧直接删掉,把这个 button 刚刚在播放音频,现在让他播放视频,把这个 video player 拖过来,在里边 video player 找到 play, 他俩一个 video player, 一个 audio sauce, 它俩可以认为是一种。 现在就是播放,播放 c, 点击这个按钮播放视频, 我们检查一下有没有问题,我们可以让它,哦,对,这个取消唤醒式播放,然后循环播放, 我们可以来。嗯,播放一下看看,看看有没有播放这个视频。 点击你会发现这个按钮像没有点击上似的,没有点击效果, 那是为什么呢?因为这个按钮被这个视频的这个 remain 给遮挡住了, 这里有两种方法,一种是把这个 button 挪下来,挪到视频的下方,因为在 unit 里边, 在所有的子物体,比如说有有子物体的这个副物体上,这些子物体,子物体的位置越靠下,他在这个场景里边,这个 这个用 ps 里边的话说就叫图层,这里这边也有图层,我们就管它叫图层吧,就是越靠下的这个物体,它就在上方这个图层上, 也就是说现在这个 button 就在最上方顶部,这时我们看看能不能点击,诶,可以点击这个视频 也播放了, 听着播放刚刚的这个也就是一个比较需要注意的地方,因为 ui 遮挡, 尤其是这些按钮,如果你这个按钮被这些 ui 做 image 或者 image 或者是 taste 文本,它的一些这个 嗯组件所遮挡住了,那么他就无法点击的,这个需要注意。 那么刚刚说到一个第二种方法,第二种方法就是可以做一个嗯脚本, 也就是也可以不做脚本,我们可以来尝试一下,再把它挪回去, 我们做一个设想,当我们点击这个发射按钮的时候,嗯,这么说吧, 这个吧台按钮无法点击的原因是于他在他的上方,他这个肉衣妹子遮挡度的底下,上方的这个下方的这个吧台按钮, 那么我们把它这个 readmate 先禁用掉,它就禁用掉, 那么我们剪辑播放一下吧,看看 什么样的效果, 他好像有声音,但没有画面,嗯,有声音,没有画面,没有画面的原因是由于你 禁用的这个 road v 的组件,也就是没有承载这个渲染文渲,没有承载视频的这个渲染纹理了, 那么怎么的,那么怎么办呢?点击 button, 刚刚我们说了一下,要有一个设想, 刚开始的时候这一个 rowe magic 组件是禁用的状态,那么我们可不可以当点击按钮的时候把这个 row rowe mage 给它启用起来呢? 我们为了嗯,考虑到他的这个执行顺序吧,我们先让他这个视频里边的这个 remain 组件找到 unable 的, 把它启用,然后再播放这个 video player play 来梳理一下。点击 button。 第一步,先把视频这个 readmate 下的 readmate 组件组件给启用起来,由禁用并为启用。 第二步,播放视频,我们来看一下能不能成功 点击,哎,很好,而且这样有一个好处,就是这个按钮被遮挡住了,所以在这个播放视频的时候,这个按钮就不像刚刚那个出现了,在这这个视频的前方看起来也比较舒服, 当然他只是被遮挡住了,而并没有被禁用或者被销毁。 如果你现在把它销毁的话,比如说点击它,找到 game more check 它, 或者先用给 mojack 吧,给 mojack 找到赛的赛的 x 五,把布尔兹改为 false, 也就是禁用的状态, 我们看一下好不好使,和我们预想的一不一样。点击,哎,可以,他没有报错,也没有一些异常情况,那么就说明他有用。 我们取消这段话,看一下这个 button 它都进入掉了什么,这个这个起作用呢?当然如果你把它放在顶部的话,我们看一下, 嗯,也是没有问题的,因为它是同时执行的, 这也就是证明了我们这个这个上下这个事件是同时执行的,而不是依次执行的, 如果是依次执行的话,那么他执行到这就不再执行了,也不会出现这个视频。 保存好本期视频到这里,下节视频再见。

嗨,大家好,我是大海上集,我们已经把这个呃整体的这个结构给定义掉了,然后接下来我们就要真正开始处理我们的按键,按下,拖转,松开,然后一系列的这个事件。 好,那我们就先来开始处理这个鼠标按下,鼠标按下呢,我们先来判断一下,来 if custom 点 get 来获取一下这个是否是否有这个按键按下, 然后判断如果是按下的情况下,我们判断 if event e v e a, 如果我们这个, 如果我们这个 custom event 点来 is 点 price。 好,这个的话,就是呃判断当前我们有没有按下,如果我们没有按下 这个就是没有按下,比如说当前我们检检测我们这个按键是按下的,对吧?然后,哎,我,我们是呃一直存储的这个是没有按下的,那么我们这里就要处理这个呃按下的时间 process first, 哎,这里我们就要处理一下这个事件。 好,那么我们再定一个方法,定一下这个 price prices 啊 process price 档,就是我们要处理这个按下,然后一样的把这个 custom 这个复制过来。 好,如果不是按下的话,我们就处理处理,按下,然后把它给传过去。 好,然后当我们松开按键的时候,我们 airs 应付 event custom data, 如果它是按下的,那我们这里是不是要对应的就是 process bosses up, 你看这里我们就需要去处理。哎呀呀呀呀, 这里我们就需要去处理他的这个鼠标抬起,好 啊,这样的话鼠标按下,鼠标抬起就有了,就是按钮,按钮就是说处理这个按下的过程,按下和抬起都要都需要去 去处理,那么呃,下面呢?我们先去处理这个,按下四键好处理,按下四键呢,我们先来一个看一下,我们拿到我们当前当前选中的这个物体, 当前选择的 game mob 接开头,然后等于 customer invent date, 然后点 point, 当前涉嫌选中的好,当前涉嫌选中的物体,拿到这个物体以后呢? 好,我们也要设置,当我们处理按下的时候,我们想改变它的状态的,改变它的 process 等于数好,它被按 长了,然后好把这个 设置按一下,设置按键 为安下状态,然后呢?这里呢是 当前选中的物体,然后,然后呢? custom 点 好,然后设置点击状态好,然后好设置他为处,就表示被点 检讨 好,设置点击状态 好,然后 custom 点 deta, 设置这个指针的一个变化,呃,指针变化呢, 就 reset 这个点就没有变化,然后设置拖拽状态,拖拽拖,拖拽呢?因为我们要拖一定的距离才行,所以我们 customer 点拉根拖拽状态为放松 好,这个呢是设置了一个 设置它的一个拖拽状态 好,然后设置它的一个是否是,呃,是否需要这个,呃使用这个拖拽的一个这个阻力预支,然后我们也是也以此为出 好,然后我们在设置按下的按下的一个位置,就等于 custom 点 position 好,这一个呢是设置鼠标的一个位置 好,然后当我们按下的 时候,我们还要去 pass 他们点 point press, 就是我们按下的时候, 我们还要把当前按下的这一个,嗯,设置一下当前按下的这个 recose 的 result, 把这个信息给设置啊,这个据说设置当前 这个,那也按下来物体 好,当前按下以后我们还要调用一下机内的以 select 的 select 型清洁,就说我们需要把当前的这个 当前的这个物体传过去,然后它里面会去判断,就是说,呃,当前物体是不是,就是说,呃,就是他这个选择有改变, 因为我们回调里面会有一个这个选择改变的这么一个事件嘛,你看我们可以来看,你看他会调这一个,我们把它传过来的时候,他会调用,他会直接执行这个选择方法, 因为有的,所以我们不写,不然的话我们其实是需要把这一段代码搬过来的,但是机内已经有了,我们就直接调动就行。 好,然后这个 button button 也要设置为, 呃,设置为这个呃 left, 因为我们呃默认的我们都是都是判断这个按键是鼠标左键和这个 ui 交互,所以这里我们要写,你不写的话他没办法交互。 好,那我们现在呢,我们就找到有物体了,然后我们要去找到一个能够处理这个事件的物体了, 好,新的处理的就等于 e x 一 e k c 后退一问它,然后好找到这一个可以执行这个事件的物体,就是 current go, 当前 物体传进去,然后还是他们一问他好 好 point, 当好,这样的话我们就按下的时候,我们这里就先找到能够处理到这个 point 当 handle 的这个 ui 元素,然后 呃再找到接收这个 app point 肯定肯定可 handle, 就说明还还要找到一个这个,呃,呃,这个是 down 嘛,对吧?这个是 most down, 然后 can link, 还有肯定可需要处理,需要处理 e x e quote event, 然后 get 好,先找到,然后这一个呢?是找到这个可以处理 ipoint 肯定卡,可以处理,处理肯定可是这样的, 然后 customer inter 啊,不是。呃, current go 把当前问题传过去,然后上面这个是什么?找到处理这个事件的物体并执行事件, 找到处理 这个事件的物体,并且执行事件。 由于这个,由于这个 apple winter 肯定卡,由于这个 apple winter 肯定卡。 handle, 就说由于它是在鼠标按下的时候, 在这个呃按键按下的时候即刻触发的 锁紧,直接发送, 直接发送,直接发送对应的时间, 然后这里面是找到可以接受点击的,呃,可以接受这个点击事件的 iphone 的肯定可能的 ui 元素,但是还不执行,还不执行。然后我们要判断一下 if new price 等于空,那这个并直行,直行以后我们还要拿到这个呃这个 物体,然后如果就说他不能执行啊,那么我们就如果他为空就没有找到的话,我们就把当前能够执行肯定肯的这个也给他给传过去。 好,那么我们来判断, 接下来就判断如果,如果当前按下的 等于这个什么呢?等于 costum 和和上一次按下的如果是同一个,那么我们还要设置一下,呃它这个点击的这个点击的数量, 嗯,点击的数量的话,应该我们是有 custom, 然后点 ctrl, ctrl, 然后在这里要直接加的 加加,然后它的数量加一但和,但是我们两次鼠标点击的,呃,中间有个间隔哈,所以我们还要还 点击一下。太猛等于太猛,点右转使用这个,然后是个太猛使用这个好,然后我们这里不能直接加,要判断两个的这个时间加间隔, 这个太大的话我们就不加了,他这个是判断你这个双击啊,然后就是点了几次去统计一下小鱼这个他怎么点,哎,如果小鱼他这个点击时间的话,我们就加加,如果时间超过了以后, 好,我们这个点击的数量呢?就直接等于一了,然后如果当前按下的或写写没有的 的话,然后我们的数量这样的它也是默认等于一,然后设置好以后,咱们再设置好它的边, ctrl tm 就等于 tm 好,然后处理好以后,我们还要继续给它复制好 point, 它 place 按下的物体就等于 new place 好,按下的物体等于它,然后点击的 好 point 肯定卡,点击的时间呢?等于它,这个是鼠标按下的时候,我们就肯定口的物体等于它 好,然后我们再处理一开始再复一下指针拖动的物体,就等于 hurry 折点 go, 这个是当前的,就是原始指针选中的物体, 边是指针选中的物体,然后 cost 怎么点?关它抓狗就是说好,因为我们按下我们即将要处理的就是说是这个,嗯,拖拽吗?所以我们来获取能够处理拖拽的物体, 或许能够处理处理拖拽的物体,然后 好 if, 然后他点 point dragon, 如果好又可以处理拖拽的物体,那么在我们按下的时候,我们 呃要去执行他的这个初始化,拖拽的一个初始化,嗯,里面传达就是 custom, 然后点 point 加个 drag, 然后 custom 有问题 开始,然后他点好好,这样的话又把这个呃舒适的去掉,那然后 大家可以看一下我们呃这个要处理的有多少多少个这个事件啊?这个从哪里看得着?刚才没有给大家说,我怕,呃,待会大家听得有点迷糊啊。 你看这个的话就是说我们需要处理的时间, 比如说你看鼠标进入,鼠标退出,然后鼠标按一下,然后鼠标抬起,然后肯定可舒适化拖拽,然后 b 根 dragon handle, 然后 dragon, 然后 and drago, 然后脚谱,然后 score, 然后 update selector, 在耐克特取消,选择木屋沙博米特来看守憨豆就说这些事件,我们现在处理的就是说要通过我这个输入,然后去处理这些事件,然后当我们鼠标按下的时候, 我们这里肯定是鼠标按下,比如说我们按键按下,我们肯定是执行这个换一条档的,对吧? 然后我们还要执行这个呃初始化的,这个肯定也是没有问题的,就说当我们鼠标按下的时候,我们其实会执行两个,第一个就是这个初始化, 呃,初始化这个拖拽,还有一个呢就去处理这个,呃呃,按下,按下四键 好了,那么这集就到这里,然后下一集呢,我们就开始处理鼠标,就说按键松开的时候的射键。

现在我们来实现通过鼠标点击 unit 里面的对象,从而打开对话框的交互功能。点击摄像机 main camera, 添加组建事件物理光线投射器, 摄像机太多分不清的话,可以全部摄像机都加上,然后添加三 d 对象立方体。 q, 检查是否有碰撞器。 colliter 层级中添加约案画板, 调整场景窗口的 的展示是叫 观察游戏窗口中的画布大小,根据需求进行颜色大小的调整。 panel 层级中添加 ui 文本, 调整文本的内容位。你好, 因为我的预览方向反了,所以再次调整视角, 调整字体大小为三十,宽高不够也进行调整为两百和七十。 pilot 层级中添加 ui 按钮,并调整按钮文本为退出。 创建新 c 脚本,命名为 open, 打开脚本进行编码, 通过点击对象激活 canners, 打开对话框, 创建新 c 脚本,命名为 quest。 打开脚本,复制刚刚编写的脚本进去,把出入改成 false。 把刚刚编写好的两个脚本拖入到 canvas 中,不要放错位置。 选中 q, 需要点击的对象,点击添加组件事件事件触发器, 点击新事件类型 pointer click, 点击加号,将 ken vac 拖进去,选中 open, click, 选中 button 按钮,将开 noth 拖进去,选中 quest, click 把 canvas 可是勾选取消,关闭 运行,点击物体,出现对话框,点击退出,关闭对话框。 学到了记得一键三连哦!

大家好,欢迎收看皮克威亚交互开发指南课程,在这节课当中,我们将介绍在没有设备的情况下,如何使用模拟器来进行威亚项目的测试。 在报名学习了我们之前两套关于 steam vr 课程的朋友们当中会反馈这样一个问题,那就是 steam vr 有没有这样的一个模拟器,能够让我在没有设备的情况下进行课程的学习,或者是项目的开发。 这些朋友们通常会面临这样一些处境,比如要使用的 vr 设备只能在实验室当中使用,而不能带回到住处,另外就是经常会出差到外地,还有比如就是团队拥有的 vr 设备有限,并不能做到人手一台, 又加上像 h t c five 等等这样的 p c v r, 便携性相对较差,所以有些朋友会有这样的一些诉求,而且这个比 而不低,这是我们在录制前面两套课程的时候所没有预料到的。虽然在 stevia 的 s d k 当中提供了一个叫 to d debug 的简易模拟器,也就所谓的一个调试模式,但是这个功能在使用体验上还是比较差的,只能说是勉强应付一些简易的交互测试。 但是这种情况到了 pickle quest 等等这样的移动平台上,就有了相对比较大的改观,因为我们可以使用引财神 toolkit 来进行 vr 交互的开发,而对于这款工具来说,提供了一个比较便利的模拟器功能来让开发者使用。 当然如果使用的是 h t c y 五,也可以使用引弹声 took it 来进行项目的开发。这个我们会有相关的课时来为大家进行介绍,也就是说如果大家使用引弹声 too kit, 就可以使用模拟器 来解决在没有设备的情况下开发 vr 应用程序的问题。这节课呢,我们就来介绍一下这部分的内容。 intention tokit 为开发者提供了一个模拟器测试的功能,可以在 unit 变音器中运行应用程序的时候,使用鼠标键盘模拟 vr 头显手柄控制器的输入来实现基本的 vr 交互测试。 我们还是以隐台山 tokit 提供的实际场景,也就是这个戴姆森来为大家演示关于模拟器的使用,因为在这个实际场景当中已经实现了一些基本的 vr 救护功能, 那对于模拟器来说是引台山 tokit 所提供的一个附加功能。所以要使用模拟器,我们需要额外导入一个资源包。这个资源包呢,我们在之前的课时当中已经提前导入了进来。在项目初始化的课时当中,我们还是打开拍 配置 manager, 在隐藏生 toolkit 当中,我们找到它的详情页,展开 sumpose。 呃,我们在安装了隐藏生 toolkit 以后,又额外安装了 axa diy simulator 这样一个资源包,它会包含一系列的脚本、图片、配置、文件、预制体等。资源 导入以后,这个资源报道内容会存在于 project 窗口当中的 simpose 文件夹下面,在这个路径下会存在一个同名的文件夹 啊。对于这个资源包的内容,在日常的开发过程当中,我们用的不多,只需要将模拟器开启就可以了,但是我们在这里简单看一下, 在这里会包含一些能够实现模拟器功能的 script 啊脚本,还有一些与 ui 相关的资源,因为在模拟器运行的时候,会在根本窗口的左下角呈现一个 ui 帮助界面。然后 是包含了一些跟模拟器输入相关的动作配置文件。关于动作,我们会在 input system 相关的课程当中为大家进行介绍。然后比较重要的是关于 x d y simulate 这样一个预支体,在程序运行的时候,会在场景当中自动创建一个关于这个预支体的实力, 通过它来实现相关的模拟操作。而这个预制体实力的创建不需要我们手动来完成。在之前相对比较早的版本当中,比如说印台深 tookit 二点一,二点二, 我们是需要手动将这个预制体放置到场景当中的,而在新的版本当中,我们只需要开启模拟器就可以了。那具体的操作步骤是在 project 窗口当中完成的,大家可以选择 edit, 然后选择 project settings, 打开关于项目的设置窗口。在这里我们需要将 页面切换到 xr plugin management 下面的 x 隐藏声 toolkit。 在这个页面当中,与开启模拟器相关的参数是第一个,也就是 use xr dy simulator incense。 在场景当中使用模拟器,我们需要对它进行勾选, 在勾选以后,我们看到与之相关联的下面这个选项, x d y simulator prefab, 也就是模拟器的预制体,这时候会自动的填充我们刚才所介绍的那个预制体, 我们可以对它进行单击,可以看到在 project 窗口当中,对应的内容就会被突出高亮显示,在程序运行的时候会自动的创建一个关于这个所谓模拟器预制体的视力, 而在这个预制体上会包含一些的脚本,会调用相关的 ui 资源啊,从而能够帮助我们实现模拟器调试的功能 啊。大家可以简单看一下这个结构就可以了,我们更多的是直接对他进行使用啊。双击打开这个模拟器,在这个预制体编辑视图当中可以看到有一个 x d y simulate 这样一个脚本,可以展开看一下相关的选项 啊,这个大家有兴趣的话可以在课后去了解一下这个脚本,我们点击预制题左上角的箭头,然后返回到场景当中, 这样的话我们就在项目当中开启了模拟器,进而就可以使用这种方式来进行项目测试了。我们可以在 game 窗口当中啊使用键盘鼠标来模拟 vr 的相关输入,这时我们可以先运行应用程序, 我们稍微调整一下这个界面啊,也让这个场景内容最大化的显示啊。可以看到在默认情况下,我们 移动鼠标就可以实现一个类似于低人称视角上下左右查看场景的功能,这是因为默认情况下模拟器模拟的是投显的输入。 此时在 game 窗口的左下角可以看到有这样一个 ui 界面,这是一个用于帮助开发者熟悉使用模拟器的快捷键图式, 这是在最近的版本更新过程当中,对模拟器的应用性上做出的一些改善,开发者在前期刚接触到模拟器的时候,可以借助这个图式了解到与所选控制器相关的快捷键操作,那么接下来我们就来为大家介绍一些比较常用的快捷键, 那么使用模拟器的一个原则就是先获取相关 vr 设备的控制,然后再使用快捷键模拟相关的输入,从而进行交互。那么对于 pick 或者是快速的来说,在模拟器当中最主要的 三个需要模拟输入的部件就是头衔,左手手柄控制器和右手手柄控制器。那么要获得对相关设备的控制权,我们可以使用两种方式,首先呢可以按照界面右上角的快捷键提示, 多次按下 tab 键来轮流获得对这三个部件的控制。那么按下 tab 键的时候,首先会获取到对于 hmd, 也就是头显的控制,可以看到在左侧会有 hmd 这个选项被高亮,那这时候我们可以移动鼠标来模拟头显上下左右旋转这样的输入。 当再次按下 type 键的时候,首先会获得对左手寿命控制器的控制,可以看到在这个界面的左下角,左手寿命控制器的图示就会被高亮显示,同时在这个图示当中也会标记出左手寿命控制 器各个按键与鼠标键盘相关输入的映射像,比如遥感的输入,我们可以使用 wsd 来进行模拟,与抓取键相对应的键盘按键是计件啊,这个稍后我们会做个演示。我们先来看一下获取各个设备的控制, 那么再次按下 tab 键是获取对于右手手柄控制器的控制,默认情况下都是像控制头显一样,通过移动鼠标来实现上下左右的旋转。我们对于头显来说,所谓的上下左右的查看,其本质上是控制摄像机的旋转。 在测试的过程当中,我们可以随时按下 esc 键来退出对相关 vr 部件的模拟,因为有的时候我们需要使用鼠标去做一些其他的工作,或者是我们需要让某一个设备保持一个姿态不动,然后在这个姿态下让另外一个部件参与到 交互过程当中,这时候我们就可以先退出对所有 vr 部件的模拟,那么刚才我们是通过多次按下 tab 键来实现循环模拟相关 vr 部件的输入。 那么对于头衔左右手两个手柄控制器也有专门的快捷键来直接获取到对他们的控制 啊。对于摄像机来说,也就是头显,我们可以按下 u 啊,就像这个界面上所提示的一样,按下 u 键可以直接获取到对于头显的控制,那么按下 t 键是获取到对于左手手柄控制器的控制,然后按下外键是获取到对右手手柄控制器的控制。 所以有时候如果我们要集中测试某一个 vr 部件的交互功能,我们就可以使用快捷键来直接获取到对某一个 vr 部件的控制。另外我们可以看到在 t 外这两个快捷键右侧会有一个中括号, 他搞这样的标识,这个标识的意思是当我们按一下 t 键或者外键的时候,是开始对左手或者是右手进行控制,那么当再次按下 t 键或者是外键的时候,则是关闭对左手或者右手的控制。 那么在这里我们所多次提到的对 vr 部件的控制,大家也可以理解为开始或者是结束对某一个 vr 部件输入的模拟, 那同时还有一个不太常用的对设备的控制快捷键,是一直按下 shift 键啊,大家可以看到在图示当中啊,会有这样一个提示,对于左手来说,可以按下 t 键,或者是一直保持按一下 shift 键,也就是中括号内的 hold, 当松开 shift 键的时候就关闭了对于左手手柄控制器的控制,那么对于右手手柄控制器来说 说,也可以一直保持按下 space, 也就是空格键来保持对右手手柄控制器的控制,当松开空格键的时候,则是结束控制,这个呢相对比较容易理解, 那他获取到设备控制以后,也会有不同的快捷键,能够模拟出与之相关的交互功能,那么接下来我们就来分别介绍一下。首先我们来看一下,对于头显,我们可以直接使用快捷键 u 获取对于头显的控制, 对于拖线来说,我们可以按一下 w a s d 啊,来实现前后左右的移动 啊,就像一些第一人称射击游戏一样啊,可以在场景当中实现一个漫游,在这个过程当中也可以移动鼠标啊,来进行综合的这样的一个移动。我们看到在这个界面当中会有一个 q 跟 e, 那么使用这一对快捷键可以实现视角的上升 以及下降啊,实现一个模拟蹲下或者是站起啊这样的一个操作,那这是对于头衔啊,与之相关的交互功能并不是太多,我们重点来看一下左右手两个寿命控制器, 我们按下 t 键,先获取到对于左手寿命控制器的控制,在默认情况下是移动鼠标进行自身的旋转, 同时我们按下 w、 a、 s、 d 的时候,可以实现一个未值的传送功能。在这里需要大家注意的是,对于未值的传送,在引台声 took it 当中会有多种形式,有的就是像现在一样能够实现这种匀速的移动, 而有的情况我们可以使用瞬移来实现为之传送,那么此时我们在按下 wsd 的时候是呈现了瞬移这样的交互形态。那就像对于右手来说,我们按 按下 w、 a、 s、 d 啊,分别实现的是一个转身以及瞬移的未知选择这样的交互啊,这要需要注意的是,并不是左手只能够实现这样的一个匀速运动, 这是我们后期通过开发来分别指定到左手或者是右手不同的未知传送形态,所以在这里理解 w s、 d 它实现的模拟交互是未知传送功能啊,只不过在左手是给它赋予了一个匀速移动的未知传送形态。 那对于手柄控制器来说,常用的交互形态是抓取。在引太深 tookit 的模拟器当中,抓取的快捷键是 g, 也就是 grab 的首字母。当我们使用射线或者使用手柄控制器与被交互的游戏对象发生接触的时候,这时候按一下 计件就能够实现对游戏对象的抓取,当松开计件就可以实现对游戏对象的释放。 同时我们可以看到这个图示对于手柄控制器上的不同的按钮也分别指定了不同的按键,因为在这个视力场景当中并没有实现具体的功能,所以我们无法去演示出这些按键的交互功能, 在这里只是演示了对于 wsd 遥感功能的啊模拟以及关于 grape 键也是抓取键的交互演示。那如果大家在后期实现了对于这些按键的编程,可以使用模拟器对应的这些快捷键来实现这样的模拟交互。 那么在右手手柄控制器上,我们按一下外键也是有类似的这些快捷键,我们获取到右手手柄控制器,可以看到也是 wsd 实现位置的传送,只不过在这个视力场景 当中是使用瞬移的形式来实现位置的传送啊,当我们指向一个位置的时候,按下 w 键啊,可以实现这个位置的选择,通过这种曲线的形式,就像在 sdvr 当中实现了这种瞬移形式, 同样也是可以按一下计件来实现对游戏对象的抓取,我们瞬移到这个位置,指向这些可被交互的游戏对象,按一下计件, 同样也能够实现对他们的抓取。那么还有一个比较常用的快捷键是 r 键,我们还是以右手为例 啊,先获取到对于右手的控制,默认情况下是使用鼠标移动来实现模拟手柄控制器旋转的交互。当我们按下按键以后,再移动鼠标,这时候会实现手柄控制器的上下左右的移动,那如果我们滚动鼠标滚轮 啊,可以实现手柄控制器的前后移动,就可以模拟用户伸手去购一个游戏对象啊,这样的一个交互 啊。再次按下二键会切换到旋转模式啊,这是一个移动跟旋转模式的切换这样一个快捷键。 另外我们看到对于这个提示的界面啊,在 game 窗口占有的区域还是比较大的,当我们熟练使用了这些快捷键以后,这个提示界面就没有必要一直保持显示了,我们可以将其折叠起来,以呈现更多的场景内容。 我们可以点击界面右上角的按钮,这时候这个 ui 界面就会以最小化的形式呈现在左下角,从而不会遮挡太多的内容。当我们偶尔忘记一些快捷操作的时候,可以再次展开这个界面来进行查看啊,去看一下相关的快捷键提示。那这 在使用模拟器进行项目测试的时候,一些常用的快捷键客户呢?大家可以基于这个界面提示,在设立场景当中去做一些测试和练习。要熟练使用模拟器,并没有任何其他的技巧,只是一个熟悉跟练习的过程。 另外对于这个模拟器常用的快捷键,我们也为大家整理了一张这样的 ppt, 大家可以做一个参考,但是我们认为这个 uy 界面已经做的足够完善和直观了,大家可以以这个界面作为主要的参考。 作为本节课最后的内容,我们有必要为大家提醒注意一点,那就是如果要将应用程序导出到真机上进行测试,那么在导出测试之前,我们需要关闭模拟器,否则的话,在真机上运行应用程序的时候,会出现应用程序运行的异常,那具体的表现就是应用 程序的画面会卡在某一针静止不动啊,一般是应用程序开启以后的第一针,只需要注意的,那么对于模拟器的关闭就是执行开启模拟器的反向操作,所以我们点击 edit 选择 project settings。 我们在之前是勾选了第一个选项,那么要关闭模拟器就是取消勾选这个选项。在关闭了模拟器以后,我们就可以将应用程序导出至甄姬进行测试了,这是需要注意的一点,也是大家在日常开发当中容易忽略的一点啊,容易忘记。 好,这就是我们这节课的主要内容了,我们可以使用模拟器在没有设备的情况下进行 vr 项目的测试。随着隐台声 tokit 版本的更新,这个模拟器的功能在应用性上,在用户体验上也在逐渐的优化。可以说大 部分的 vr 交互我们都可以通过模拟器来进行模拟,但是使用模拟器会存在一个这样的局限,那就是如果涉及到一些比较复杂的或者是运动比较剧烈的 vr 交互, 如果使用鼠标键盘来进行模拟就变得相对比较困难了。那具体比如说要开发一个使用双手同时与游戏对象进行交互的功能,再比如说一个拳击类的 vr 游戏,需要快速轮流出拳来进行游戏, 这时候如果再使用鼠标键盘进行模拟就显得比较吃力了。所以在有设备的情况下,我们还是更倾向于使用一种接近于 p c v r 的调试。测试流程 就是直接在 unit 编辑器当中运行应用程序,程序的内容能够实时的呈现在 vr 设备上,而开发者可以不经过打包直接在设 会上进行项目的测试。那么这边是我们下节课将要介绍的内容,我们将介绍如何使用串流的形式,使用甄姬在 unit 编线当中实时的进行 vr 项目的测试。好,这节课就到这里,我们下节课见。

这个讲座的目的就是希望我们一些 ui 需要拼界面的同学可以就是呃完全的掌握,然后对以后那个界面的设计和构成,还有对 unit 有一些了解。 我们先看一个例子,这个就是,嗯,有你体就是拼出来,然后包括一些动效上面的效果,就是游戏里面的录屏, 然后这个动效的话是用那个 animation 还有那个 doing 一起做出来的。那首先用立体的界面我们可以看到就是,嗯,最上面这一块就是我们的菜单奶,然后这边就是一些控制的东西,这个是预制品内部结构,我们可以把它展开看, 然后在这个地方我们可以进行一些操作,然后这个地方是我们参数的一些调整,然后这个就是工程目录, 然后我们可以在这个地方去进行布局的调整,这个自己可以看一下。第一个这个就是我们可以移动屏幕, 这个是呃移动物体旋转缩放,还有显示外观和毛点那个快捷键,大家到时候可以就是拿这个 ppt 自己看一下。然后这是我们的场景里的操作,比如说我们可以横向移动,纵向移动,还有就是我们旋转中间的话,它是可以四个方位自己移动的,这些大家都可以就看一下。然后关于那 参数面板的话,我们这个 regret 是还原,还原到就是我们打开预售再开始的样子。然后我最爱的话呢就是保存这个地方呢是比较重要的是一个,嗯调整我们的适配, 嗯,还有他的,比如说位置啊,没有毛点之类的,然后我们毛点的位置是可以在这个地方,就是这个地方可以进行一个那个调整数字的调整,他的区间是零到一, 那我们就是毛垫在中间的时候是零点五,零点五,然后左下是零零,右上是零一一, 然后我们点击这个的话,它是可以添加组件的,比如说一些哦马斯克啊,一些动物效,那个都情啊,或者图片啊、文字之类的。

大家好,欢迎收看皮克威亚交互开发指南课程,在这节课当中,我们将为大家介绍如何将皮克威亚项目导出指针机进行测试。 当项目开发到一定阶段,在完成了一些功能以后,我们通常需要将项目导出到实际的设备上去进行测试,看看开发的功能能否在粘接上顺利的运行,运用程序实际的性能表现如何。 另外,当项目完成了开发要最终交付的时候,我们也需要将项目导出为一个 apk 的文件交付给甲方或者是上架应用商店。所以这节课啊,我们就来介绍一下这部分的内容。 我们之前提到过,为 p 口去开发 vr 应用程序,本质上是使用 unit 开发安卓应用程序,而 unit 本身并不具备构建安卓应用程序的能力,也就是最 中产出的 a p k 文件,而是将这箱打包的服务外包给了相关打包的工具,这包括安卓的 s, d k, open g, d k 等等。所以在正式导出应用程序之前,我们需要确保在当前使用的 unit 编辑当中已经安装了相关的安卓打包的模块。 我们在安装 unit 变音器的时候会有这样一些选项,我们之前也演示过,在平台列表当中一定要勾选安卓 budspot 以及它所包含的所有的选项。 那只有安装以后,当我们去执行打包命令的时候, unit 才会调用起这些所谓的打包外包团队,让他们去完成应用程序的打包购物件导出相关的工作,那这是在打包之前需要做的一部确认工作,那实际上打包的动作非常的简单,我们 我们只需要等待构建完成就可以了,更多的工作是集中在对于 unit 项目的参数设置上,在导出之前,不同的 vr 意念平台对于 unit 项目的参数设置会有不同的要求, 而对于这些参数的设置没有太大的技术难度,我们只需要根据官方提供的参数去进行设置就可以了。 而对于 pico 来说,也是提供了这样对应的文档,大家可以打开 pico 的官网,然后在顶部,就像我们上节课查找 pico 的 sdk 一样,点击顶部的开放平台选择第一项, 然后在新页面当中点击开发资源链接,要找到官方文档,我们可以点击右侧的文档这个超链接,或者是直接找到 pcodsdk, 在底部会有一个查看文档,直接跳转到使用 unit 开发配口分享应用程序相关的文档说明,因为开发配口应用程序不光是可以使用 unit, 还可以使用 unreal, 官方也提供了针对 unreal 的 sdk 和文档。那么对于导出之前的 unit 项目参数的设置,我们可以选择左侧导航栏,其中有一个快速开始, 我们选择完成项目配置,这时候就会打开在抖出之前 unit 相关的参数设置,大家可以进行参考。 那至于这个文档的路径,我们不能保证在未来还是保持这样的一个查找方式啊,因为对于官网来说也是不断在进行改版的 啊,目前来说是这样一个路径,大家在课后呢可以根据这个链接去看一下这份文档。好,我们回到 unit 编辑系统当中,对项目进行相关参数的设置。我们首 首先要打开项目的 build settings 窗口,也就是在菜单栏当中选择 file build settings, 打开构建设置窗口,在这里做一部检查,在 platform 这个列表当中确认已经切换到了安装平台。 由于我们在上节课当中安装了 picco 的 sdk, 所以在 piccosdk 的设置窗口当中,我们自动应用了设置,从而将目标平台切换到了安卓,这一步只是做一步检查确认就可以了。 我们更多的设置工作是集中在项目设置窗口当中,大家可以在当前的窗口当中点击左下角的 play settings, 会打开 unit 的 project settings, 或者是大家可以选择 edit, 然后选择 project settings, 同样可以打开这个窗口。我们切换 到 player。 首先需要做的设置是设置 package name, 它包含三个需要设置的字段,一个是 compend name, 也就是公司或者是组织的名称,大家可以根据自己的情况任意进行设置,那在这我不妨将它设置为 xr study。 然后对于 product name 默认情况下是与我们创建项目的名称相同,我们可以保持默认。然后下面的 watcher, 也就是应用程序的版本号,如果应用程序已经发布到应用商店,那可以通过设置这个参数来标识软件当前的版本号。 而刚才我在将 com 的内幕设置为空的时候,在 unit 底部会弹出这样一个红色的警告,也就是说刚才我们没有设置 com 的内幕,它会影响到整个 package 内幕的拼接。最 中的包名称会以一个类似于网址的形式拼接出一个唯一的啊,就像 id 一样,在安装到安卓操作系统当中以后,我们可以通过这个 package name 来标识我们唯一的这个应用程序。这个拼接好的 package name 会在 pico 当中体现在资源库的程序列表当中, 也就是这个位置。而对于版本号的查看是在这个路径下查看权限,然后点击查看详情,在这里就可以找到版本号。 而对于 package 内幕来说,在项目当中会有与之对应的一个选项,大家可以在当下页面当中滚动到底部会有一个 identification, 在这一栏当中,默认的第一个选项是不勾选的,我们可以看到最终拼接出来的 packager name 是由 company name 以及 product name 组成的, 是一个王者的形式。那如果需要复写一个 package 内幕,我们可以勾选这个选项,然后在下面去填写自定义的一个 package 内幕就可以了啊,通常情况下我们不需要对它进行勾选,在顶部 完成对这个 package 内容的拼接就可以了。然后我们需要在这个页面当中做的第二部分的设置是在 other settings 当中, 在设置之前,我们需要确保在顶部的标签页切换到安卓,我们滚动这个页面,在 r 的 settings 当中,首先需要设置的是 minim api level, 我们按照官方文档的说明,将它切换到安卓十,也就是 api level 二十九就可以了啊,因为不同的安卓搜索系统对应要使用支持的最低的安卓 sdk 的版本是不同的啊,对于苹果来说,需要使用的最低安卓 sdk 的版 版本是十。而至于下面的 target api level, 我们保持默认,也就是 automatic 就可以了。然后下面做的另外一部设置是将 scripting back end 从 mono 转换为 i l to c p p 啊,这时候会弹出一个警告,如果我们使用 r o two c p p 去进行安卓的构建,如果我们选择的是 r m v 七,这时候就不被支持了,我们需要对这个选项取消勾选啊。 target architecture, 这主要是针对硬件 cpu 架构的啊。一个设置,我们在取消了 arm v 七以后,需要勾选的是 arm 六十四 对它进行勾选,这样的话在 player 这个页面当中就没有其他需要进行设置的了。然后我们需要将 project settings 切换到 x plugin management 当中,在这个页面 当中,我们需要开启对配口的支持,具体的设置还是需要切换到安卓标签页,然后勾选配口。 我们可以将这一步设置理解为启用 p 口 s d k 插件啊,因为上节课我们虽然安装了 p 口的 s d k, 但是如果不做这一步设置的话,还是不能够启用这个插件,或者是不能够使 unit 支持 p 口设备的, 这是非常重要的一步,如果不对他进行勾选,我们虽然能够顺利的将应用程序导出,但是运行在配合上的时候并没有任何的反应啊。当应用程序开启以后, 同时呢,我们也是需要确保在这个标签页当中其他的所谓的插件的选项并没有被勾选,否则的话会报错,或者是出现应用程序运行的异常。这样的话,在 project setting 这个窗口当中的参数设置就进行完毕了。接下来呢,是针对 picco 去做一部设置,也就是为项目指定 picco 应用程序的 app id, 这也是在 piccosdk 最近的更新当中新加入进来的一个政策啊。如果将应用程序导出为 apk 或者是安装到征集上, 必须为他提供一个 app id。 大家可以在 unit 编辑器当中选择顶部的 px sdk 这个菜单,然后选择第一项 platform settings, 这时候会弹出一个窗口,我们在导出之前需要在这里去填写一个 a p p id, 如果没有这个 a p p i d。 的话,在导出应用程序的时候会报错。那需要注意的是,这个 a p p i d 是用于在 pico vr 平台上唯一标识应用程序的标识符是在 pico 应用 程序管理后台使用的,而我们刚才介绍的需要拼接出来的 package name 是在安卓设备上安装和识别应用程序的标志符啊。这两个事物大家需要做一个区别。 对于 a p p id 的获取是在 pico 的开发者平台后台来完成的,我们还是打开 pico 的官网, 然后像之前一样切换到开放平台。这时候我们需要具备一个 pq 的开发者账号,在右上角会有一个登录按钮,如果没有账号的话,大家需要先注册一个这样的账号。至于登录跟注册账号的过程,我们就不再演示了,因为这是一个完全填写表单的过程, 登录以后会跳转到原来的页面,我们点击顶部的应用管理中心,在这个管理后台当中,更多的是对要上架到 pico 应用商店当中的应用程序去做一些设置, 去管理一些月应商店相对接的信息,像财务信息、成员法律原件等等。我们要上架的每一个应用程序都会呈现在右侧主要的这个列表当中。 大家可以看到我是为了做一些测试,创建了多个应用,那作为这节课的演示,我们先创建一个草稿,点击右上角的创建, 然后在弹出的对话框当中,我们先输入应用程序的名称,输入 my pico project, 然后发布平台。对于 pico 四或者 pico 三来说都是六到付的设备,我们在之前的课时当中也为大家介绍了关于到付的概念,然后我们点击创建, 创建以后我们点开这个草稿,所以从这里也可以看出这是对接 pico 应用商店的。我需要为要上架的应用程序准备 些相关的信息,像基本的描述,应用属性,开发信息等等,还有图片、视频用于宣传所使用的一些物料。 要获得 app id, 我们需要点击左侧导航栏当中的 api 链接,切换到这个页面以后,那么所谓的 app id 就存在于这个位置,我们直接复制旗下对应的这一串字,不串就可以了。选择以后 ctrl c 复制,然后返回到 unit 编辑当中, 在 unit 编辑线当中,按照刚才的路径打开 biggle platform settings, 打开这个窗口,然后粘贴刚才我们所获得的 app id, 这样的话在导出的时候就不会报错了。 我们目前创建的项目还没有任何的内容,我们还没有写任何一行代码,还没有创建任何一个场 场景,那作为测试的素材,大家可以找到这样一个场景来进行导出的测试。我们在上节课时当中安装了 intention toket, 然后顺便还导入了两个用于快速测试的资源包,一个是 start asset, 一个是 x d y s simulate, 它会存在于 project 窗口当中的 simpose 文件夹下面。而对于 start assess, 它包含了一个用于测试或者是演示的视力场景。 大家可以按照这个路径找到这个场景文件,它是存在于 simpos x intension toolkit, 然后版本号 start assets。 这个文件夹下面会包含一个戴墨森,我们可以双击将它打开, 先关掉这个 bear 的 settings。 这个测试场景列出了一些银泰深 toolkit 所能够提供的基本的交互光 演示,大家简单看一下就可以了。我们会在 intention to keep 基本使用的课时当中再次介绍这个实体场景,那我们会将这个场景打包到要测试的应用程序当中,在粘接上进行查看。 在抖出之前,我们需要将它添加到项目的构建列表当中。具体的操作是这样的选择还是打开别的三 tt, 我们需要将视力场景文件拖拽到 sense in build 这个列表当中,那对于默认自带的 simosin, 我们需要将它删除,选中这个选项,按一下 delete 键, 这样的话这个场景文件就会打包到应用程序当中。对于这个操作,如果要展示的场景是已经被打开的,那这时候我们可以点击右下角的 id, open sense, 同样可以将当前的打开的场景添加到这个列表当中。 这一定要需要注意的地方,在导出之前,一定要确保将要展示给用户查看的场景添加到 since in build 的这个列表当中,否则的话,即使我们添加了什么场景,跳转的逻辑也不会在应用程序当中呈现, 因为这个场景压根就没有被打包到应用程序当中啊,这是容易忽略的一个地方,那么接下来我们要进行的就是实际的打包工作了, 我们需要使用一根数据线将 pico 设备与电脑连接,在连接完成以后,那目前我已经完成了这一部分的工作。在连接以后, 我们在这个窗口的 rundis 这个参数右侧就可以找到已经连接到电脑上的配购设备。如果没有出现的话,大家可以点击一下 refresh, 刷新一下,展开这个列表,就可以找到已经连接 接到电脑上的设备。那么在这里需要注意的是,对于闭口设备来说,需要按照我们之前介绍的内容,在系统当中开启了开发者模式啊,否则的话是找不到的啊。另外也需要保证设备处于一个开机状态,而不是关机充电的状态。 我们选择这个设备,然后我们就可以点击右下角的两个按钮当中的一个啊,对于 bell 的来说, 更多的是用于发布,它是直接将应用程序打包为一个 a p k 文件存储在本地瓷盘上,而不会安装到配口设备上。而如果我们选择 build and run, 那么应用程序会打包成一个 a p k, 然后自动安装到配口设备上, 我们选择的是后者 build and run, 这时候依然会弹出一个对话框,让我们选择 a p k 文件 的存储路径。就像刚才我们所说,还是需要打包出一个 a p k 啊,存储到本地磁盘上,那么选择一个目标路径,我由之前做测试,已经导出了一把 a p k 文件,我们可以将其覆盖选择保存。 这时候就开启了应用程序导出的一个流程, unit 会调用安卓相关的开发工具来完成这个构建的工作。 好,这时候应用程序已经被顺利导出并安装到了 picco 设备上,然后在 unit 编辑器的底部出现了这样一个提示,表示应用程序被成功导出 sexitid, 然后用时三十八秒。 那这样的话我们就可以佩戴上配口头衔,在设备上去查看一下应用程序的运行效果了。 带上图像以后,应用程序会自动运行,因为我们刚才打包的时候点击的是 beauty 的 run, 也就是构建并运行,这时候呈现的内容便是我们刚才所包含进来的视力场景。在这里大家简单看一下就可以了,因为这并不是我们这节课的重点, 在后续的课时当中,我们也会多次接触到这个实力场景。我们在开发 pico vr 应用或者是安卓应用程序的过程当中,面临的比较大的挑战就是在导出过程当中偶尔出现的比较诡异的报错, 这些情况是很难避免的。有的时候是构建项目使用的安卓相关工具的问题,有的时候是 unit 版本的问题,而有的时候是我们项目本身存在的问题,比如编写的脚本存在编译错误,导入的 unit 插件不兼容,我们只能根据 用内帖编辑器弹出的报错信息,针对性的去解决这些问题。当然大家也可以在我们的交流群当中反馈在导出过程当中出现的报错,我们来一起解决具体的问题。 好,那么这就是我们这节课的主要内容了。通过刚才的演示,大家也能够体会到要将应用程序导出的真机测试还是比较耗费时间的,因为会有一个导出的时间等待,而且每次都需要使用数据线将设备连接到电脑上, 所以通过将项目导出至真机进行测试,这种方式在日常高频调试的情景下还是比较低效的,他更多适用于阶段性的测试,或者是在项目最终要发布的时候这样的应用场景。 所以在接下来的两节课时当中,我们将分别介绍在 unit 编辑当中使用模拟器以及串流的方式对应用程序进行测试。好,这节课就到这里,我们下节课见。

各位小伙伴大家好,我是 michael。 呃,这个视频中我们要来聊一聊在这个游戏中非常重要的一个元素了,就是 ui, ui 就是 user interface, 也就是嗯,用户的界面, 所以用户的界面包括什么呢?好像你以前玩过的一些游戏的啊,初始的登录的界面啊,会有一些按钮,包括我们游戏的过程中,也在我的游戏画面的周围会有一些元素,比如说啊,角色的血量啊, 啊,还有他的得分啊,包括倒计时啊,还有一些暂停重置的按钮,这些都叫做 ui。 所以今天我们来初步的了解 ui, 那我们要做的是什么呢?还记得我们之前的游戏里啊,我们在这个游戏角色的 ctrl 下边给他的他一个 来计算我们收集了多少个樱桃的这个变量吗?那么我希望这个数值能够显示在左上角, 因为好像超级玛丽那样,我吃了多少个金币,我至少能知道这里有个数字对不对?还有如果你的关卡被设计成以后,需要收集固定数量的某样物品才可以通关,我也需要知道我收集了多少个东西。所以今天我们就来初步来了解一下什么是 ui, 还有怎么样来做这个步骤。 好的,嗯,很高兴大家能够跟着这个视频一直来做这个游戏,相信你的游戏已经现在越来越完整,有了他的初步的样子了。那我们来看看 ui 怎么做, 怎么来做 u i 呢?那在我们的 hierarchy 的窗口里,点击鼠标右键,然后你会在这个菜单中看到 ui 这个分类,那在 ui 这个分类当中其实有很多,看一看,这些其实都是我们以前玩游戏的时候经常看见的,比如说按钮,比如说输入窗口,需要输入账号名,密码啊,包括一些滑条,一些文字,包括图片的显示, 这一切的一切啊,都是 ui 的元素,那这些元素需要画在一个特定的界面上,其实这个界面并不是我们游戏的这个画面,因为你想象一下,如果我在这显示这个樱桃的数量, 可是我摄像机一旦走了,那这个数量不能跟着我的摄像机走,怎么办?所以我们来了解一下 ui 的基本的构成,所有的这里的 ui 的元素都需要一个最重要的东西,就是这个 canvas, 就是这个画 布,这个画布就是这个呃, ui 呈现 ui 的一个一个。呃,怎么说?一个容器,一个平台,所有的 ui 元素必须在这个呃画布里,所以我们先创建这个画布, 那我就不给他改名字了啊,就叫这个就行了,然后他会自动生成一个 invent system, 就是一个。呃,叫什么?呃,我们暂且叫这个 invent system, 就是情景的触发的这个系统啊,我们先不要管他,我们先来看看这个啊, canvas 啊,这个画布之后,我们希望在这里边能显示一个数字啊,我们就在这里边继续添加,再点击 comments 右键,然后选择 ui, 我们添加一个 tax, 这个 text 要叫什么呢?在 inspector 的窗口里,我可以选择这个 text 所显示的内容,那这 text 到底在哪呢?我们 暂时看他是在这个位置对不对?但是请留意,我们编辑的时候不要在这样的页面中来进行编辑,这不容易看见,所以我们点击 canvas, 还记得上次我们说过吗,按键盘的 f 键可以 找到福克斯到这个项目这个元素的具体的窗口,所以我们看到了这 canvas 好像完全脱离我的游戏画面,是一个单独呈现的一个屏幕一样。没错啊, ui 的元素都会在单独的这个界面上 啊,来进行编辑,这个方便我们区分游戏的画面,所以我们只要在这里编辑就好了。那我们看到我们的 text 在这里,那我可以将它挪动到我想要去的地方, 哎,然后我可以在这里编辑一下它显示的内容,比如说我像这显示的是 cherry 啊,然后我在这里也可以选 它的字体啊,比如说粗体,然后大小我也可以调整啊,当然根据你的喜好来调整它的大小,包括居中,偏左,偏右啊这些基本的啊,是这个文字的编辑内容,包括它的颜色是什么啊,你都可以自己去选择你喜欢的 啊。然后我有了这个基本的这个文字以后,这个文字是没有变化的,但是我还需要另外一个可以变化的数字,是根据我收集了多少个樱桃来变化的。所以我们再点击开粉丝,然后右键新建另外一个 tax, 那为了区分他,我要给他重新命名,第一个就叫做 cherry, 第二个我要叫它 numbers, 等于 m b 二十。好,这个 numbers numbers 我会跟它对齐,然后也调整刚才这字体是二十二,那么同样 二十二,粗题居中,然后默认显示的是零,所以这样在我们的游戏画面你就看到了。诶,我虽然在这编辑了,但是我的游戏试玩界面中已经能看到它的效果了,所以我可以细微的调整一下它, 好好的,大概是这样,那接下来我要就要来让这个零会根据我收集的啊游戏角色的这个 chari 的数量来进行变化了。那怎么来做呢?当然就是在代码里写上了,那我们一起来看看 ui 的代码要怎么做 好。双击打开我们的 vs, 然后我们来做做 ui 的代码。那首先这个部分我们简单啊,调整一下,所以这个部分是移动的,我们暂时不看,我们把它 收集啊,这个部分是切换动画,我们也给他一个备注, 养成习惯, 然后收集收起来。然后这个部分还记得吗?这就是我们的收集 好,所以我们已经其实有了一个变量,一个整形的变量数字型,它是 cherry。 那我们接下来要调用 ui 界面的这个东西叫什么呢?还记得吗?你创建的时候,这个东西叫做 ui 的 tax。 好,我们来创建这个 tax 的类,所以我在这下边来做,我要 public 一个 tax, 哎,然后叫做 cherry number, 然后这个时候我会看到了,诶,它不允许我创建这个 text 的类别的一个变量。为什么呢?这里边提到了,我应当使用我的 u i 的 engine, 看到了吗? 我没有调用我的 ui engine 的时候,我是不能啊,调用所有 ui 里边的每一个项目和元素的,所以怎么做呢?他提示我了,要在上面添加这个 ui 的 engine 的元素,所以我可以在这上面来写 uis using unity, added engine, 点 u i。 好,那现在你看,我就可以创建 这个 text 的类了,就是 charing number。 okay, 这个 charing number 是为了干什么的呢?我创建完之后保存回到游戏界面之后,他就会在这出现一个 chari number 的 text 的分类。我希望这个变量 啊,能够锁定目标。你要改变的是哪一个? text? 当然就是这个 number 了,所以我将 number 拖过来。 哎,我希望他每次都改变这个 number 里的数字。 ok, 那我们接着来写,所以剩下的部分就很容易写了,对吗?我只需要这个。呃, chari number 刚才我们定义的这个变量, 它的内容不要忘了,虽然它是 text 的这个类,但是想要调入它具体里边的数字,还要打上点 text, 也就是它里边具体显示内容。具体显示内容应该是什么呢?那就是这个 呗,刚才我们上面的这个数字,然后你会发现这里有一个错误。为什么有错误呢?要记着这个 cherry。 我们刚才定义的是什么型啊? 是这个 int 整形,它就是个数字。可是 text 到这个 charity number 呢?它是一个 text 的类,也就是说它是一个字符型,也就是说 string 字符型的,所以你看这里写了,我们无法将整形直接变换成 自负型。那这时候怎么做呢?我们就要来介绍给大家一个很好用的很简单的一个代码,就是想让 数字变成字符,在后边加上点,然后你会看到这里有很多,有一个 two string, 就是把它变成 two string, 但是写法不是只有这些,要注意还有这个括号,所以我点击 two string, 然后加上小括号结束。嗯,是不是很简单,只有一行代码?好,我们保存,然后回到游戏里,我们试一试,看看这个数字会不会跟着一起变化呢?点击 play 试玩。 好,首先已经试玩的时候,全屏幕已经发现了一个问题,但是,哎,每当我吃了一个 chari 的时候,它真的会跟着变化哟, 是不是很棒?但是这个问题也是显而易见的,就是这个字符没有锁定啊,死了, 没有锁定在我屏幕的左上角,像我看到的一样,因为当我的游戏的比例改变的时候,你会发现,哎,这个数字没有了,他没有按照固定的位置显示。 那这个时候要怎么办呢?这个时候要介绍大家啊,一个叫做 constrain, 就是怎么说?定位定位的一个布局的排版。那怎么来定位呢?我们回到我们的 campus, 在新的页面里边,注意在这个页面里面来看 看,这里边有一个,呃,这个像一个指针,一个坐标的这个符号,这个符号的意思代表着他永远以这个基准点为准,保持这样的一个位置关系。可是当我的画面缩小时, 中心点是没变的,可是边界小了,所以他还是保持这个距离,就出了我的画面了。所以这时候怎么办?请点击 inspector 的这个位置啊,这有 transform, 这个位置有一个啊,调整他的锁定边界,那我希望他一直定在左上角, 所以我可以选择这个一直锁定左上角,左上角,哎,看这个坐标就移到左上角了。同样 number numbers, 我也要把它改成锁定在左上角。这个时候我再回到游戏的画面, 你看,无论我切换成怎样的比例,这个数值是不是都显示在左上角呢?好,我们再来试一试全屏化游戏的时候怎么样?哎,是不是他也显示在我的左上角呢? 这时候我们就成功了,我们的简单的 ui 已经成功了。好的,可以你自己动手试一试。嗯,看看你能不能成功, 然后你小伙伴们可能也会想,我可不可以在这里显示一个 chari 的图标呢?嗯,你可以自己想想办法,看看怎么做好。那另外我也想知道小伙伴们你 我们有没有人啊,在之前除了这个樱桃以外,也做了这个收集宝石的这个动画和他收集宝石的数量呢? 啊,如果你做了的话,请给我留个弹幕,或者请给我这个视频下面做评论,让我知道你真的做了。然后如果你遇到问题了,也可以啊,通过这些方法来向我提问,然后我也可以帮助大家解答。怎么来做啊,如果想知道的人特别多,那下次我们也会跟着大家一起来做这个内容。 好了,这个视频就讲到这吧,我们这个视频主要介绍了非常重要的元素就是 ui, 还记得他的方法吗?其实这里边还有很多很多的功能啊,也许以后我们会用的到。 那么先介绍到这,感兴趣的小伙伴你可以自己研究一下。好的,那这个视频到这谢谢大家的啊,支持请为我点个赞,那我们下个视频再见吧,拜拜。

现在配置文件里面随便输上一二三三个建筑物信息, 然后呢运行,由此单抹,点击建造按钮,弹出列表, 是不是就是我刚才说的这三个建筑物呢?其实这个效果只需要简单三步就可以实现,你们想知道是哪三步吗? 大家好,我是郑大叔,你给大家制作独立游戏的奔驰大叔,昨天在制作完策划界面之后,我就在想那里面的建筑物 信息该怎么弄呢?突然想起之前我们通过配置文件的方式去加载物品信息,那同样的方法应该可以用在建筑物信息上面吧, 况且再复杂的项目也可以分成若干个小步骤,你们认同吗? 那第一个步骤呢,就是定于建筑物信息的标准 c sharp 类,里面分别包含名称啊,尺寸啊,描述啊,图像啊,建模等信息, 再次创建他与绝审对象的相互转换,方便呢从配置文件从生成看一下完整的代码,这个类 其实非常的简单。那第二个步骤呢,就是建立建筑物信息管理脚本, 让游戏在初始化阶段完成对配置文件的读取,并呢对外暴露一个可以获取建筑物信息列表的函数就可以了。 我这里呢用的是我自己内裤中的节省组建,大家也可以使用微软的节省组建,效果是一样的,主要是私步清晰的实现的过程其实并不重要,看一下完整的代码也就几十行就搞定了。 最后一个步骤呢,就是建立建筑物信息的由 该生成脚本,这个脚本的作用就是去建筑物信息管理脚本中获取建筑物信息列表,再根据预制界呢动态生成列表项目,并填充到相应的界面当中就可以了。 看一下完整的代码,这个代码其实更少,觉得有用的话不要忘记点赞关注啊,我们明天不见不散呦!