上一节课的话呢,我们给大家讲解了这一个 unit web request 的发送数据到服务器,那么这一节课的话呢,我们从这个服务器来读取这个资源的版本号,这个呢也是我们做热根的时候做的非常多的一件事情, 你要去先从服务器上的资源包里面读取这个版本号,看看你是哪个版本,然后的话呢比对哪些资源要下载,对吧?那这一块的话呢,其实经常我们会面临的到,所以呢,我们就从服务器上拉取一个游戏资源的版本号, 那么我们在部署这个服务器的时候呢,其实是已经有了一个 western tst, 对不对?就在这个地方。好,所以那我们这个呢就非常简单了啊,拉起来怎么拉呢?你就这样子就可以拉咱们这个版本号了啊,所以在这个点上呢,我又把这个携程呢给它注释掉, 然后呢在这里呢我又写一个 i'm later, 对不对?然后呢我们的这个 read, 这个 resources res, 我是什啊?读取我们资源的这个版本号,对不对啊?很多东西不会读,做热根的时候怎么读版本号啊?是非常简单, 我都不好意思说啊,非常简单啊,压的咱们的这个贝壳对不对?好,那么这个时候的话呢,我们就来选择这个,嗯,把这个注视给他打开啊,来这个注视的话呢,我就在这个地方就来了, 来了以后呢,我们还是一样的,因为你是下载我们 htv 服务器里面,把这个 voicesn tst 给他下载进来,对不对?到漏漏的里面,所以这个时候呢,我们就可以这样子来做啊,有他还是一样的啊,用力 twive request, 咱们的这个请求等于这个用力 twive request can get 这个 url, 然后呢我们就把它放过来,这个 url 的话呢,就是咱们的 hpb 点零点零点幺,然后呢咱们的这个六零八零, 这样基本上就没有什么问题了啊,没有问题。以后的话呢,那这个点上呢,我们就可以来发一个啊, cinderella request, 对不对?然后呢在这个地方我们来压着来等待他发完。哎,这个请求,等待这个请求呢,有回应了啊, 所以在这个地方呢,我们就是亚德瑞特,对不对?亚德瑞特成了这个啊,深的外部 request 有了回应以后,我们怎么拿结果呢?当 low 的憨豆里面去拿。所以在 的时候呢,咱们的 bug 一下,用了这个当喽的憨豆 rex 点当喽的憨豆 s 的。哦,好,我们就拿到了这个版本号啊,来跑一遍呗,好,移动一下咱们的这个服务器啊,用一下咱们这个服务器。 然后的话呢,我们来跑一遍啊,拿一下我们的这个版本号来,走,你启动一下, 拿一下咱们这个版本号,你看一点零点零我就把它拿下来了。好,那么这个的话呢,就是我们热根里面最常用到的拉取版本号,我就教大家写到这里了, 这节课呢,咱们就到这里了,谢谢,再见。走了,拜拜。
粉丝2348获赞4784

啊,我们上一节课呢,给大家从服务器上把资源文件下载下来了,那么这一节课的话呢,我们就可以把一个文件上传到服务器, 对吧?你做游戏的语音聊天,哎,你做这个游戏的这个相册,上传头像上传的时候呢,都需要用到,所以呢,我们就上传一个音频文件到咱们的服务器,好不好?来,我们先把客户端给他写好。 好,那么这个时候的话呢,我们首先就会有一啊,刚才我们下载下来了那个文件啊,我就把它直接上传到服务器上,啊,不喽的 fire 样子行吗? 所以在这里的话呢, i'm later, 然后呢,这里面是我们的阿布罗的 fire, 就他,然后呢,这个点上呢是亚特 break 啊,这样子好,呃,那么我们要上传的这个文件呢,我就就地取材啊,直接使用呢,咱们这个 fanning 就 ok 了。好吧,这次我们要上传的这个文件啊, 好,那这个饭店以后呢,我们就先把他的数据读出来,哎,这是波点,那刚才我们有 red, 我们就有写啊,所以在 game youtube 里面点 read all the bet, 把我们的这个 fine name 呢给他读出来, 不到这里来以后,那么我们要上传一个文件,我们采用这个库特的这个提议, 所以这个时候呢,我们就没有一个 unit we have request 的请求呢,是一个 pot 的一个请求,点 boot 的一个请求,那么这个请求的话呢,我们的 ul 是我们服务器 上的贴这个文件的响应地址,哎,六零八零,好,贴这个文件的响应地址,比方说是阿波罗的 fire, 哎,上传文件这个地址,好吧。啊,然后的话呢,下面还会有我们的一个拖地一套, 他就会往这个地址里面呢发送我们的数据玻璃,对他好,比如出来这个请求以后,我们就亚德瑞特等着这个请求发送完成, 好,发送完成了以后呢,我们就来拿一下他的返回值,那这个返回值呢?就等于我们的这个 hello 的憨豆,这是拿到我们的回直。好,那么这里面咱们搞完以后接来服务器,夫妻,你要接这个文件,所以首先你要写一个 夫妻呢,你要写一个响应,我们采用的是 pot, 所以在这个地方,我们在这个路径下要响应这个 pot。 哪个路径呢?它是上传阿波罗的 fire, 我们就在这里来响应这个东西。一个是 request, 一个 rest。 好,当我们要上传一个文件的时候,我们首先先打开一个文件,对不对?打开一个文件,所以在这个地方呢,我们就来打开它。 fs 就是我们路人街上的文件系统啊,读写文件用的。那我在这里呢,先给他为快进来吧,好吧,先给他为快进来,好。 然后呢? opponsync 啊,红布,打开一个咱们的这个文件,那这个文件的话呢?我就写死一个文件名字好吗?不漏的啊, 坡漏的。然后呢?八零零零零 p 三,哎,然后是我们的这个同步打开啊,同步打开这个文件呢,以写的方式打开。 ok 了, 打开这个文件距离以后,接下来呢,我们是要从请求这里获得数据,所以就来监听一下 data 事件,有数据了会掉我们这个函数, 翻个讯,这里就是我们的这个贝塔,明白了吗?所以我先听请求的 data 事件,有数据了,掉我这个函数,然后在这里呢,我就把数据写入到文件里面去,明白了吗? 写入到文件里面去,那这个时候咱们怎么写呢? f red, 然后呢?这是我们的这个,然后呢?这 是我们的 data 从零开始团购呢,就是 data land, 然后的话呢,我们的解完以后的回调,哎,我就写个空的函数就 ok 了。好,这样子的话呢,我们就把你上传上来,这个数据呢,我都写到我们的文件里面来了。 好,等你结束以后我再监听一个结束的事件,那么这个时候的话呢?哎,我就表示上传结束了,那我就把这个东西呢给他关掉。 哎,给他关掉啊,把这个东西呢给他关掉,把文件给他关掉。同时的话呢,我回一个消息给到我们的客服端,哎,就是啊,不漏的在,这样就 ok 了,你看, 哎,我估计结束了这个期响应以后先创建一个文件,然后呢监听数据,有数据进来,我就把它写到文件里面来,写完以后结束监听结束的事件就表示你上传成功了,我把这个文件具柄呢给你关掉。 那这样子的话呢,我们整个稳定的这个上传就有了啊。哎,动一下啊,移动起来完了以后的话呢,还有一个东西呢,我要注意一下啊,哪个东西要注意一下呢? 就是在我这个地方还得要加一个 upload 的文件夹,对不对?不然的话呢,你会路径会出错啊,不漏的这样一个文件夹。好,我们一起来启动一下。好,到这里来启动一下走。 好啊,不漏的是个四 s, 你看这里面来的就他发过来的,我们再来看看啊,不漏的里面有没有,哎,来了 再听一下,你看声音就完完整整是 ok 的啊。 所以你这样子你就可以把本地的数据又上传到咱们的武器,明白了吗?好,那么这个点的话呢,咱们这里就给大家介绍到这个地方, 所以今天你把我们这里面的 unit web request 的使用你都搞熟了,那基本上你做网络游戏 那没有什么态度的问题,很多说做这种弱联网的这游戏啊,你做热根呢?做这个资源下载啊,完全都没有什么问题。好,今天这节课咱们就到这里了,谢谢,再见。走了,拜拜。

上一节课的话呢,我们给大家讲解的这个 unit web request 这个主要的一个结构,对吧?以及使用他的你的这一个基本的三个步骤,好,那么接下来的话呢,我们来给大家来看看,我们要发送数据到服务器,我们要如何来做 好。上一节课的话呢?我们从百度上面直接把百度的那个网页的数据呢给他拉取下来,但是呢,有时候我们经常做游戏开发的时候,肯定光这样还不够,对不对?举个例子啊, 我可能得了一个很高的分数,我需要把这个分数存到游戏的数据库里面来,那这个时候你就需要把这个数据发往服务器,服务器就得要来处理你这个代码,然后呢再把你的数据存到咱们这个数据库里面来, 所以这个时候呢,我们有请求,哎,那么服务期就会有响应啊。接下来, 然后呢,我们就来给大家来编写一个服务器的 get 的一个响应,好来咱们的服务器代码,我们如何来编写的 get 的响应呢?调一下这个 app 的 get 函数,这个呢是我们的请求地址,比方说我们的这个不露的 啊,上传一个数据,好吧,不如说逮他,哎,就是我们的这个地址好,然后呢这个就是我们的处理函数,我有一个请求对象,有一个 response 的这样一个对象,能理解吗?哎,这就是我们一个注册一个的请求, 也就说我在这个地方还有一点 get, 就注册一个 get 请求,当我的客户端有向这个地址来发送一个 get 请求的时候,就会调我这个函数,客户端发过来的对象是我这个请求对象,我要回 数据给他的啊,就是我们的瑞士对象,比方说我的瑞士点正的,哎,我发一个想说博弈创维,哎, unit, weave request, 好,我发一个这个要回来,这是 rans 点剩的发回给我们的这个客户端。好,那么这个时候我们在这里的这个讲 hgdp 的请求,一个是请求,一个是响应,那么这里的响应地址就是什么呢? hgdp 他们的这个什么啊?幺二七点零点零点幺六零八零,然后的话呢? wta 不差了,明白了不,那么我在这里添加了一个响应地址以及函数的这个操作,当有这个地址的请求到这个地址来的时候,就会 响应得到这个函数,所以就走这里,明白了吗?好,所以这个时候呢,我们就可以在这个地方来加上我们的这个站点啊, hpdp, 二七点零点零啊,我在这里呢,给他,嗯,给他写几个函数吧还是,好吧,阿伊姆雷特在这里呢,是 get, 哇,盖的百度,哎,好吧,盖的百度啊,我,到时候呢你,你立马呢就好好看一下。好,那这里面的话呢,是我们的盖的百度 好,给的百度没问题啊,所以在这里呢,我们是给的百度。好,这样的话呢,我们是 get url, 这是 get 这个啊,不漏的推他 上传一个数据,哎,我就叫他就可以了,所以在这个地方呢,我就是扎的很很很 row, 然后 ten 咱们的这个艾特阿波罗蒂塔就可以了。好,那么这个地方呢,是我们的响应地址,你的服务器,你要往哪个服务器地址上来啊? 比方说二七点零点零点幺,然后呢这里是六零八零,然后呢这个就是我们夫妻要响应的这个地址啊, 阿布罗迪的,然后呢你就把它发过去,发过去的话呢,服务器给你回什么,你就在当漏这里能够拿得到。好,我们来看一下服务器给你回了什么,好不好?来对面呢,咱们还以后给他回一个数字啊,重新启动一下咱们的服务器, 进启动器啊,服务器改了以后呢,你一定要记得重新启动一下他,好吧,来这个时候呢,我们再来启动一次, 好,启动起来以后呢,你看这个时候你得到了,就是博弈创维 you need to web request, 哎,因为你从这里面回给他了, 明白了不?好。那么接下来我们如何来接收用户的数据呢?用户的数据都从这个 request 里面过来了,这个时候呢,我们就可以来打印一下我们的这个 request 里面的这个对象, 能理解不?打印一下我们 request 里面的这个 request, 这个对象,好,那你就能够看到到底扣当一个请求给我们发过来哪些数据?好,我们一起来看一下啊,好,然后呢我在这个地方呢,我 再来跑一遍,来启动一下,跑一遍啊,好,这里启动起来以后呢,你在这个时候,你看这就是我们打印出来的请求对象,你看这个里面就会有很多我们的这一些数据,包括他的说可以的这些东西,对不对? 好,然后的话呢,还会有我们的很多的一些像我们的这些 ul 啊,相关的一些东西,对吧?你可以看一下, 是不是看到没有我们的一些设置啊这些东西,所以这个呢就是我们 hdp 的一个请求,明白了不?请求的这个数据对象包含我们发过来的协议头啊,这些东西,你看 就在这个地方,我们的后斯特啊,对吧?我们的这个协议头啊,这些东西,然后呢他发过来是哪个东西发过来的?是用你的外部 request 发过来的,对吧? 哎,这些点,所以呢,我们就可以通过 rank 来拿到我们的数据。好,那我们如何来给我们的服务器来传一个自定义的数据呢?哎,那么这个时候呢,我们可以这个样子来做啊,注意, 如果你要带参数呢,你就打一个问号,然后呢用用户名,比方说等于这个 break, 用户名啊,假设你就等于这个 break, 然后呢如果还有其他的呢,你就加一个与密码,等于这个一二三四五六,他是这个样子的,好吧, 那这个样子有了以后呢?哎,我们要拿到后面这一节参数怎么办?问号就是我们的 curi 查询,所以呢我们就可以把这个查询的这个参数呢给他拿过来 curi, 嗯,就这个样子的 来跑一次,运行一下,可练一下啊,然后的话呢,咱们的这个 no 的起来,然后呢我们再往服务器来发这个数据传过去。好,这里面的话呢,还是回这个 sus, 再看服务器的打印,看到没有, 就把你的这一个用 name 名字 brake, 用八十万的传进来,那你就可以把这些数据呢写到咱们的数据库里面去, 所以这个时候你上传分数,上传什么东西呢?你都可以使用这个来进行一个请求,然后呢在服务器上呢写一个这样的响应,然后呢你在这里呢,再把它的这个数据呢横到数据库, 可以了。好吧?这一点的话呢,我们这里就完了,明白了没有?这就是发送数据到服务器,我们就给大家讲完了。好,那么今天这节课咱们就到这里了,谢谢,再见。走了,拜拜。

好的,上一节课的话呢,我们给大家讲解了这个这个 unit 客户端的一个搭建,以及我们这个路人街市这个搭建啊, 那接下来的话呢,我们把这两个东西搞完以后呢,我们先来啊分析一下这个 unit web request 的他的一个主要结构,好吧,主要结构的一个详解啊,主要结构的一个详解。 好,呃,那么首先第一个呢,今天我们给大家讲解的是外部服务器的通讯,那么外部服务器的话呢,我们一般都走的是 hdp 的协议对不对?以及我们 hdp 的这个,那我们 hdp 它是个什么原理呢?就是这个样子, 客服端往我们的这个服务器啊发送一个 hgp 协议的数据包,那这个包的话呢,我们把 叫做 hdp 请求。好,第一个,那么服务器就收到这个 htp 的请求,然后呢使用 hdp 的协议点开这个包,拿到我们的数据, 能理解不好,这个就是我们整个的一个点。好,那么 unit web request, 你从这个名字的结构你就知道, unit 指的就是我们的 unit 了,外部就是我们的 web solo request 就是我们的请求,所以 我们 unit 要往这个 hdb 的服务器来发送,帮我们的这个外部服务器来发送我们的请求的时候呢,哎,我们都是通过 unit web request 的来做我们的这个请求的, 那么用力用力的外部 requests, 他会分为几个点呢?首先第一个哎,就是构建一个协议的请求哎,比方说你是要发一个 hdp 的艾特请, 哎,你不要,什么叫 htv get 请求呢?比方说我们三 w 点,百度点 com, 哎,这就属于 htv 的一个 get 请求, 同时的话呢, sb 的 pose 的请求,哎,比方说我们要提交一个缝,提交一个表单,对不对?提交一个表单,我们在网页里面我要提交一个表单,哎,那这个时候呢,我们就可以使用这个 pose 的请求。 好,假设的话呢,我们要上传一个文件,哎,那么这个时候呢,我们就可以做一个铺的请求,能听见吗?哎,来上传一个这个文, 我们就可以使用这个铺的请求。所以呢,首先第一个是要构建一个协议的请求,构建一个 unit web request 的协议的这样一个请求,那么这个的话呢,是他的第一个部分。好,怎么构建呢?我们就来打开 unit web request 啊,先把咱们的代码打开。 unit web request 他是位于哪个名字空间呢?这里面你要记住啊,他们的这一个 unit web request request 他是位于哪个名字空间呢?是位于这一个 unit 引擎里面的, 哎,这个 night walking 这个名字空间,理解不?引擎里面的 nat walking 的这个名字空间。这个时候的话呢,我们要使用他,哎,我们可以来 安静点,那我肯,哎,就他。好,那这个是我们整个的一个名字空间,能理解吧?好,有了这个名字空间以后呢,我们首先要构建一个 unit vf request 的协议。好, 那么这个怎么构建呢?哎,你来随便打开这个用力 wife request 啊,用力题,哎,咱们的这个 web request, 这个假设是他啊,假设是他, 那么这个时候呢,你可以右键来到他的这个定义处,转到定义对不对?好,转到定义以后你就可以看得到他,就会有很多的一些构造的方法。 首先第一个呢,他会有这种构造函数的构造方法,你可以扭,看到没有?首先第一问啊,就构造函数,各种各样不同参数的构造函数,有这个地址啊,有这个方法呀, 是 get 还是什么方法呀?还有构造这个当漏的啊,还有这个啊,不漏的这些东西好,但是呢,这些方法其实他还提供了一些静态的方法哎,比方说 static post, 看到没有啊,提供一个 pose 的啊,帮你构建出来一个 pose 的 hdb pose 的协议的 unique request, 所以呢,在这个里面啊,他就会有一些静态的构建方法,能够帮你构建出某种协议的 的对象。所以的话呢,我们就一般呢,就使用这一种构造方式来构造一个啊,构造方式来构造一个他们的 unity web request, 能理解吗?哎, 我们把用这种方式来构造一个,比方说你要构造一个 htv 请求,那么这个时候呢,你就可以使用什么?使用这个 hdb get, 看到没有?就是他 crazy you need to web request for htv get, 看到没有?就这个 啊,假设你要搞一个 pose 的请求,你就可以使用他,哎, create a unit of request configured to send a form data 哎,提交一个表单图 server, 对不对?使用的是 hdv pose 的, 明白了不?后面的话呢,就是我们表单的这个数据,你要迫使这个数据啊,你看到没有 pose 的 data, 对不对?好,然后呢,这个 boss 的 data 是什么样的格式呢? from body data 哎,就是从这个 data 这里来啊, vip u l n co 的要被 u l n co 的 编码过的,这个支付串能理解吗?所以你就可以根据 pose 的来你看来构建出来我们的由你的 wife request pose 的请求。 好,那么 pot 的话呢?你也可以根据他来构建一个 pot 的请求过来,所以这个时候就是我们的第一步,明白了不?哎,根据你要选的协议构建出来一个有你的外部 request 的一个对象,好,这是咱们使用的第一步啊,能理解吧? 好,肺部有了以后你要注意咱们的这个 unit welfory 快死他,他包含了两个部分 啊,两个部分,我们把字把客户端的数据 全网服务器,哎,全网 服务器这个东西呢,我们把它叫做什么呢?啊,你可以来看一下啊,我们把它叫做啊不喽的憨豆。啊,这是我们这个啊不喽的憨豆,哎,就他啊不喽的憨豆,我把他截图截一下。啊啊不喽的憨豆, 哦,那么如果说我们服务器的数据,我们要把它下载到客户端,那么这个里面的处理是 hello 的憨豆, 明白了吗?就是当喽的憨豆。好,那么这个处理要是我们上传一个文件的进度,哎,那就应该含在哪里呢?含在我们的啊不喽的憨豆这里,对不对?啊不喽的憨豆这里,啊,啊不喽的憨豆这里,那如果说我们要 下载一个呢?那就含在了咱们的这个当喽的憨豆这里,对不对?当喽的憨豆这里,哎,这是我们的上传和咱们的这个下载,你看到了吗?哎,上传下载,这是我们的下载,看到没有, 哎,好,那么在你上传跟下载的过程当中,你肯定要去拿进度,对不对?那这个进度咱们怎么拿呢?你看 process 咱们这里就有, 明白了吗?你就可以拿到我们的这个进度。 return value for the united web request download progress, 看到没有就能够拿到我们的这个进度,好,明白吗?同时的话呢,你下载完了以后,你得到了哪些数据?如果你得的是二进资,咱们就会放到黑塔这里来,你看 returned the robots brothers brother remotes server, 你从服务 刚落下来是什么样的啊?金字,哎,这里面的话呢,就是文本啊, creational bravity returns back from the data inspector as a utf 八 string, 就是把我们下下来的这一些败一词转成一个 utf 八的这么一个 string, 就是文本 text, 所以你看,你就可以从这个当 loader 来获取服务器啊,给你返回的数据,对不对?哎,通过这个当 loader 获取服务器 返回的数据,好过这里的话呢,你可以给服务器上传我们的这个数据, 哎,明白了吗?就是啊,不 low 的和咱们的这个 low 的好,这两个部分呢,我们就可以取数据和设置数据以及查看进度。好,最后的话呢,我们就是发, 发送一个请求,发送一个请,那么在这个我们的 unit web request 里面的话呢,我们就会有一个请求需要发送,哎,我们就会有一个请求需要发送,你搞完这个东西以后,你要往服务器发送一个请求, 那怎么发这个请求呢?哎,就是 send 我们的这个 wife request 好,然后呢,这个时候你要特别的注意,因为网络的话呢,它是属于 io, 容易卡住,这个时候我们发送一个请求呢,是一步把手 send web request, 他是一个异物的,异物的好处是什么呢?你发完后,不用等几层完整的发出去,你就可以 做别的,所以你会发现这个 sandwife request 就是我们的一个地步的操作,而这个地步的操作我们要等到发完,你就可以使用携程来进行等待, 能理解不啊?同时的话呢,你使用携程来等待,那么他发这个外部 request 的时候,假设数据还没有到附近没有处理完,我们的 mansred 是可以处理其他的东西的。 明白了,不对,发送呢,他是一个一步发送,不用等着啊,你可以做别的。这样的话呢,不会卡住啊,游戏现成 理解吗?不然的话,你在这里傻等着,你会卡住游戏现场哎,所以他这里呢,会有一个进一步操作, uni wife request a nancy operation。 所以一个 uni wife request 呢,基本上 为三个部分,第一个部分呢,提供一些静态的方法帮咱们构建对象。第二个部分的话呢,我们要上传或者下载数据呢,我们分别有啊,不喽之憨豆以及我们的当喽的憨豆。同时的话呢,我们要发送一个请求呢,有一个一步发送请求的接口, 发完以后我们就可以通过当 low 的憨豆来拿到我们的结果,明白了不?所以整个呢,我们就创建一个对象 啊,填写好我们要上传的数据,然后呢剩的这个 web request, 然后呢再使用当 low 的憨豆来拉到我们的数据结果。好,那么这一点能理解的同学咱们打个一好。 接下来的话呢,我在这里啊,给大家写一个从百度拉数据的一个代码好不好?来,呃,需要咱们本节课素材回看和圆满的同学呢,直接找咱们的 老师来领取就可以了好不好?哎,咱们都是有的啊,好,那这个时候呢,我们从百度的这个拉一个下来,王叔, 三 w 点,百度点 com, 我们属于 get 的请求,于是我的话呢,我就使用 get 来构建出来一个 request 的这么一个对象,然后呢我们是三 w 点,百度点 com, 好,这就是我们的 uil, 构建出来这个对象以后,那么我们就要,哎,在这里面你的 get 的话呢,是一个 usl, 在的话呢,我们就来使用它来发一个请求,那么发一个请求呢,我们要等到这个请请求结束,所以呢我们又不能傻等着,所以可以采用携程来等, 所以在这个时候的话呢,我们就是压的我们的这个 return 什么呢? red 深刻的这个剩的的 web request。 好,那么这样子的话呢, 啊,我们就这个啊,等这个点啊,这里面的话呢,我们在这里是挨个挨你们来一次啊,这样子,然后呢这个里面的话呢,我们就是这样子啊,没事点啥的,肯定的,肯定的啊,来哦, ok 了, 这样子,有了以后呢,我们就可以发送一个请求,发送完请求这个时候不会卡住主线啊,不卡住, 然后呢不现成做别的,你这个请求返回后,哎,这个携程继续往下执行, 这个时候的话呢,就是第八个这个 sis, 并且的话呢,我们要把网站的数据拿下来,我们拿网站的数据呢,这个时候我们就可以第八个给落个我们拿数据,从当楼的 里面的网站是文本数据,所以呢我们直接可以访问这个,那么这样子的话呢,我们就从捞到了我们的一个数据了啊,我们一起来看一下,用一下 启动起来以后的话呢,那么这个时候我们运行一把,你来看,好,这个时候你看咱们百度的这个网页呢,你就到这里了啊, 把百度的网页我们就拉下来了三个部分,大家明白没有?明白了,同学 啊,打个一应该这样子的话呢,我们整个的这一个百度的这个网站呢,我们就已经拉取下来了,其实我们网页的背后就是这样的 ht 美哦,只不过我们的浏览器呢,会根据我们的 html 的这个代码来解析渲染出来我们的这个网页。好,那么这个用力的 whyfury 快死的呢,我就跟大家 讲解到这里了。好,这节课呢,我们就到这里了,谢谢,再见啊,拜拜。

我们将通过发送 http 请求来获得网页内容。 http 是 hypertext transfer protocol 的缩写,意思是超文本传输协议。 他是一种客户端和服务器之间的请求响应协议。比如说浏览器就可以被看作客户端。当我们在浏览器地址栏输入想访问的网址,按下回车后,浏览器就会向该网站的服务器发送一个请求,然后等待服务器返回给浏览器响应。 h t t p。 实际上有不同的请求方法,最常见的两种是 get 和 post。 get 主要用于获得数据, post 主要用于创建数据。比如说我们进入一个网页,浏览器会发送 get 请求,得到网页内容。当我们提交账号注册表单时,浏览器会发送 pose 请求,把你的用户名、密码等信息放到请求主体里给到服务器。由于爬成程序基本上是在获得数据,所以我们发送到请求。大部分情况下用 get 方法。除了方法类型,一个完整的 http 请求例子长这样, 他呢由三部分组成,请求行、请求头、请求体。请求行会包含方法类型、资源路径和协议版本。 资源路径指明了你要访问服务器的哪个资源。比如下面这个网址里,第一个斜杠表示资源路径的根,所以根后面的 movie top 二百五十就是要访问的资源的路径。 有时候除了资源路径,我们还可以在这里给出查询参数,比如说下面这个网址里问号后面的就是查询参数,可以传递给服务 起额外的信息,不同信息之间用 and 符号风格,比如通过 story 的参数等于七十五,豆瓣的服务器就知道, ok, 咱们返回给用户的页面,内容从排在第七十五的电影开始往后展示。 请求行里的最后一项是协议版本,指的是 http 协议的版本,比如 http 一点零、 http 一点一等。请求头会包含一些给服务器的信息,比如 host、 user agent、 accept 等等。 host 指主机域名,主机域名结合请求行里的路径资源,可以得到一个完整的网址。斜杠前的这部分是域名,斜杠后的是路径问号,后的是查询参数。 user agent 呢,用来告知服务器客户端的相关信息,比如请求是浏览器发出来的还是 其他东西发出来的,如果是浏览器的话,类型是什么,版本是什么等等。 accept 是在告诉服务器客户端想接收响应数据是什么类型的,接收多种类型的话,可以用逗号进行分割。如果是星号斜杠,星号表示啥类型都行。 最后,请求题里面可以放客户端传给服务器的其他任意数据,但是 get 方法的请求题一般是空的, 那在服务器接收到 http 请求后,他会根据所有这些信息返回 http 响应。 响应也由三个部分组成,状态行、响应头、响应体。状态行包含了协议版本、状态码、状态消息。协议版本咱们前面讲请求的时候提过,可以是比如 hdp。 一点一,状态码和状态消息则是对应的, 常见的状态码和状态消息有这些,二开头的表示成功,请求已经完成处理。三开头的表示重定向,需要进一步的操作。四开头的表示客户端错误,比如请求里面有错误或请求的资源无效等等。五开头的表示服务器错误, 比如出现问题或正在维护。我们在不小心输入错误的网址后,一般会来到一个展示四零四的页面,这个四零四就是 http 状态码。 响应头会包含一些告知客户端的信息,比如 date 生成响应的日期和时间。 content type, 返回内容的类型及编码格式, 比如 text h t m l 叉儿 set 等于 u t f 杠八,说明类型是 h t m l, 编码是 u t f。 八、最后呢,响应题里面就是服务器 想给客户端的数据内容,比如如果前面说内容类型是 h t m l, 这里就应该是 h t m l 内容。我后续会对 h t m l 进行讲解,现在先知道他大概长这样就行了。里头有非常多的间括号, 但我们要如何通过拍档就构建和发送一个 http 请求呢?又要如何获得 http 响应呢?请见下回分界,我们下个视频见。

说到游戏开发,我们就不得不提到游戏引擎。游戏引擎作为存在游戏的火星组件,大大降低了游戏开发的门槛。 unity、 unreal 自然是当下最火的两大游戏引擎,其他的还包括不少私有专用轻量级的游戏引擎。最近完全开源商人免费了个 dog 也大获了一把。 今天我们的主题是 unit, 也是我比较推荐新手去学习使用的。首先它的界面简单直观,学习曲线也比较频繁,除了可以用作游戏开发,还可以胜任各种可视化类型的应用,包括仿真动画、 a 二 v 二等等。 安装 unity 的一种常见方式首先就下载一个 unity hub, hub 是一个用来管理不同 unity 版本的工具,通常不同的项目会用到不同版本的 unity 引擎。使用 hub 来自动化安装和管理可以帮我们介绍 时间。我们打开 hop, 首先切换到这里来安装选项卡,点击上面的添加按钮来安装一个 unit 版本。我们可以选择最新的版本,或者选择 lts 来安装一个长期支持版本, lts 通常会更稳定一些。 如果我们不打算去手动配置 ide 的话,这里我们可以直接安装 visual studio。 如果你想将项目部署到 angelate、 ios 这些平台上面运行,可以勾选这里的选项。最下面是可选的本地文档和中域元包。点击下一步, unity help 会在后台自动下载安装,这里需要等上一段时间。 安装完毕之后,我们回到工程选项卡,点击右上方的按钮创建一个新项目。左边可以根据需要选择不同的模板,就是我们选择默认的三位即可。最后修改一下这里的工程名,然后点击下方的创建按钮,数字化工程 需要等上一段时间。随后我们来到 unit 的主界面,这个界面也被叫做编辑器 editor。 首先,中间的这个区域选出了我们的三维场景。和一般的题目软件一样,我们可以点击鼠标选择场景中的物体。 拖拽鼠标可以同时选中多个物体。发动鼠标滚轮可以对画面进行缩放。按住 alt 并拖拽,鼠标会沿着中心点旋转。 同时在最左边的面板中以树形结构列出了场景中的所有物体。如这里可以看到场景中仅有的两个对象,摄像机和平行光源。同时我们也可以直接在左边的列表中进行物体选择。 当物体被选中时,最右边的面板中会显示这个物体的所有属性。这里的内容直接取决于你选中的物体。最下方的面板中显示了工程中的所有文件,目前我们的项目空空如也,里面只有 一个场景文件,也就是我们这里看到的空白场景。最后,屏幕上方的三角形按钮允许我们在编辑器中运行测试游戏快捷键是 control 加 p, 再次点击它会停止游戏。以上便是 unit 主界面的基本介绍, 接下来我们讲一下场景中三维物体的创建。我们可以在左侧面板中点右键,菜单中可以看到不同的类别,比如三维物体特效、光源、音频、视频等等。 在成为物体的紫菜蛋中,我们可以找到各种基本的体和形状,比如立方体、球体、圆珠体、平面等等。下面还可以找到诸如文字、地形这些复杂的物体, 这里我们先创建一个球体来做示范。讲到这里,我们就不得不提到 unity 中两个相当重要的概念。我们在场景中看到的所有物体,在 unity 中都被叫 叫做游戏对象 game object。 比如这里的球体是一个游戏对象场景中的功能性物体,比如摄像机、光源也是游戏对象。而每个游戏对象由不同的组件 component 构成。 在右边的面板中可以看到这个球体由 transform, miss, filter, collider 等等构成,每个组件会提供不同的功能, 比如 transform 定义了我们物体在场景中的位置,而 mesh renderer 就用它的名字,是用来确认三维物体的。如果我们禁用掉这里的 mesh renderer, 可以看到这个物体在窗口中就直接消失了。 总而言之,一个场景可以包含各种不同的游戏对象,而每一个游戏对象有不同功能的组建构成。除了可以选像球体这样基本的结合形状,我们也可以从外部导入各种三维模式文件,比如从三维建模软件中导出成 f b x 格式,直接拖拽到 unit 中使用。另外,像 sketch, fab, turbos、 greet 这些网站上也可以找到许多免费高质量的三维模型。不过大家在使用的时候需要留意一下版权许可。 在 unit 商店中也可以找到官方提供的各种工程模板,里面包含了不仅有模型场景找本,还有可以直接拖拽使用的预设,他们同时也是非常不错的学习资源。 我们回到主题,先来讲一下最最基本的 transform 图件。首先我们可以在这里直接输入物体的三维坐标,沿着 x y z 轴的旋转角还有 x y z 方向上的缩放。我们也可以直接在场景中拖动这一箭头来修改。 左上角的这些按钮允许我们切换不同的工具。快捷键是 q, w, e, r, 他们分别用来对物体的位置旋转和缩放进行调整。 因为在左侧的面板中,我们可以将一个游戏对象拖拽成另一个游戏对象的自己脸,这样所有的自己脸会随着父亲一同移动、旋转和缩放。比如这里身体的运动会同时带动手臂的移动。 接着我们来看一下之前提到的另一个组件, mesh renderer, 我们知道它是用来渲染 several 提到或者更专业的术语叫 mesh 三角网。 mesh renderer 中有一个非常重要的属性, material 材质。 材质直接决定物体表面的外观,与他相关的设置也直接显示在面板的最下方。这里的材质由于是 u 立体默认创建的,我们无法直接修改。 不过我们可以在下方的工程窗口中点右键创建一个新材质并拖拽到物体上来使用。这里我们可以修改材质的颜色或者指定一张纹理贴图,并且我们可以 数字材质的金属属性,光泽度,发型贴图,高度贴图等等。另外,这里的下拉框允许我们切换不同的 shira 程序。 shira 是运行在 gpu 上的代码,里面包含物体表面的光照和颜色。计算 最基本最常用的 shader 自然是这里默认的标准光照模型。不过我们也可以选择其他的 shader 程序,比如 unit shader 不会参与光照计算,因此不会产生阴影。我们也给自己选一个 shader, 或者安装第三方插件,比如使用卡通画确认的 shader 程序来实现各种不同的视觉效果。 如果我们想给游戏对象添加其他的组件加入更多的功能,我们可以点击这里的添加组件按钮,里面分类列出了所有支持的组件。比如我们可以添加一个叫做 rigid body 钢铁的组件,让游戏对象参与物理引 群的计算,这样物体会受到重力下降,碰撞到其他物体反弹的呢?在菜单中,我们还可以找到各种其他的主角,我们可以用 animator 来控制管理角色的动画 order source, 给游戏对象添加声音, 使用 canvas 来绘制二维用户界面,使用 particle system 来产生粒子效果等等等等。 说完了三维物体的创建,我们来讲一下场景中的另一个基本要素,摄像机。摄像机展示了游戏中玩家的视角,一个场景中如果没有摄像机,自然不会显示任何内容。 我们除了可以用之前的方法修改摄像机的位置旋转角之外,还可以修改摄像机清除背景实用的颜色,摄像机的投影类型,视角大小等等。同时我们也可以通过给摄像机添加 post process layer 组件,配合场景中的 post process volumes 来给镜头添加后期处理的特效。比如这里我们要打环境广州照,近身还有光源的效果。 讲到这里,我们的场景都还是完全静态的,如果我们想给游戏加入动态的逻辑,比如响应玩家的按键操作。实验游戏的基本玩法。编程自然是必不可少的步骤。 在 unit 中,我们可以通过 c c f 脚本或者也叫 monoscript 来进行编程。我们可以选中一个游戏对象,点击添加组件, 然后输入名字来快速创建一个脚本。当然,我们也可以在工程窗口中点右键创建一 csr 脚本,然后再将脚本拖拽到游戏对象上。创建脚本的名字可以在 a, d, e 中打开并编辑它。可以看到脚本都继承于 model。 behavior 里面定义了两个非常重要的函数, update 函数,每一针都 会被调去,我们可以在这里实现基本的游戏逻辑。 start 函数只会在最开始的时候给调用一次,通常被用作初始化操作。这里我们可以在 start 中调用 debug 点 log 输出一段调试信息。 debug 类定义了与调试相关的各种工具函数。 运行游戏,我们可以看到下方控制台输出的文本就印证了我们的代码被成功执行。我们现在实现一个基本的怪物移动逻辑, 这里我们都要用 input 点 get key 去判断在这一阵中键盘上的 w 键是否被按下。如果是我们给怪物施加一个向前的作用力,这里我们会用到之前提到的 rigid body 触键。 我们可以在 start 函数中获取这个组件并存放在 r b 变量中。然后我们再用它的 at force 函数来添加一个作用力,这个作用力的方向是物 体面朝的方向,乘以这里定的一个参数加速度之后,我们可以在测试中微调这个参数。 同样的,当一键被按下时,我们的 transform 的 rotate 函数让物体沿着 y 轴逆时针旋转, 旋转的角度等于这里定义的旋转速度乘上时间。关于时间的计算,我们都要用 time 点掉的 time 破取上一针与这一针的时间差。注意,这里的时间差并不是一个长量。由于各种因素的影响,我们的游戏并不总是运行在同一帧率上。 最后,我们要同样的方法是先向右旋转的逻辑运行程序可以看到这样的效果。 另外,我们可以将之前定义的这两个参数设置成 public, 这样我们可以在编辑器中实时修改他们对跳餐非常方便。当我们完成了游戏的开发,打算将游戏 打包并分享给其他的人,我们可以点文件构建设置快捷键是 control shift 加 b。 在窗口上方,我们可以指定游戏中需要打包的所有场景。位于列表最上面的是进入游戏后加载的第一个场景。 在下方我们可以切换目标平台。你可以选择 pc max 上运行的独立版本,移动端的 ios 版本或者 ps xbox 之类的主机游戏版的前提需要安装必要的平台开发包。最后点击下方的构建按钮即可。


大家好,我是游戏石匠,这里是 unit 零基础入门教程第二课, unit 编辑器基础。 我们将会介绍用力体编辑器的界面,并进行一些实际操作。我们先来打开上市创建的工程。 开始之前,先来说一下界面语言的问题。 unit 编辑企鹅默认语言是英语,如果我们想要让他使用简体中文的话,我们可以打开 unit hub, 点击 安装添加模块, 这里可以选择语言包,点上简体中文,点击完成就可以安装。这里我已经安装好了, 要在编辑器下切换语言,点击 adida preference, 然后在那个位置里面可以将这里选成中文,我在这里就不做演示了。我并不建议使用中文界面,这个功能只是试验性功能,有一部分的界面并没有进行翻译。 此外,使用英文界面的人还是占大多数,为了以后方便,还是使用英文界面比较好。 用力体的编辑器界面包含以下部分, 我们切到实际编辑器里面去看一下。 编辑器的最上方是菜单栏,这里有文件编辑等等常用操作。在菜单栏的下方是工具栏,工具栏的左侧是场景操作的一些功能,中间是播放按钮、暂停按钮, 右侧是账号乘级布局功能,在工具人的下方 左侧是 three 起成绩试图,包含了场景中所有物体的成绩结构。 进场景视图,在这里我们可以看到场景中所有的布置。 game 是图游戏运行时所能看到的画面。 右侧 inspector, 当我们选中层级中的任何一个物体,在 inspector 里可以看到这个物体的详情以及可以编辑的属性。 下方 project 方口包含了我们工程当中所有的文件, 左侧是树状式图,右侧则和我们的文件浏览器是类似的。接下来我们用一个实力来展示一下常用的操作。实力界面讲解 而转立方体,我们这一次的目的是要在场景中建立一个立方体,并对他进行移动、缩放、旋转等功能,借此来说明编辑器当中的常用操作。 在进行这一切操作之前,我们要先调整一下编辑器的布局, 可以看到当我们选中任何一个标签并对他进行拖动的时候,就可以改变编辑器的布局。现在将 game 视图拖动到信视图的右侧, 这样我们就可以同时看到场景视图和游戏视图。这个布局我们可以点击右侧的雷奥特将它保存, 也可以点击 reset 返回到默认的布局当中。接下来我们来进行操作, 我们把关注的焦点放到近视图里,之前说过,近视图包含了我们所有场景中摆放的物体,可以对他们进行一个观察。 而左侧乘机窗口展示了场景中物体的乘机结构。在这里点击鼠标右键 三 d game object 六步,可以看到在我们的场景当中出现了一个立方体,使用鼠标滚 可以拉近这个物体。这时候编辑器界面很明显和刚才不同了。首先在乘机窗口中出现了 q 部, 选中 q 部可以在 inspector 解释窗口中看到 cube 的属性。 同时在我们场景中出现了这个立方体。在右侧 game 视图中同样出现了这个立方体,但他的位置并不是在正中间的,要如何将他的位置放到正中间呢? 看右侧的减湿器窗口,从上到下有这么多的内容。最上面是物体的名字, 这里有一个对勾,当我们点击对勾的时候, 左侧 q 补变成了灰的,说明当前这个 q 补处于未激活状态。再点击一下可以看到, 接下来把关注的重点放在 transform 上。除了 transform 之外,还有 miss filter, miss render, books, cleaner 三个部分。 这些部分我们把它叫做主见用力体,当中的功能绝大部分是 通过主见来实现的。我们重回 transform, 在 transform 上面有三行,第一行 position, 点击的时候用力题会有提示,这里讲的是右侧显示的这个游戏物体相对于其不节点的相对位 xyz。 把注意力集中在场景视图上,在这个立方体上有三根轴, 分别是红色的轴、蓝色的轴和绿色的轴。坡动其中一条轴的时候, 立方体又在场景当中发生了一动, 同时在 games 图当中也发生了移动。可以看到,当我们进行移动的时候,我就请这里的 x 发生了变化。 我们把红色的轴叫做 x 轴,蓝色的轴叫做 z 轴,绿色的轴叫做 y 轴。当我们移动这几个不同的轴的时候, x、 y、 z 三个词都发生了变化。 x、 y, z 三个词 代表着在当前空间中的坐标,在场景试图当中可以对这些位置进行拨动来修改他的位置。 这里有很多种拖动方法, 刚才我进行的是平面拖动,大家可以观察右侧数值的变化。回到刚才的课题, 我们希望把这个立方体拖动到视野正中心,我们有更便捷的方法,但这一次我们还是通过拖动来实现目标。在场景试图中拖动立方体, 好,现在基本上在中间了,现在场景这边呢,建的是在中间,可以按住鼠标中间进行 拖拽,拖拽的同时场景视图就会发生变化。我们点击鼠标中间的时候, 这一行的操作栏中,这里已经发生了变化,我们也可以直接点击把它进行切换。 刚才进行的是拖拽操作, 而当按钮切换到箭头时,就恢复到了移动模式,可以拖动物体移动。现在游戏视图中立方体已经在 正中央了,但要看出他是个立方体,需要进行一下旋转。 第二行 rotation, 这里同样有三个字,我们来对这三个字进行一定修改。选中到原状态时, 操作指示变成了一个球体,这个球体由三个圈组成,绿色的圈, 红色的圈以及蓝色的圈。尝试来调一下绿色的圈。 在我们对他进行转动的同时,可以发现立方体发现了旋转。 刚才进行移动的时候说过,绿色是歪走切换回旋转的时候, 拖拽绿色的圈的时候,被选中的物体绕着歪轴进行旋转, 歪的直发生了变化,那同样的可以调节红色的走,也可以调节蓝色的走。 调节其他轴的时候,变化的不光只有一个数字,这里涉及到旋转。这个操作的数学本质,我们暂时不做讲解。 立方体发生了旋转,我们在右侧已经看到他的变化了,那接下来假如我们希望把它变大或者变小呢? 这里涉及到 transform 当中的第三行,说放 skill, skill 同样有三个分量, 接下来如法炮制,我们将工具栏的操作方式切换到播放。我们先通过滚动鼠标滚轮来调整一下场景视角的展示, 同样的还是有红色、蓝色、绿色三条指示线。通过前面的学习,我们已经可以举一反三。拖动绿色的轴的时候, y 值发生了变化的意味着物体在歪轴上的缩放发生了变化。同样红色代表 x 轴,蓝色代表 z 轴。 这里的数值当然也可以直接在点式器栏进行修改,这样我们就完成了对这个立方体的缩放操作。 此时如果想要保存对这个物体进行的修改, 点击 fire save, 或者是使用快捷键 ctrl 加 s 对当前我们编辑的场景进行保存。 说到这里,我们有必要解释场景的概念。每个 unit 工程创建出来的时候, 默认会创建一个场景,也就是我们这里看到的山坡信。 场景是一种容器,其中可以包含我们想要放在世界中的各种物体及其他内容。 默认的场景当中至少拥有门 camera 和 direction light 这两个物体。门 camera 是相机,是我们非常重要的主见。 direction net 是方向光,这个主见也很重要,我们将在后续的重要主见当中对他们进行介绍。 六点总结,一、编辑器界面的主要组成。 二、如何修改编辑器界面的布局。三、在成绩界面 点击右键创建新的物体。四、物体的 x 轴, y 轴, z 轴。五、通过在场景界面的操作修改物体的移动、旋转、缩放。 六、场景的概念这节课的内容就到此为止。 下节课我们会进一步阐述 unit 世界的构成。我是游戏石匠,谢谢观看,下次再见。

哈喽,各位同学,大家好,欢迎大家呢来到咱们最新的章节,就是 c shop 当中关于方法的概念,方法呢,英文叫做 method。 好,那咱们啊先介绍介绍方法的基本的一些常识和引入。 首先为什么需要方法这个东西呢?来咱们说一说啊,如果你的代码逻辑变多,功能变得复杂,一切都会很糟糕。 来咱们啊,举个例子看一看啊,比如说呢,你想做一个学生的成绩管理的系统啊,你会发现他有很多的逻辑, 比如登录逻辑,学生成绩的录入逻辑成绩,删除逻辑,修改逻辑,查询逻辑。如果呢,你直接去写代码的话, 你是不是肯定得信写一个叫做闷方法的这么一个东西,然后啊,你得把这一堆代码都要塞到这个闷方法这个大口号之间,就像这样子一样, 假设呢,登录逻辑二十五行,录入三十五行,删除三十行,修改四十行,查询十五行加在一块啊,哎呦,都已经百来行代码了, 所以这么多的代码,你看上去会不会觉得头晕脑胀啊?你会不会写着写着就忘了?哎,刚才那个逻辑在什么地方来的,你都不知道到哪去修改了, 所以有没有什么更加有效的办法能够管理咱们这么多的代码呢?哎,这就是咱们所谓的方法的引入啊,来我们看一看啊,如果我这样做呢,我在啊,咱们的 class program 这样一个范围之内,咱们定义这么一大堆的代码块儿,比如 login 这个代码块儿,它呢,这里面的代码就负责着登录 at school 这样一个代码块儿,这个块儿里面呢是负责的程序的程序的录入, delete 负责删除, update 负责更新修改, query, score 负责学生成绩的查询。那我把这些代码呀,分成一块一块的,然后都装到这些代码块里面,然后呢,我在闷方法这个区内啊,我可以直接这样去写了, 抖音 as gold, delete, update query, 那我在需要的地方可以直接写这个代码块儿的名字,这样的话,咱们的闷方法 里面是不是很清爽啊?然后呢,我们需要修改某一个功能的时候,比如说吧, 呃,关于这个学生成绩的修改这个功能你可能得去啊,改改代码,于是乎呢,你直接跑到 update score 这样一个代码的块里面去修改,哎,这样的话是不是定位很清晰啊? 好了,所以呢,这些东西就叫做方法,我们讲方法或者在 c 加加里面称作函数啊,当然你都可以去这么去叫他啊,叫方法或者叫函数都是可以的, 它是指的一段具有独立功能的代码,可以被调取使用。 你看,比如 log in 这样一个方法,那这个方法它里面的代码呢,是不是相对来说 跟其他模块都比较独立啊?然后呢,咱们把它封装成了,或者说单独独立成了一个叫做 log in 的方法,这里面是他的代码, 然后呢,它可以在我们的 men 方法里面被调用,你看我只要写上 login 一个小括号,是不是这个功能就会被调用起来啊?或者说就运行了里面的代码呀? ok, 那方法呢,是具有一些优势的,比如啊,可以将独立的代码进行统一的管理,避免代码臃肿杂乱。刚才咱们是把这几个功能都写在一起了,那当然会很乱喽,你都分不清楚了, 那如果说我把它啊,独立功能代码全部都整合在一起,然后呢,各自分开的话,那就可以避码,避免代码的臃肿杂乱。同一个功能呢,不需要 重复编写,可以提高复用性。我们看,如果呢,我要反复使用到 at school 这样一个代码的功能,那这里面的代码呢,是添加学生的成绩?好,你看我在这里用了一次, 那我在下面继续往下写代码的时候,是不是仍然有可能会使用到添加成绩这个功能啊? 那我使用到它的时候,是不是直接写 ads go 这样一个调用就可以运行里面的代码了呢? ok, 所以说呀,同一功能的代码不需要重复编写了,直接去调用这个方法就可以实现这个功能了。哎,这样是不是复用性还是蛮高的呀?好嘞, 接下来呢,咱们看一看如何在咱们的程序里面去定义一个 master 的方法。 定义 mess 的方法呀?是这样一个格式,首先你要写上 public, startic, void, 那这三个东西呢?是干嘛的呢?哎,你暂时不需要关心,你只需要知道必须要写上 public, startic 和 void 这三个单词,中间打空格就可以了。 随后啊,我们跟一个叫做方法名的东西,他呢是用来命名接下来的这一堆代码的,那你调用的时候呢,也会使用到这个方法名,随后啊,就是一个小括号,一个大括号。 然后啊,当前这个方法他所整合的功能代码呢,你都写到啊,这样一个区域内就可以了。好,那写完这样一个方法定义完毕之后,我们怎么去使用这个方法呢?在你需要这个方法的功能调用的时候,你 可以啊直接写上方法名,然后小括号,然后一个分号,这样就实现了方法的调用。来举个例子, 我们定义一个方法, public start to avoid, 给它取个名字叫做 say hello, say hello 的后面呢一个小括号,然后一个大括号。那这个方法里面具体干了件什么事呢?他呢向控制台上打印了一个 hello 这样的字符串, 那我想使用这个方法的时候怎么办啊?我直接写他的名字 say hello, 然后跟上一个小号,然后分号。哎,这样的话,我就实现了这个代码逻辑的调用。 接下来呢,咱们回到 vs 里面啊,来看一看方法到底可以怎么使用啊?咱们呢将刚才那个 say hello 啊在这里实现一遍。好,首先写上 这节课的题目是方法 method 的定义与使用。好,那方法的定义我们应该怎么办来的?是不是应该 public static void 这个很固定的写法, 然后是方法的名字,随后呢后边要跟一个小括号,一个大括号,然后在大括号之间,我们是不是可以写上什么呀?方法的具体执行代码在这里去写, 那这是他的定义,那方法的使用呢?我们称作调用啊,方法怎么调用的呀?可以可以直接在需要调用代码的地方用方法的名字, 然后加一个小括号,加一个分号,这样就实现了方法的调用啊,好了,咱们呢在这里实现一遍。 好,首先我们看一看方法需要定义在什么样的位置呢?它的 范围是定义在这个 class program 这样一个大口号之间,与咱们的 main 方法需要平级,也就是说你可以定义在这个位置,也可以定义在什么这个位置 啊,都是可以的,你看这两个位置都是跟咱们的闷方法是平级的关系啊,但是都是属于 program 啊,这样一个。呃,范围之内。好,我们先把它放在后面吧。怎么写呢?大家还记得吗?来死的 take 啊, public, 然后死的 take void, 最后取个名字,我们给它取名叫 say hello, 然后一个小括号,一个大括号。 好,这样这个方法就定义完了。然后呢,我们来填充这个方法里面需要执行的代码, ctrl 点 retlin, 咱们在这里写上什么呢?叫做 hello。 好, 接下来咱们要在 men 方法里面去对这样一个方法进行调用,你看,如果啊,我现在执行这个 messa 的工程啊,我如果现在执行这道代码的话,它会有反应吗?来执行, 那你看他是不是什么都反应都没有啊?我们在这里 ctrl 点 red, 先说一个 red 暂停在这里啊,走, 你看,什么都没有输出,对不对啊,什么反应都没有啊。好,那我们怎么才能够调用这样一个方法呢?是不是直接在这里写上 say hello, 然后一个小括号,一个分号就可以了,这样的话呢,他就会去直 行这个方法里面的代码来试一试看,现在这个海漏就打印出来了啊。好, 来,咱们回到 ppt 啊,看一个练习题吧。说啊,要定义一个方法,在方法里面需要定义两个数字啊,就是两个 inter 型的变量喽,然后呢,求出最大值,并打印在控制台。 好,我们啊,再阅读一下这个需求啊,再定一个方法,然后这里面呢有两个变量啊,两个数字,然后呢求出最大值,并打印在控制台。好嘞,现在咱们去到 vs 里面啊, 刚才呢,咱们定义了一个 say hello 这样的方法,在他的下面呢,与这两个方法平级的位置,我们可以啊,再定义一个 新的方法,就是求最大值, public static void。 好,给它取个名字吧,既然说你要求最大值,那就叫做什么呢?啊,叫做这个 print, 打印一个 max number 啊, 好了,我给他取这个名字,表示呢,这个方法是用来干嘛呀?是用来打印一个最大值的,当然这个方法名字你可以随便取啊,我只取这样子比较好理解。好,然后小口号,大口号。 在这里呢,我们定义两个变量, inter a 等于十, inter b 等于二十。 好,然后呢,咱们要找到其中的最大值 int max 等于 a 确实比 b 大吗?如果 a 比 b 大的话呢,这个成立,我们就让 max 等于 a, 否则的话呢,让 max 等于 b 啊,这个三运算符咱们之前学过好了,然后在这里我们 ctrl 点 retlin, 把这个 max 哎给它啊,打印出来,这个就是一个完整的咱们的函,咱们的咱们的这个 master 的功能啊,就是方法的功能。 好,那如何去调用这个 master 的呢?我们在这里是不是可以调用它呀?来把这个 say hello, 咱们注视掉,不去使用它。在这里咱们使用的方法是 paurent max number, 然后一个小括号,一个分号。好嘞,这样我们就实现了对于普润特 max number 这样一个方法的调用, 于是他见到这个东西之后呢,就会执行它里面的这一堆代码了,来咱们实验一下,走好,你可以看到啊,打印出来一个最大值是二十。 好嘞,那看完了这两个例子之后啊,相信大家对于方法的最最基本的东西已经稍微掌握了一些了,对吧?我们再回顾一下,方法的定义呢,是 public, start, take a word 的,这几个是固定格式,随后呢加上一个方法的名字,这个是你自己随便取的名字, 当然呢一定是还是比较有意义的名字会比较好哈。然后一个小括号,一个中括号,一个大括号,大括号里面呢就是你方法执行的具体代码。 在使用这个方法的时候呢,你可以直接用方法名字,然后呢加一个小括号一对,然后呢加上一个分号,就能够调用这个方法,然后呢执行它里面的代码了。好,那关于方法的概念呢,就给大家讲到这里。

接下来说生辰安卓 apk, 首先呢,生产安装 apk 是需要这个知识的,就是需要安装,安装的时候这里有这个图标,而且还不算完。看一下哈,他这里有两个,一个是 安卓 beautice support, 这个是最基本的一个,然后后面他需要安装,嗯,加瓦,那么这里是安装的 open g d k 一点八, 还要安装 sdk, 安装 sdk 或者是 ndk, 初学者建议使用 sdk, 不用使用 ndk, 因为 ndk 有时候支持上会有点麻烦。那么在这里 这里可以看到啊,我是用的本地的 sdk, 那么装好是这个样子,是这个样子就说明没问题,有时候安装会这里出错,那么就重新再回到刚才这里重新安装一下就可以了, 就重新回到这里重新重新添加一下模块就可以了。那么他的已经把路径列出来了啊,我还是喜喜欢用我自己的哈, 他把路径列出来了,那么就是这个是 open gdk, 然后 ndk, 然后安卓 sdk, 那么安卓 sdk 他默认安装的是这个 level 二 level 二八的,然后 后,嗯,然后就可以开始了。首先呢,一样的,比如咱们的赛挺要把这个当前就是边打包的这些场景放到这个三星 bug 的里面, 然后选择按住这个平台 switch plenty form, switch platform, 那么 这里有个一样的选项,就如果选中了这个,会把它打包成一个,打包成一个一个,嗯,打包成一个安卓项目,而不是一个 apk。 好,这里,那么这里呢就要配置稍微多一些。首先这里这里是,呃,这是 上面的,这里也是可以是中文的,这个就是应用安装完以后在那个图标下面的名称, 嗯,这个一般也还是俺就可以写成中文,但是嗯,建议还是不写,特别是在因为特别就只有最后打包的时候再改成中文,因为如果是之前就改成中文的话,会影响就是 play mode 的那个目录,在会影响就是在这里运行的那个虚拟的目录,那么建议是打爆以前再来改。 然后这里是比较常用的是这个方向,他有一个是自 自动选择方向,那么可以在这里选,也可以强制横屏或者是竖屏,嗯,强制一下, 然后这里这里是,这个是比较关键的,就这里是默认,不是这个样子,默认是李佛的 company, 就 修改这个的时候,这里会一起修改。那么这一段 pak 机内幕相当于是每个应用的 id, 那么判断的两个应用是否相同就看这个 id, 嗯,不不不,是看这个名字,是看这个 id, 那么这还有个版本号,那么这里还有一个,嗯, api level, 那么最低的是四点四 四,最高的是可以到三十,但是记得刚才这里这里没有,默认的话只能打二八的,别的打不了。嗯,这个他是最低支持多少,然后目标 目标的话,他默认是能打多高打多高,但是一般不需要,看个人习惯吧。那么 我是喜欢把它指定一个目标,因为可以少打一下,因为这个打包用的过程还是挺慢的,那么这里都不需要改,如果需要选,这里是默认是 mono, 如果是改成下面这个就需要使用到 ndk, 主要的就是这两这几这几处配置完了,然后就可以打包。 unit 的话,这种模式是打出来一个 apk 还是新建跟陌路?看,按住我的,然后这里就是输入文件名了,嗯, test 吧, 保存。那么第一次打包安卓程序会比较慢,而且需要联网,这个 open gdk 会需要联网,这个是一定要注意的, 那么有时候会打包不成功,打包不成功的话,嗯啊,这里跳 出这个来了,哎呀,这他主要是 open gdk 要访问, 就这个阶段是最慢的,特别是第一次打包在这里可能会卡住一两分钟甚至更长。啊,这就打包了,打包出来,然后把它发上去,发到手机上安装就可以了。 这个我把它发到我的安卓手机上, 不能发的。哎,小爱同学真烦。 那么如果打包第一次打包出现问题,那么来看这个帖子,他有告诉你怎么解决,嗯,挺麻烦的,所以第一次打包的时候一定要把 保证网络通畅,那么啊,还有就是,嗯,关于关于这个,这个 安卓就如果需要打包其他的,如果需要打包其他的那个其他版本的 其他版本的这个 apk, 那我之前写过一个啊,新手建议对大家来看这个视频,这个视频上有详细说明怎么怎么下载,就是其他版本的这个, ok, 这个就先到这。

今天呢,我们会利用十分钟的时间来制作下面这个二维卷轴游戏场景。我们会使用 unt 游戏引擎和一个叫做 twelve game kit 的开发包。如果大家计算机上还没有安装 unt 游戏引擎的话,大家可以按照我的步骤来完成安装。 首先,我们需要安装一个叫做 u t hop 的东西, u t hop 可以看作是 u t 引擎的启动器, 他是用的团队最近分离出来的一个功能,用来管理计算机上不同版本的应用体引擎以及用体项目。当然,你可以选择不安装用体啊,直接下载用体引擎的离线安装包。 不过因为我经常会在应用题的多个版本之间做切换,并且安装下载都是一键自动化的,使用它确实也帮我节省了不少的时间。应用题还不安装非常简单,大家可以直接从官网上下载安装。我将下载地址 粘贴在屏幕的下方。安装完毕后,桌面上会多出来一个 untip 的图标,我们双击启动它,并点击窗口左边的安装按钮。正如屏幕上提示,因为计算机上还没安装任何 untip 的版本,我们可以点击右上方添加按钮,并选择最上方的最新版本。 你们看到的版本可能跟我的有所不同, ut 每个月都会发布一个新版本,版本之间的区别很小,通常只是 bug 的修复和一些小功能加入。接下来,我们点击右下方的下一步按钮,屏幕上会要求你勾选需要安装的组件。在这里我们一个都不用勾选, 因为对于游戏的开发和学习来说,安装应用体引擎的主体就够用了。最后我们点击右下方的完成按钮,这时计算机会自动下载并安装应用体引擎。整个安装过程差不多五到十分钟,具体的时间呢, 取决于你电脑的配置。大家可以将安装界面最小化,喝咖啡、看视频等 unt 安装完毕后再回来。 ut 安装完毕后,不同版本的 ut 引擎会以卡片形式显示在窗口中。这时候我们可以点击项目按钮,并点击右上方的新建按钮。创建一个项目。 项目又常常称之为工程 project, 它是所有美术资源场景代码保存的地方,我们可以看作是游戏的源代码。在新弹出窗口中,我们选择 to d, 因为我们要制作游戏是一个二维卷轴游戏应用题,同时支持二维和三维游戏的开发。在这里我们只是告诉应用题,将我们可能用到的所有工具都提前准备好,方便我们的使用。接下来,我们将右边的项目名称改为 my to the game, 当然你可以改为自己喜欢 更有意义的名称。最后点击蓝色的创建按钮,新建我们的工程运体会进行短暂的配置。最后打开运体游戏引擎的主界面,这个界面又称之为编辑器艾特,因为所有场景美术资源的编辑,游戏中的各种选项都需要在这里完成。 我们知道 ut 自身提供了许多游戏开发的必要功能,但是让 ut 更加强大的原因是, ut 有着非常活跃的社区游戏开发者爱好者会在一个叫做 sdoor 的商店中上传各种游戏资源、脚本以及扩展包。 ssdoor 上的许多资源是付费的, 但也少不了许多免费的优质资源。在这里,我们需要使用一个叫做 tv game kit, 它是云体官方提供的专门用于制作二维游戏的开发方。它大大简化了 游戏的开发流程,非常适合于新手入门和学习。我们可以在这里点击 sdoor 的选项卡,并在搜索框中输入 to the game kit, 并选择搜索出来的第一个结果,然后点击蓝色的下载按钮,如果你还没有登录音乐体引擎的话,音乐体会在这里弹出登录框。 我强烈建议大家自己注册一个 ut 账号, ut 对个人的学习和开发是免费的,使用账号也可以访问出商店之外的其他功能,比如团队协作等等。下载完毕后,我们可以点击蓝色的导入按钮,将这个开发包加入我们的工程。 屏幕上会提示导入操作可能会覆盖原有的工程设置,因为我们是新创建的空工程,因此我们可以直接忽略这个警告。在星探处窗口中会列出开发包中的所有文件, 我们继续点击下方的导入按钮即可。开发包导入完毕后,在这里会多出来一个 to the gamecat 的目录。屏幕下方这个窗口会显示工程中的所有文件,这包括你创建的场景、图片、思维模型以及脚本代码。我们可以把它理解为一个文件浏览器即可。 另外,屏幕上放菜单栏中会多出来一个按钮, kittos, 与这个插件相关的功能都可以在这里访问。 我们首先点击这个菜单,并选择创建一个新场景。场景名称我们暂时不需要修改,直接点击创建即可。这时候音乐体会我们创建一个默认的场景,或者我们叫他关卡。 这里包含一个人物角色和一个简陋的地图。我们来介绍一下屏幕中间的两个窗口。左边画有网格的是一个用来编辑场景的窗 口,我们可以在这里选择场景中的物体,移动他们的位置等等。右边是游戏预览窗口,也就是游戏运行时将要在屏幕中显示的内容。可以看到应用题默认为我们选择了十六比九的长宽比。我们暂时不需要去修改它, 因为大多数手机和计算机的屏幕常关闭都是这个数字。我们可以点击屏幕上方三角形按钮运行 to the game kit 为我们创建的默认场景。 我们可以通过 ad 键作为移动, s 键下蹲空格键,跳跃, k 键进站攻击, o 键子弹攻击,这些都是 to the game kid 为我们准备好的,在视频下方官方文档中也有详细说明。 接下来我们来对这个简单的观察做一些修改。如果在屏幕的右方你没有看到一个叫做 tall palet 的窗口,可以点击菜单栏中的窗口, 然后选择 to the tail。 palette。 tail 在用中是瓷砖的意思,用在二维游戏的地图制作中。大家常常将场景划分成一个个小网格,然后利用一种铺瓷砖的方法来创建地图。这种方法的优点自然是速度快,方便。 另外,这功能是应用题自建的,并不是 to the game kit 这开发包提供的。因此即使我们没有使用其他任何开发包,也可以使用这个功能。叉 opat 窗口打开后,我们发现他默认我们显示两个砖块, 一个是光秃秃泥土,一个是绿色草坪。我们随便选择一个砖块,并在左边场景编辑窗口中按自己的喜好铺上砖块。砖块会自动和背景的网格线对齐,并且砖块之间会自动连接。我们甚至可以创建不同高度的 平台。砖块之间呢,并不会产生任何缝隙,因为这个砖块资源是 to the game kid 事先设计好的,设计人员已经事先考虑到这一点。随后我们可以点击运行按钮,测试刚我们创建的地图。 接下来我们在游戏中加入怪物角色,继续丰富我们的游戏逻辑。这时候我们首先要利用屏幕下方的 project 窗口,也就是我们之前提到的运题自建的文件管理器, 我们需要通过它找到怪物的资源。首先我们打开 to the game kit, 然后选择 prefabs。 prefab 这个词在 unity 中经常会看到,它的中文意思是预设,通常指是那些已经为你创建好的,已经有一定功能的可以直接使用的 东西,比如怪物,人物角色、场景、用户界面中的按钮等等。总之你可以直接拿来使用就对了。在 prefab 的目录下有一个叫做 enemy 的目录, 我们打开它,看到这里有两个怪物, trumper 和 speeder。 在应用题中的很多资源,我们可以通过字面意思来猜测它有什么功能。 trumper, 咀嚼者,听起来就是要吃人的怪物。 speeder, 吐口水的怪物。好吧,听起来这两个怪物区别像是,第一个怪物进展攻击, 第二个怪物远程吐口水攻击这里我们直接拖拽第一个怪物到左边的场景编辑窗口。我们点击屏幕上方三角形按钮,测试一下我们修改后场景。当我们靠近怪物时,怪物会向你攻击,屏幕左上方的小红心也会减少一格。 我们退出游戏模式,继续对怪物的属性进行一些调整。 unity 右方这个窗口, inspect 监视器会显示你选中物体的属性。比如我们可以在场景面器中用左键选择不同的物体, 可以看到这点内容也会随之改变。这里有个非常实用的技巧,通常在一个复杂场景内,不同的物体会重叠在一起,并且还有一些看不见的功能。物体,比如声音和一些后期处理的特效。 直接通过鼠标左键通常没有办法正确的选中。你想要选中物体,于是我们可以使用屏幕最左边的一个称作 hierarchy 的窗口。 hiverke 在英文中有着层次结构的意思,这窗口中会列出场景中存在所有物体,看见的,看不见的,甚至于屏幕之外的物体都会在这里显示出 出来。我们可以双击这里的 chomper, 选中并聚焦这个物体。右边的 inspect 中也会随之列举出这个物体的属性。可以看到这里显示的属性可以说是琳琅满目,异常复杂。 我们再仔细看这里,属性又可以被折叠成不同种类, transform, sprite, renderer, animator, box, clutter to the, rigid, body to the 等等等等。每一个分类都扮演着非常重要的角色, 比如 transform 代表这物体在场景中位置,我们甚至可以修改这里的数值来移动这个物体。 sprite trainer 是用来在屏幕上渲染或者显示这个物体用的。如果我们直接把这里的小勾勾去掉,这物体就会直接从屏幕上消失。另外,这里有每一个分类,在应用题中被称之为 component 部件, 我们甚至可以删掉或者加入新的 component。 现在我们只需要把目光聚焦在这个叫做 enemy behavior component 上就好了。敌人行为,从他名字上可以看出,这是一个用来设置怪物属性的部件。比如这里有一个 speed 的属性, 用来设置怪物移动的速度。我们可以拖拽这里来修改这个数字,或者直接用键盘将这个数字改为三。接下来我们点击运行按钮测试一下,可以看到怪物的移动速度确实提高了许多。 同时我们可以修改这里的 view field view 来修改怪物的可视区域。屏幕左方的绿色区域代表怪物能够侦测到范围,只有你出现在这区域中,怪物才会向你跑来并对你发动攻击。我们可以点击运行按钮测试一下我们 修改后逻辑。这时候如果我们站在怪物的身后,他是不会发现我们的,只有等怪物转身时,他才会向我们跑来并发动攻击。 在这期视频中呢,我没有使用任何一行代码就已经能够做出像模像样的二维卷轴游戏其实还有许多非常实用的功能,我们会在之后视频中向大家陆续介绍。

今天分享一期我遇到的坑,注意看这个请求。首先它是一个 pose 请求参数,不是拼接到请求地址后面。然后就是它的参数,没有参数名。 对,你没听错,没有参数名,并且也不是以森表单的形式进行请求,我用请求工具请求就是像图中一样。那么问题就来了,怎么写一个 h t t p 请求这个接口?说实话,我见过很多种请求方式, 这种请求方式还是第一次见,我甚至怀疑需求文档是错误的,但是他确实是这样的,我尝试了好几种方法都不太行,通过百度什么的方法都用过,因为我一般用的都 是 rest template, 很少使用 http client 和 g pro connection。 尝试了这两种都不太行,可能是我百度的方法不太对,当我一筹莫展的时候, 一不小心点开了 rest tempo 的封装的 post object 方法元码,发现他的请求参数是一个范型,于是我把参数按照要求封装好后转为 stream 类型,然后直接作为参数传过去, 没想到真的请求通过了。可能对了解过这方面的人来说,他们会说这么简单都不知道,但是确实我刚见到的时候都颠覆了我的认知。先不说其他的正经人,谁这么些借口啊。

你可以右键创建我们的一个标卷,可以在这边去修改他那个名字,也可以在这边修改他的一个圈子,放点位置啊,旋转收放之类的,当然你可以拖拽的行驶去修改他的成绩结构。这边 勾选开关可以去设置他的一个根据点 xt 五啊,就是是否激活去或 boss 啊,你可以右键直接进行个滴滴键,直接进行个删除, 这是我们 o g 的一些电 o g 的一些操作,那我们看下代码怎么去实现这些东西,那么我们挂上这个甲板,我们运行。 首先这里面是我们使用六点五卷的形式啊,去创建我们那个对象,点亮的形式去访问我们的一个名字,那么这边我们就创建对象对象,并且设置他的名字。然后这边我 我们可以使用 dmg 点低俗教育去销毁我们的一个 dmg 对象,这里你看到他的打印,因为我们创建打印然后立即销毁了,所以这边是看不到,你只能看到一个打印 啊。下面我们除了用六点五卷的形式去创建我们对象,我们也可以使用这个点五卷点因死的形式的形式这个函数来去创建我们的一个实力, 那这里我们用的是一个玉字体,其实本质上相当于你们把这个拖上来啊一样的概念 进行一个实定化啊,如果你把这个移除掉,我们这里判定他为空的时候,我们就会用这个函数来去创建我们的一个啊基础的对象,这边包括球啊,加长体啊,圆柱体 之类的,类似你这边的点我卷点创建我们这些的一些基础对象,一般测试的时候可能会用到,那么我们这个时候我们创建,我们就创建一个 qq, 当然除了 plufi 版的形式,你可以直接拖场景里面的这些欧布卷直接进行,也可以直接进行一个视力化,本质上是一样的。呃,我们 我们来看一下一个这边我们接口这里我们首先是使用名字去查找根部卷点,泛着去查找场地里面所有的一个 这个名字的一个对象,那么我们这个取奇怪一点啊,我们首先会将我们的一个实力化的对象去改名字,改成这个,然后我们尝试去场景里面全部去找, 当你的这里场景里面他找的时候只会找那些 i t v q 的一些电视剧啊,那么 boss 他是找不到的。我们来看一下这边, 我们这边 pass 一开始的时候啊,因为我们是为 boss, 所以你这边是找不到的,然后在这里边我们是设置为求,之后呢,我们第二遍找,我们是 找到了对应的对象,然后如果我们名字上面没有这个东西啊,里面没有任何这个东西的话,你去找的话也找不到,他返回也是 boss 也可以弄饭的。这边我们如果找到了我们就打印名字,没有找到的话我们就打印一个。 呃,这个语法是判定如果这边为空的话,他就返回根纳,否则的话他这边 会是直接用这后面这个字母串作为一个防卫值, 这是我们的一个这边的一个,另外一个是查找我们的一个 bug, 我们来看一下 这里我们的购物券啊,在上面这边可以设置他的一个标签, 咱们当我们没有任何个设置为标签的时候,我们去找对象,他发现找不到,但是我们这边设置为陪陪亚的时候,我们再去找,我们就找到我们对象,这是一个查陪陪亚的对象的形式,当然你这边也可以用 oppo, 据查到多个他是返回场景里面所有有这个 bug 的一个欧布卷, 这是这个接口。我们接下来看一下我们的圈子缝。首先我们圈子缝会去找下面的一个,我们拿到我们本身的一个刚才实地画的这个接口啊,去找他下面的对象有没有这个对象, 比如说我们这边我们去找下面的一个, 那一开始我们取得很奇怪的时候,我们去找, 我们是找不到的,但是如果我们取得一是一个 q 本,我们是可以找到对象的,即使他为 boss, x 为 boss, 他也能找得到,这是他的这个点。然后来看这边 我们可以使用圈子缝点设判,用尺来去修改我们的一个层级结构,然后这个这个 fox 的话,他是保证他的位置不会说被修改的啊。 ui 上一般是设置丢个 pose 过去,他的位置世界的位置就有可能会有改变啊,你设置为一个确的话,他的世界位置就一定不会变。 然后我们来看下这边,在这里我们本身的一个对象的位置是二二二,那么我们调用了这个为 boss, 我们调这个接口,我们第一个调的是这个接口,然后调的是一个 logo 为 two, 那这个时候我们设置他的一个 logoplc 选啊, logopc 选就是这边的值啊,直接改他为一个零加零。当然如果我们设置为一个白 boy, 有时候 我们这位传给 q 的话,他设置的是个 pos 型,这是他的一个世界坐标哈,因为我们本身这个他的副成绩是二二二,我们要设置他为一个世界坐标为 零幺零的话,他应该就是负二,负一和负二啊,这才是一个,你把它拖出来外面的时候,你就发现他是世界坐标是零幺零啊,就说他不在任何一个圈子缝任何一个就下面的话,那么他的坐标他这边显示的就是世界坐标,如果在 啊其他的圈子放下面的话,他的显示的是一个 logopct 啊,其他的欧拉甲和那个就这边的罗天祥更是掉啊,其实一样,他也是有一个 logo 的概念, 那么呃,这边注意啊,如果我们的一个四个二是不是直接是四个二,而是 lose? 四个二是不代表他的一个就是他的相对于 世界坐标这边的一个时间啊,那么如果但是他不能设置你要设置的话,你就先把这个设置拍上去,别浪,这样相当于把它拖到最顶层。这边就没有在任何一个 啊,店务券之类啊,指节点啊。这个时候你在设置他的 logosgir, 其实相当于设置他的一个啊,全局的一个 stogrocesgol, 然后再设置他回原来的一个圈拍摄,这样的话你就可以修改他的一个 啊,全局的一个 skl。 一般情况下我们使用约定的形式啊,去约定他的一个复成的 skl 是为 一一,这样的话我们直接设置他 logoske, 下面设置他的一个全局的一个 globosgle 一个概念,那么这边可以用打印的形式打印我们这边的一些信息, 我们来看一下下一个他是木, 那我们重新创建一个,这个时候我们把我们的速度改一个,改个三的话,我们来看一下我们这边 他,你会发现他会一直移动,我们来看一下我们这边 啊,不对的时候呢,我们更新位置,我们如果速度是小于等于零,我们就跳过了,否则的话我们就乘一个时间给我们的位置加上去啊,加上我们的一个向前的一个量,那么你可以用全是放点 fowword 的形式来去 一个前置的量啊,对应的就是 我们重新来看一下, 我们改的是我们 我们这边的一个全是放这边的直,因为我们本身是朝着是这边的哈,如果你可以把他的直改一改,改成这边的话,那这个时候他就会沿着这个方向进行的前进啊,他的 foww 的指的就是他的这个蓝色这个轴啊啊,你可以看到他现在是朝着这个方向走, 这是佛沃的一个值。同样的还有一个 app 和 rat 对应的就是我们这边的 app 是我们蓝色的, rat 对应的,我们是红色的那种, 这是我们的一个木,我们来看一下下一个第四交友欧踹的这边我们是便利我们圈子缝,用这种或 e 区的形式来去便利我们的所有的一个指节点, 那么我们可以把这些给拖进去啊,比如说我们创建一个新的一个对象,我们拖进去,我们纸类里面再创建一个新的对象,我们两个对象拖进去, 那这个时候呢,我们按一下这个 dc 叫 otrl, 我们就把这些对象都删除了,他会遍地所有的指对象来进行一个 这边加上去,如果你在这边直接删的话,可能会破坏啊,可能会报错啊,这是历史的里面,因为你在边境的时候,你修改你对面的历史的可能就会 会出现这个问题,但是我们把它收集起来,然后再统一进行销毁法就没有问题,这是第一种防御方式,第二种防御方式是,呃,全是放点跟全是 放点圈的 cat, 这个是获取他纸类里面的所有的一个节点,然后 vip 等于你可以用说 给圈子放啊,然后这边 是一个下标啊,第多少个那么纯种 i, 然后这边的话你就可以去访问他,对,第二个全是缝啊,那么这边我们可以用第二, 这边我们可以用第八个点烙个的形式对他们全部进行打印。 嗯,我们这边停止,我们重新重新运行, 等一下这边编辑完成,我们创建一个对象丢进去,我们再创建一个对象再丢进去,然后这里我们取个名字, 然后我们第四交友。奥,那这边我们就可以辨定所有的一个圈子放里面的纸类来进行一个访问,那这是我们圈子放的相关和根部就有相关的一些接口。