粉丝923获赞7383

好,可以看到我们的这个这个人,他会自己去走,去找到一个合适的路径,去走到这个怪物的身上啊,走到这个目标节点。好,这是一个最简单的往目标 去寻路的一个寻路。好,要使用我们的 ai 寻路的话,首先在 windows package manager 里面找到我们的 ai navigation, 在 这里 unity registry 注册这边往下方找到我们的 ai navigation。 ai 寻路,我们点击导入安装一下, 好,关闭这个窗口。然后在场景中我们右键创建一个 ai now mesh surface, 就是 我们的一个寻路面。好,然后点击烘焙, 点击烘焙之后,哎,看到我们看不到,哈,那其实是右上角有个 gsmos 啊,给它打开要显示出来,显示出来它可以看到我们这里已经有烘焙面了。 然后啊,我们的这里也有个 ai navigation 的 这样一个小窗口,那有时候我们看不到这个窗口啊,或者说我们有时候像左上角这些窗口都不见的情况下,上面有一个在 scene 这边有一个 overlay menu, 就是 我们的这些小的菜单 啊,像左上角这些窗口都这些小的菜单不见的话,大家可以给它打开 air navigation, 好, 可以给它打开,打开之后这里可以显示或者说不显示,我们先隐藏一下, 这样子可以看到,然后我们有这样的寻路面之后,也可以看到我们的这上面这些寻路面看起来不太正常啊,不太正常有几种处理方式啊,我们把这几个 cube 往上挪一点, 然后再重新烘焙啊,那这里是因为我们是有一个坡度,我们有一个允许零点七五的坡度,还有一个四十五度的坡度,我们可以把这个坡度给它调小,我们点击 windows 啊,然后找到 ai navigation, 它有一个斜坡坡度,还有一个高度,是否往上走的一个高度,我们把它调小一点 啊,然后关闭这个窗口,重新再点击一个高度,我们把它调小一点啊,它只有一个下面的路面, 然后这里的话我们可以,然后这里的话,我们的这个寻路用的是 random meshes 啊,就是我们的可渲染物体,它都会 检测到,哎,它不允许走。然后我们也可以使用碰撞体的方式,即便是像你的这个 cube, 我 们这个 cube 是 没有碰撞体的情况下,我们再去烘焙也是一样的啊,但是如果你用的是物理的碰撞体, ok, 让我们烘焙,那这个没有碰撞体的这个对象啊,它就不会被烘焙进来, 那地面这个地方就可以穿过去。好,那这个根据需要去选择。好,我们有了这样的一个寻路面之后,我们再去创建一个,呃, 再去创建一个玩家啊,或者说怪兽啊,怪物,然后我们添加一个主键,是 nano mesh agent 啊,这个可寻路,可寻路的对象,还有一个淡淡的绿色标。 好,然后我们在场景里面,比如说想要让这个对象啊,这个 enemy 一 直朝向这个 q 吧,啊,或者说朝向一个球吧。 好,这个这个 enemy 身上我们给它挂一个喷,挂一个胶囊体,让它看起来直观一点。好,然后我们就可以编辑我们的第一个代码,创建一个代码, 我们打开我们的代码编辑器, 这里我们声明一个 non match agent 的 公开变量, non match agent, 好,这个公开属性公开,然后我们这个就是来自于我们场景里面的这个。啊,我们的这个怪物身上的这个主键啊,我们获取这个主键, 获取自己身上的这个主键。 好,获取完成之后,我们可以就可以在 update 真视界里面不断地朝目标去移动,然后我们这里公开一个属性, 啊,是目标。好,然后我们在这边呃, update 里面去设置目标。 set destination 啊,设置目标点的位置, target 点 transform 点 position 啊,设置它的一个位置,我们保存一下代码,大概这里的代码就这样子回到我们的 unity, 然后把我们的这个代码挂载到这个 enemy 身上, 然后它的目标点目标,我们就是我们的这个目标,就是个球挂载过来啊,这个可以不用挂啊,这个它在运行的时候会自动获取。好,我们运行一下。 好,可以看到这个这个怪物会一直往这个球身上去移动,我们去拖拽这个球。好,可以看到我们的这个这个人, 我们锁定看一下,他会自己去走,去找到一个合适的路径,去走到这个怪物的身上,走到这个目标节点。好,这是一个最简单的往目标去寻路的一个寻路。 好,接下来我们去做一个寻路路径,可以看到他已经计算出他的路线,我们不断去移动, 他就会找到一个合适的路线。

哈喽,大家好,今天给大家介绍优益体这个软件,优益体的话大家都知道它其实是作为一个游戏开发软件在被使用的,但是其实优益体的话近几年也在逐渐的用于工业上面的数据孪生,那么 接下来我就带大家来看看如何去新建一个数据孪生项目,用于工业上面来去制作数据化的场景。 那么首先呢 unity 的 话,它其实不只是 unity 一个软件,它其实主要的一个引入的一个软件叫 unity hub, 在 unity hub 里面我们要去去下载它对应的这些这个 unity 这个编辑引擎,这个编辑器版本, 那么比如我这里下载的是一个二二版的一个编辑器,那么接下来我就要去根据模板去新建一个空白项目。那么一般来说,我如果说简单做一个呃基于 unity 的 一个数字燃烧工业数字燃烧的一个项目的话,那我就选择一个 universe 三 d, 然后我直接选择创业项目,这个时候我就可以开始启动我整个项目的一个呃呃新建的一个过程了, 那么这个时候他正在新建项目,接下来他会打开他的编辑器,然后这个时候我允许了冒风险去打开这个软件进行编辑,那么这个时候我又调出了 unity 的 一个主要的编辑器的一个软件界面, 他这里会加载他 unity 里面所用到的各种呃开发包,包括语言包啊,场景包啊,包括呃字体包啊,各种场景类的一些资源 等。它加载完毕之后,这个时候就打开了我们的工作项目。 no, 这个 u e t 的 话,目前呢是一个纯英文版本, u e t 的 话,它是支持汉化的,你可以去找对应的汉化汉化包,然后去把它的软件界面汉化成中文。 但是呃,在这里的话,其实我觉得用英文原声的英文其实用的是比较习惯的,其实看英文其实是比较容易上手的。然后稍等一会,他这个加载的时候是比较慢的,尤其是首次加载的时候, 然后这里我们简单快进一下, ok, 那 么接下来我们现在就打开了 unity 的 软件界面,这个是它的编辑器界面,我们简单的来看一下这个界面,这个界面的话 左上角这边是菜单栏,包括文件呀、编辑呀、资产呀,然后这些主键呀、服务啊,窗口帮助之类的一些简单的一些菜单。然后右边的话其实是一个,我们先看左边,左边的话是我们去编辑场景主要的一个目录数,大家可以理解为是一个目录数, 我们比如说,呃,我们这个是新建的一个场景,那么在这个场景底下我们添加了主相机,对吧?添加了光源,然后添加了一个呃,这样一个坐标系,然后同时我们还有这个地面,那么 我们点击这个之后会会发现右边它出现了一个属性栏,那么其实右边这个 impact, 它其实就是我们对应的这些我们创建的所有这些场景中的物体,它对应的属性我们可以在这里去编辑,比如说物体的位置呀,然后光源的大小啊,然后相机的角度啊,这些都可以在这边属性栏里面去编辑。 那么中间这个那大家显而易见,它其实就是我们的一个主要的一个编辑窗口,比如我们可以在这里去拖动我们的相机视角,然后在这个窗口当中我们可以去按住鼠标中间可以去移动这个啊,平移这个试图,然后我们摁动,我们滑动滚轮可以去缩放这个视图大小,然后我们 按住鼠标右键可以去旋转我们的视角,那么大家会仔细看的话,会发现左上角这里有一个 scene 啊 scenes, 还有一个 game game, 其实,那么其实这两个我们待会就可以看到区别在哪。然后我们先看左下角下方的话,我们可以看到它其实是个 project, 这个是什么呢?这个其实就是我们整个这个,呃用一体这个项目所用到的所有资产,这个资产是包括什么意思呢?资产 意思就是我这个 u 一 体这个数字燃烧这个场景项目里面,它包含了这样一个信,这样一个场景,那么它还包括我这个对这个场景做的一些设置,然后还包括我底下我这里面所用到的脚本, 我用到脚本就这个是脚本的意思,包括我用到图标,包括那么这个 size 里面,它其实就是我这个整个这个数字燃烧项目里面所要用到的资产。比如说 我想要在这个这个场景里面去导入一个模型,那么我就会把模型先放到这个本地的这个,呃,在这个资产包里面,我就把模型先导入到这个资产包里面,拖入到我们的目录里面去, 再把这个,呃,然后这个时候模型就会出现在我们的场景当中了,我们就可以去编辑,然后再通过属性去编辑这个物体的位置啥的,然后那么其实还有就比如说,比如说我要在这个场景当中去设置我的 ui, 对吧?像你打游戏的话,我们会有那种,呃游戏的那个准心啊,然后包括这个呃方位角啊,比如包括数值啊、比较速度啊,然后子弹啊、弹量啊啥的。你这些 u i 这些字体,你可能需要用到微软雅黑啊,或者说一些特殊的一些字体,那么字体的话也是通过我把我们从网上下载的那个字体的呃格那个对应格式的文件直接放到这个 set, set, set 这个, 呃这个资产包这个文件夹下面去,然后再把这个字体去导入到我们这个呃这个场景当中去,然后就可以实现一个更新。你不只是我们刚刚讲到,对吧?我们的三 d 模型,然后我们的字体,然后其实还有包括像我们的纹理,然后包括还有像, 呃还有的话就是我们的脚本,因为比如说对于 u 一 体里面,我们比如说我在 u 一 体里面 导入的一个工业机械臂,那么这个机械臂如何在这个场景当中实现一个呃实现一个运动呢?那么我我就要去对它,对这个机械臂做一个呃,通过脚本去对它做一些算法上面的一些呃脚本开发,比如说我们做运动学正解,做运动学逆解,那么 那这个时候我们就需要通过它 u 体里面自带的这个脚本去实现了它在 u 体里面我们可以直接在右键, 你会发现我们在这个目录数字里面,右键会发现它有很多个选项,比如说我们创建一个 empty, 我 们创建一个空白的一个一个物体,对吧?我们创建一个空白的物体,那么你看这个物体就会出现在这个这个场景当中,只不过这个物体它是没有形状的, 因为我们这个物体我们没有指定它是任何形状,对吧?我们只指定的它有这样一个物体,它的坐标,你看会翻看到它有一个坐标以及它的旋转轴。 另外比如说我们在这里去新建其他一些项目,你看他可以新建一些光源,你看这是光源,对吧?然后声音啥的,以后 ui 就是 新建 ui, 比如说我们可以简单的去新建一个文本, 对吧?那这个时候你看这个时候我们就可以,呃,然后他这里是要导入他对应的那个文本的那个那个包,然后这里我们先不导入了,然后我们先看,然后我们先再看看别的, 然后我们看,然后我们在右键,我们看看这里,然后在这里你看还有相机啥的,然后然后这里,然后这里的话,然后这里的话我们看到这里的主键,这里来在主键,在这里,然后在脚本, 因为这是一个空白项目,可能现在还加不了脚本,我在这里在这里有脚本 y 脚本, 然后然后我们先来看这样一个东西,那我这里点运行之后,然后这个时候它就在编辑它这个 u v t 的 这个功能项目, 编辑完了之后,你会发现这个时候主要的这个场景编辑器,它,它直接自己跳到这个 get 的 一个界面,那其实也就是什么呢?就是说我们是在 sim 里面,在这个 sims 里面去编辑我们的场景,编辑完了之后我们点运行,这个时候我们就进入了游戏模式, 他是这样一个意思,然后在这里游戏模式里面我们可以去设置他的这个分辨率啊,然后包括显示器啊,然后包括那个显示哪些东西和不显示哪些东西。 然后这个其实就是对 u 一 体这个界面的一个简单的一个介绍。呃,然后,呃具体更深入的后面可能会再结合具体的工程项目去讲。

ai 开发的风还是卷到了 unity, 现在你使用 codex 连接上 unity mcp 就 可以通过 ai 来开发你的 unity, 无论是建模还是一些其他逻辑开发,你可以看到现在就已经连接上了,这是我的 mcp, 我 把所有的权限啊都给这 ai 了, 完全交给他。好吧,那现在比如说看我现在这个项目啊,有一些报错啊,让他给我修复一下,帮我修复一下现在的一些 bug, 此时他就可以控制我的 unit 项目了,非常简单。接下来我还要探索使用 ai 来做更精美的模型,以及打通整个建模动作,还有 unit 开发的全部流程。

分享一下我是如何通过 ai 绘制游戏美术资源来完成动画加载界面。这里我们使用到的工具分别是 chad, gpt, holopix ai 和我们的 unity。 首先我们需要打开任意一款 ai 软件,这里,嗯,我使用的是 gpt, 然后让它给我生成提示词。 这里我们只需要点击自由画布新建项目,然后我们就可以创建成功。然后将我们的极值词导入其中,点击生成,等待生成完成 这款 ai, 然后已经看到我可以已经把这个我想要的主场景的这张图片生成出来了。下面我们只需要按照我们预定好的格式和内容给提示词让它重生成即可。然后根据尺寸我们寻找相应对应的尺寸。 我们可以使用一键勾图功能,一键取出它的白点。然后我们将我们生成好的素材统一导出为偏 j 格式。 这里我们选择解压到桌面,然后进入我们的 unity, 将我们的场景键导入。导入进 unity 这里,我已经导入完成了。然后我们需要对图片进行设置,我们将纹理类型改成二 d 或 u i, 分 别对其进行操作。然后我们寻找我们的画布节点,将我们生成好的图片依次进行挂载 好了,这样呢,我们游戏美术资源已经挂载上去了,让我们运行完成结果, ok, 我 们好看的进度条我们就做出来了。这期的分享就到这里,我们下期再见。

大家好,今天我们创建题库应用项目的答题结果显示面板,在我们答完题之后,会在界面的中间弹出一个结果显示面板,显示答题的进度以及是否重新答题等等一些功能按钮。 现在我们打开项目,打开以后我们在答题页面选中答题的这个画布 to the canvas, 我 们在层级面板中右键单机选 ui 面板命名为 resort panel。 结果面板将它的锚点设置为居中。 middle center 设置宽八百,高六百,背景颜色选 半透明黑色零零零一百。初始状态是隐藏的,但是现在我们因为要做它的一些按钮和文本,所以需要现在先显示, 完成以后我们再隐藏。现在我们选中结果面板, resort 标题右键点击 u i text, 命名为 resort, 抬头设置它的宽为六百,高一百,锚点为顶部居中。我们的场景式图可以看得更清楚一些。文本内容为答题完成 字体选站酷字体,字体大小选四十八,字体颜色按默认的白色对齐方式选上下居中,左右居中。这就是结果面板的第一个文本的显示效果。 我们再在它下边创建一个分数显示的文本,还是右键 u i 文本, resort square 设置它的宽六百,高八十,锚点选居中,位置外为三十,文本的内容为正确,然后冒号八杠十题。 字体选我们上期创建的阿里巴巴普惠体,字体大小调整为三十六号字,字体的颜色选白色,对齐方式居中。 然后再创建一个文本,显示你答题用时。 resort time 设置宽为六百,高为八十,锚点选居中,位置外 回负三十,文本内容输入用时十五分三十秒,字体选阿里巴巴普惠题 句中对齐。接下来我们再创建一个重新答题的按钮,选中这个结果面板,右键 u i 按钮重命名为 result restart button, 按钮的宽度调整为两百五十,高度八十,锚点选居中,位置为一百二十。再找到这个按钮下边的文本,将按钮的文本显示为重新答题, 然后字体选我们为按钮准备的字体,字体大小二十八。接着我们再创建一个查看错题的按钮,还是选中这个面板 u i 按钮 result review 版本,将它的宽设置为两百五十,高八十,位置外负一百。找到它下边的文本,将文本改为查看错题,选中一个中文字体,字体大小调整为二十八。 还需要一个按钮,就是返回科目按钮,我们再创建一个按钮, u i 按钮 重命名为 result return, 也是宽两百五十,高八十,某点选居中,位置外 调整为负两百二十,将它的文本改为返回科目,选择选一个中文字体,字体大小调整为二十八,这样我们的结果面板就创建完成了, 这就是最终的答题结果显示面板,现在呢,我们再将新创建这个结果显示面板隐藏在检查器面板中,去掉这个勾选,这样初始状态就是隐藏状态了,记得保存。 这就是关于答题结果界面的制作,那好,今天的分享就到这里,我们下期见。

当我们的鼠标移入这张图片的时候,它会变成这个对号,当我们鼠标移出的时候,它会变成这个小飞机。移出,移出,移出。首先我们准备一张鼠标的图片,把它放到我们的工程里面, 然后我们需要把这个鼠标的类型,这张图片的类型改成 cut 啊,不能是精灵图案或者其他类型,一定要是 cut。 改成鼠标类型之后,我们点击应用,那我们这次又是我们的鼠标的图片,那怎么设置?我们点击左上角 file, 找到 build setting, 然后点击 player setting 啊,我们在 player 这个叶片 project setting 的 player 这个叶片中可以设置我们的默认鼠标啊。我们把这个刚才的这张图片给到我们的鼠标,给到我们的这个属性栏,然后就关闭。 那这样子我们在运行程序的时候,我们的鼠标就会默认变成我们的这个小飞机。好,当然我们也可以通过代码去设置。首先我们把这张 cut 图片先删除掉,先移除,在 project 图里面创建一个代码叫 set cut。 设置鼠标,把我们这个代码放到场景的任意位置。首先我们需要知道我们的 cut 是有两个主要属性的,第一个是 visible, 代表我们的鼠标是否显示或者隐藏,如果点击出,那我们的鼠标就会显示。那如果点击 false, 那 我们的鼠标就会隐藏。隐藏的厚厚的鼠标是看不见的,我们需要按 esc 才能再次出现。还有一个是 ctrl lock state 锁定状态,它有个 locked, locked 代表是会把我们的鼠标集中在我们的屏幕正中心,在我们聚焦在游戏窗口的时候,我们的鼠标会聚焦在屏幕正中心,并且我们的鼠标会默认隐藏,不管你有没有写鼠标的显示隐藏,它都会默认隐藏好。还有一个是 ctrl delock state 的 can find, 这个代表我们的鼠标局限在我们的游戏窗口这个区域内,它会把我们的鼠标限制在我们的游戏窗口,不管我们往左右怎么移,我们的鼠标永远不会超出这个键的窗口,就是我们的视图窗口,它不会超出去。好,接下来我们来设置鼠标, 有一个 set cursor 设置鼠标,如果我们写的是 non 默认的,也就是用没有图片,就是用系统自带的鼠标,那如果我们设置了图片,假设我们开放一个公开的属性,然后把我们的这个图片设置到 cursor 点, set cursor 设置过来,然后第二个参数代表我们的 hotspot, 就是 我们的鼠标热点, 那我们默认的是零零点,就是我们的 top left, 也就是我们这张图片,也就是我们这张图片的左上角。左上角代表它这个点会跟随我们的鼠标零零点这个位置, 那如果是这个像素,比如说这个图片的尺寸是一零二四乘一零二四的,那我们右下角我们设置。如果是一零二四乘一零二四,它就是右下角跟随我们的鼠标中图片,也或者你也可以设置中心,那如果我们设置零零点,那我们就 left 点 zero。 好, 后面我们直接用 open, 那 我们回到我们的工程,然后找到我们刚才的这个代码,把我们的这个格式,这张鼠标的图片拖拽给这个属性,那我们来运行。好,这样子,我们的图片我们在运行的时候,我们的这个鼠标就会变成我们刚才的是要设置的这张图片, 然后我们的点击也是相对正常,我们左上角的这个零点去点击的时候也是 ok 的。 那如果说我们刚才的这个地方不是用 vector 点 zero, 我 们做一个偏移 event, 比如说是五百,五百它就相当于是一个鼠标居中的一个位置,那你觉得这张图片大概五百五百的像素可能是大概这个点,那这个时候我们运行的时候,我们的鼠标看着好像还是一样,但是我们在点击的时候,我们还跟刚才一样,左上角这个地方是点不到了,只有我们鼠标再往里面挪好,挪到大概刚才中心点的这个位置, 它才是代表我们的真正的点击热点。我们可以去改修改我们的鼠标,比如说鼠标滑入这张图片,我们去修改一个状态,鼠标滑出修改另外一个状态,删除原本的这个场景中添加的这个代码,然后我们在这边创建一个代码叫做 image power, 然后把我们的代码代码拖拽给我们场景中的一张图片,比如说像这个拖拽给我们这张图片, 我们继承自己一个接口, high point enter handler, high point exit handler, 然后我们实现它的两个方法,实现它的两个接口, 我们把这两个先删掉,这个代表我们的鼠标移入会触发这个方法,鼠标移出会触发它这个方法,那我们在这边上面两个公开的 鼠标 cursor enter 和一个 cursor exit, 当我们鼠标进入的时候,把我们的 cursor 鼠标 设置我们的鼠标为我们的进入的这张图片, 然后它的热点就是我们的 vector zero, 就是 左上角的零零点, 当我们鼠标移出的时候啊,我们就让它当啊,或者说设置我们的 cursor exit 都可以,我们再回到工程里面, 好,这里我们来设置一下,那当我们移出不设置的时候,那就是相当于就是空,那我们移入的时候,用这张正确的图片啊,这张正确的图片也设置设置成了 cursor, 然后我们的移出这张,如果不设置,那我们也设置为空,就是我们默认的鼠标,那我们需要设置的话就设置成这张, 设置成你需要的图片。好,我们再来运行,当我们的鼠标移入这张图片的时候,它会变成这个对号,当我们鼠标移出的时候,它会变成这个小飞机,一路移出一路移出,但就可以实现我们在不同的窗口设置不同的鼠标状态。

发光怎么做?发光有一种方式,我们在场景里面啊,这里面,因为我们现在没有用高亮插件,呃,没有外发光的效果,那我们也可以用 unity 内置的后期处理,让它发光起来。首先确保我们现在的 project setting 啊中的 graphics 是 我们的 urp 啊,那如果是内置旋转管线的话是另外的方法,那这里我们使用 urp 旋转管线,在场景里面右键 volume 设置一个 global volume, 就是 我们的啊,全局后期处理,然后我们来拗一个 啊,你有它扭的位置,你的大家自己看,它会在场景下面去扭, ok, 然后我们在这里添加一个 blue, 就是 我们的发光, 然后我们把我们的数值勾上啊,这个数值,这个数值发光数值,我们给它调成一,那现在是没有发光效果,因为我们的模型还没有发光,我们怎么让它发光?我们去修改这个模型身上的 emission 啊,让它的亮度亮起来。 好,然后身上的这个材质球给它设置过来。好,这样子,这样子就是一个简单的发光效果。 好。然后现在我们可以看到当我们发光的时候,我们的 game 图这里面没有发光的效果,但是我们的 scene 图看起来是有发光的,是因为我们的 camera 上面啊,我们的 rendering 这边我们的后期处理要勾上 post processing, 这个要勾上,勾上之后你看我们的 game 图,它就有一个发光的效果了。

这是 u n t 昨天正式公测上线的 ai 助手,你以为它只能帮你生成三 d 模型吗? low low low 啊!它可以当你的小助手,直接操纵编辑器,帮你改物体一条参数,处理工程文件,甚至还能根据项目分析电脑性能,自动改代码,一键生成场景等等等等啊!更关键的是,它是直接集成进 u n t 编辑器里的,可以 直接操作软件,接管你的开发流程啊。比如在官方的第一个演示中呢,它会直接分析你的性能瓶颈,然后告诉你哪里卡了,瓶颈在哪里,哪里需要重度优化。哎,关于这个功能啊,做过项目的小伙伴应该会, 有时候项目一卡观察问题都能查半天,尤其项目一大查卡顿, cpu 内存泄露能查一晚上,把人看红了啊!现在你直接可以把这个丢给 ai, 它可以帮你 自动开始分析,就有点像项目里突然多了一个技术管家啊。然后它还有个规划模式,你可以直接跟他说你要做一个什么样的游戏,然后他会开始帮你逐步拆解需要先做什么,第二步要做什么,哪些功能有关联,哪些系统有依赖。以前很多新人呢,想到一个游戏玩法,会一开始帮你拆解每一步 部的开发流程,可以从最根本上的开发逻辑帮到你啊。然后还有个演示,特别经典啊,指这个 ai 助手说,在车顶上加一把枪,边写一个脚本来瞄准并射击。然后啊, ai 就 开始自己改模型,一些脚本调场景啦。 最后这个赛车游戏就这么水滴滴的变成了射击游戏。以后如果你是做独立游戏的小开发者呢,这个功能或许可以帮你节约很多 试错的时间哎,直接把不同的玩法都套在你的模型资产上去试试,非常适合前期的方案阶段。并且除了可以改工程项目以外呢, u t a 还可以现在帮你把模型的位置也摆好了,比如在官方演示中,哎,直接跟 ai 输入一 下关键词,然后 ai 就 会自动帮你摆放好每个宝箱的位置,自动调整好位置,自动沿着地形法线去排列。其实以前很多场景搭建呢,是比较耗时间的嘛,对吧?尤其摆物件啊,摆位置的朝向密度这些全都是需要花时间去弄它。起码现在应用体 ai 呢,可以帮你做很多重复的工作啦。 但是除了这两个功能以外,它也是可以支持传统的一些 ai 生成内容,比如像 ai 生成贴图啊,生成模型,生成资源,这些大家应该都很熟悉,不过说实话,目前它的这个效果,嗯, 还是有点抽象的。不过生成这方面呢,还是有一个长处的,也就是 ai 生成动作,动画已经开始有点点能用啊。你 直接输入一个,做一个后空翻,做一个回旋踢,然后 ai 会自动给这个角色生成相应的动作,而且已经开始有点能用了,虽然还是有一点怪怪的 ai 味,但也不是前几年那种僵尸鬼畜的水平啊。这个东西如果发展下去了,以后小团队做独立游戏可能会 大量使用。然后啊,我们把以上这些东西全都连起来看啊,哎 up 发现优益体这次还挺聪明的,因为他终于不投铁了。之前优益体不是也搞过一些 ai muse 这种 ai 工具吗?很多人应该还有印象,当时那套东西出来的时候,说实话,体验还是挺一言难尽的,很像那种给雀的 gpu 套了层优益体的皮 呀,很多人用两天也就关掉了。结果这次 u 运体明显换思路了,推了一个新的 ai 助手出来,他不再选择自己去做一个全世界最强的游戏开发 ai, 他 选择了 ai 总控台这条方向。比如 官方现在搞了两个东西,一个是 m c p 模型上下文协议,一个是 ai 网关。 u 运体呢,现在可以允许外部 ai 大 模型接管整 编辑器了,比如现在已经可以支持接入的模型有克劳德杰姆奈、 coser、 微软 ai 助手等等等等,全部都接入到 unikey 的 开发编辑器里了。不过呢,哎,话又说回来, ai 现在最强的还是执行一些重 复麻烦的操作,真正决定游戏好不好玩的呢,很多时候还是创意节奏、世界观、关卡设计和美术风格啊。这些东西呢,目前还不是几具提 视词就能解决的问题,起码现在还不行啊。而且说到底呢, u n t 六和国内也没什么关系啊,国内现在有替代版的团建引擎啊,也是集成了不少 ai 功能。如果你也想试用 u n t 的 ai 新功能,但是又不知道怎么用,那我觉得你也可以试试国内的团结 ai 啊,像团结 ai 助手啊,团结 ai graph 功能基本上也都差不多,只是少了一些国外的 ai 大 模型。 所以呢,回到 u n t 六的这个 ai 功能,我觉得啊,它其实更多会影响到海外的 ai 大 模型,比如现在已经有很多国外开发者开始图 吐槽啊,大陆都在说,哎呀,游戏行业正在工业 ai 化啊,最近 steam 已经开始出现了很多异眼 ai, 尤其像什么例会啊,配音啊,文案宣传图,一眼都是 ai 生成的那种,味道特别明显。很多游戏点进去看呢,就像是限时免费的 ai 素材大乱炖啊。 特别是这次用一 t 六的 ai 功能上线以后呢,相信这种现象啊也会越来越明显,越来越多啊。 好啦, c 是 看快报行业大事,早知道关注我了解一下又发生了什么事情,我们下期视频再见!拜拜!

三分钟快速了解特效制作。大家好,经常有同学来问, unity 的 后处理没有生效,多数情况都是因为没有正确的添加后处理。 unity 有 三种渲染管件, building 三 d, 也就是我们平时说的默认渲染管件,还有通用渲染管件 urp 比 及高清渲染管线 h d r p。 不 同的渲染管线添加后处理的方式不太一样。先来看默认渲染管线,这个最古老的渲染管线正在逐渐被 unity 抛弃。国际版的 unity 已经宣布在 unity 六点五或者更高版本以后将要废弃街道渲染管线了。 国内的团建引擎目前还没有相关的消息。默认渲染管线它使用的是独立的后处理包。我们点一下 window, 这里有一个 package manager, 如果没有添加这个 post processing 的 话,需要单独的安装一下。打开一个场景,在场景里创建一个空物体, 空物体可以起个名字叫 post process。 创建好之后给它添加一个 post process version。 接着添加一个效果, 我们可以找一个比较明显的按脚使用它,并且修改一下它的强度,这时候发现没有任何效果,先选中这个相机。相机这里我们还需要添加一个 post process layer, 创建好之后呢,会发现它这里有个提示说没有任何 layer 被选中,那只要将这个 nothing 改成 everything, 我 们就能够看到效果了。下面还有抗锯齿效果,也可以选一下。但这时候我们会发现 sense 是 图还是没有后处理效果, 那是因为这里有一个后处理的开关,我们没有把它打开,打开之后就能看到了这个开关在 unit 的 三种渲染模板里面都有想添加其他的后处理效果,只要选中 post process, 然后点击添加效果,把这些效果添加进去。 添加好之后,只要将它起用,然后调一下参数,就能看到对应的后处理效果了。这是默认渲染管件添加后处理的方式。接下来我们看一下 u r p 和 h d r p 这两种渲染管件已经内置了后处理, 也就是说我们不需要再像默认渲染管线一样,在这个 package manager 里面单独添加一个后处理包。来看一下 urp 是 怎么添加的。在层级面板点击加号,这次不用像在默认渲染管线一样先创建一个空滤模块,而是直接有了一个 volume, 我 们点击后面这个 global volume, 然后点击 new, 创建一个预设文件。后面的步骤就跟刚才一样了,点击添加后处理效果,我们会发现这里的后处理效果比默认渲染管线更多。添加一个暗角,然后我们起用它, 发现没有效果,因为我们要在相机里面起用这个后处理效果。同样在 things 式图这里,我们也要勾选这个后处理。如果大家跟我一样使用的是 n b c 的, 那么我们可以在 settings 文件夹找到这个 u r p 的 这个高清 render, 点击添加 render future, 可以 把牛逼后处理添加进来,然后在层级面板右键点击创建一个牛逼后处理, 这样我们就可以获得了更多的后处理效果,例如大家很喜欢的一个黑白反闪效果。有一个比较重要的点需要提醒一下大家,就是很多同学使用的是中文版的 unity, 中文版的 unity 在 右键创建的时候,这个 version 它是翻译成音量的,结果就是从一开始就找不到 version, 所以 根本就没有办法去设置后处理。 这个在我理解他应该是翻译成体积,而不是翻译成音量,也不知道这个软件是怎么翻译的。最后看一下高清渲染管线 hdrp, 它的设置和 urp 很 像,也是创建一个 global war 刃,然后在这里点一下, 创建一个新的预设文件,创建好之后在上面添加一些后处理效果,我们可以找到这个按脚,然后起用它。 这时候我们会注意到我没有对相机做任何设置,这个后处理自动就生效了。这是因为 h d r p, 它的目标是高品质画质,所以后处理作为其核心渲染管线的一部分,默认是开启的,所以 相机就没有这个选项。而通用渲染管线 u r p, 它是允许开发者根据项目需求灵活地定制相机的开启或者关闭后处理,从而更好地控制性能的开销。好了,关于 unity 中如何添加后处理,我们这次就讲到这里了,如果大家觉得有帮助,欢迎点赞加关注,我们下期视频再见!

街霸皮肤太逼真了,其实是使用了法线贴图去模拟肌肉的变化。法线贴图几乎用在了游戏的各个地方,人物的皮肤、衣服、丝袜。作为一个老技术美术,咱今天研究一下法线贴图。早期的三 d 游戏,因为性能限制,模型全都是使用简单的几何体,使用法线贴图可 可以在简单的模型表面增加细节,如石头人物的皮肤褶皱。法线贴图由 r、 g、 b 三个通道组成,分别对应着三 d 坐标的 x、 y、 z, 从而实现二 d 贴图到三 d 法线的映色。每个模型都有法线,根据光线入射方向与法线计算出光线的反射方向,就能得到物体 的光照结果。我们只需要用法线贴图去调整物体表面的法线,就能改变光照结果,从而增加物体表面的细节。那么法线贴图是怎么来的?先用三 d max 线膜,再使用 zbrush 雕刻高膜,再使用高膜烘焙出法线贴图,最后再导入游戏引擎渲染,这样就能够将高膜的细节在低膜上还原了。有这个模型,高膜有四百万面,低膜只有五百面。将高膜烘焙出法线贴图用在低膜上,就能还原出高膜的细节。使用一张法线贴图加低膜,性能上远远要比直 直接使用一个高膜好很多。法线贴图还可以用在其他很多地方,比如我做的这个风格化水渲染水面,就是使用多轴法线贴图叠加来模拟水波纹的效果。雪地、沙漠的效果都用到了法线贴图。如果你想学技术美术,可以看一下我本人录制的免费五十四节技术美术教程。最后留一个问题啊,为什么二次元游戏人物不用法线贴图?

嗯,好的,大家好,今天是啊,我是那个神奇,今天是这个游戏这个研究的第二天啊, 我们按照昨天的这个计划,把这个 ctrl 生成的这个网页 h t m l 是 这样拼的吧?这种这样一个小游戏,想办法给它转化到 unit 引擎里。当然我一开始有一个失误啊,就是我下载的是这个 国内的团结引擎,他好像是有些弊端,这个我们之后再说。呃,我们先来看一下把通过代码的方式导入这个游戏的一些现在的一个效果,跟之前的对比啊,我们看到他现在进入这个游戏了, 呃,来我们看一下,他确实是画面上有一些提升,然后我个人感觉他对于这个物理环境的处理也是更加严谨一些,但是并没有这个质的飞跃。 呃,当然我之前用 cursor 通过这个代码的方式,呃对于这个光和这个环境进行一些渲染,我们可以看到这个地板,其实我觉得这个地板和这个墙面它的整体的这样一个 视觉效果已经达到了这个两千年到这个两千两千年前后吧,当时一些游戏作品的这个水平。 对,呃,最简单来讲就是这些素材,他因为他都是呃依赖于代编写代码生成的,并不是有什么模型呀,这些呃都没有导入。 呃,现在我们发现有很多问题,就是通过那个网页版的小游小游戏导入到团建引擎中,发现他首先他这个 u i 界面非常的模糊, 感觉并不是那么好用,其次他还有好多的状态栏都消失了。 还有就是他这个英文的选项问题,这些因为都是用 qq 的 一个代码来实现的,他每次修改的话成本会非常的大, 因为他主要的方式是这样的,呃,我在 qq 上边写代码,因为我不会写代码吗?然后再通过覆盖导入方式把它加入到这个 引擎里,其实这中间是有一个信息差的,就是我们在逻辑上讲,我们是先假如说把他们理解为两个人,一个人是在我们这边生成游戏啊,就在我们这个引擎里制作游戏,另一个人是给他传输信息,传输代码的中间有一个中转的过程, 就是传输代码的人没有办法确切的知道现在这个游戏是什么样子,呃,制作游戏的这个人,他没有自主的这个意识去跟这个传制作编写代码的人交流,所以我们人类就是我吧,在这中间起到了一个中转协调的作用。 但是我难免会有一些信息,因为我也不懂代码,我也不懂制作游戏,我有些信息他会衔接的不到位啊,所以说这就大大的增加我们的工作量。比如说我们一开始,呃,一开始我们 就是我们每次他编辑完一一长串代码,我们导入覆盖进来,我们会发现有新的问题,呃,新的产生的问题,当然他现在的这个效果比之前强多了 啊,新的产生的问题,还有就是这是不可控,而且成本非常大,所以我觉得,呃,我原本想的方向是导入一下模型,看一下他最终能实现什么效果。 但是我觉得现在以我的这种水平和定位的话,我应该先去研究一个路径,因为最近我搜索呃在跟网上解锁,包括一看一些惊艳铁呀,发现它其实是可以有一个实现,用那个科尔索接入的 unit 引擎之中,它是相当于一个直接操作,就是他帮我们干活的这样的一个效果。 我觉得这个可能比较适合我,但是我还没有尝试过。中间涉及到一些插件呀,还涉及到。呃,反正很多调试的问题,这可能需要一定时间研究,我也不知道能不能成功。我觉得接下来的方向我们应该是主要是往这个方向走啊, 往这个方向走的话更适合我现在的这个情况,就研究情况,也更能探索现在这个技术,就这个 ai 技术发展到什么程度的这样一个。 呃,情况好,那我们就先不导入模型,先往这个方向走,这是第二天的我的一些感悟吧,我觉得有必要把它记录下来, 就是不断的去探索这个过程。好吧,呃,那就先这样啊,谢谢大家。


同学们好,今天呢我们来啊,运用我们这个 unit 三 d 的 动画系统来实现 转股股门的开合关,主要通过我们的 按键 a 键开鼓门,按 d 键的时候关鼓门,同时呢按鼠标左键开鼓门,按鼠标右键来关鼓门这样一种效果。 首先呢我们先导入我们的资源, 然后我们把这个转股呢这个 perfect 日式体把它拖到场景之中,然后我们抽象 把这个角度呢旋转一下, 调整一下视角,把那个 buff, 我 们呢朝着对着我们自己按鼠标右键和这个 w, a, d 键啊这些,然后放在一个合适的位置,右键右键 make macro, 然后选择 a line with view, 这样的好处呢就是能够使这个右边这个小视图啊,跟我们见到的是一样的,这个小视图呢后面就是 game 的 视图,这样我们在播放的时候就能够看到。 为了实现啊这样一个效果呢,首先我们需要一些动画,这个动画呢我们所希望的 a meter 一 进来之后,然后呢首先是静态的转股, 然后呢当我们按 a 键或是按鼠标左键的时候啊,这个骨门呢就被打开啊,就是被打开, 当我们再按 d 键或者是右击鼠标的时候呢,骨门呢就关闭啊,就是实现这样一个效果。那首先呢我们 就要制作这个骨门开关的动画,首先我们要观察这个转骨的模型的结构啊,实际上呢就是这个我给大家已经找好了,然后为了方便使用呢,我们把 取名为度啊,是整个的这个包括他的很多子物体,大家千万不要选,很多同学就选到这里面小的物体去了,他就会差一些东西啊,比方说杆杆没有了,什么也没有了,对吧?大家一定要把这个折叠起来,这个整个这个是骨嘛? 啊,所以我们制作动画的话呢,也要以它为基础来制作动画,那要实现这样的动画,这样的这个可控制的动画效果呢, 我们就要使用这个 unity 三 d 的 animation 啊, windows animation animation, 好, 打开这样一个啊 animation 的 编辑框,我们把它按住 这个上面,把它拖到这个一起,这样方便我们来工作。好,我们点一下,我们这个时候呢,进来之后,当我们选择了一个物体的时候,比方说我们选择了这个转股的时候 啊,场景中物体的时候,它这个地方就会出现 create, 如果没有选它,没有这个物体的话,它就没有,所以我们选一个物体,它会出现是 create, 那 我们就 create create 之后呢给它取一个名字啊,我们可以,我们可以往上面走一个目录,是吧?比方在 s s 下是吧?我们比方说我们在这里可以给它建一个 animation 这样文件夹,然后呢把它放在这里面, 完了文件夹这个里面,然后这个名字呢?可以啊,取一个啊名字。首先呢我们制作这个 open 的 动画啊,就是骨门打开的动画,所以我们取的取名为 open, 然后按保存, 我按保存之后呢,实际上我们会发现在我们的这个 animation 里,它实际上就会自动创建啊, java 啊,这一个的 controller 这样一个文件,它的后缀是 controller, 然后呢和一个 open, 这个 open 呢?我们还没有编辑,只是新建了啊,我们现在来编辑这个 open 啊,编辑这个 open, 这个 open 呢,就是骨门打开的时候,那首先呢,我们要选择到骨门,这点非常重要,很多同学呢就 只选了这个 java 啊,这个不行,我们一定要从它的这个里面点击 at property, 然后在这个不能选这个传输 form, 这个传输 form 是 我们, 对吧?这个根物体的 java would 的, 我们要选择这个骨门,是吧?我刚才找了,所以在 转股零四九的下面,而这是美工做的啊,美工做了之后他就是这样的,所以我们要选择这个下面的他的 transform, 没看到没,他马上有个 transform, 这个才是这个股门的 transform, 所以 我们要点他, 点他这里呢有个 position, 我 们是对他的啊,位移,左右的位移这种啊位置的动画,所以我们点在在他的右侧点这个加号, 给他加号之后,我们可以看到这里看到多 position, 就是 做了这个多的 position 的 动画啊,它就包括 x, y, x, z 啊,那在这种情况下呢, 并且它会默认啊,在它的这个第零帧和第六十帧啊的地方就会这种,这种啊,这种就是关键帧啊,关键帧,我们这种制作这种动画的时候呢,就是啊,首先设定这个粗实位置, 是吧?设定就是我们的结束的位置,然后这个系统呢,会自动啊,不见中间的这些洞啊,这个就是, 那么我们骨门要打开的话,那么刚开始的话,它就是闭合的,就是现在这个状态,对吧?啊,然后到了六十针的时候呢,我们可以通过这个地方拖动啊,拖动这个,嗯, 针这个地方啊,这根线啊,针的这个线拖到六十啊,这个也可以啊。另外还有一个方法呢,比较简洁,就是在这里,在这个地方把它输入六十啊,这个地方把它输入六十啊,回一下车,然后直接可以啊,都可以,这个就比较准确。好,然后的话我们就说 是吧?打开骨门是什么情况,对吧?打开骨门的时候,对吧?你看现在就选到整个的骨门了,骨门刚开始就是这样关闭的,那么到了这里的时候是吧?到了六十针的时候,我们选择六十针的时候,那什么他应该是开开的,是吧?开开的那时候我们的移动他就是他的,对吧? 结束的位置是吧?截肢的位置,对吧?然后那就是这个样子,但是呢我们如果这样选择的话呢,它并不能生成动画,我们要生成动画了会怎么样? 我们按住这个录制键,这个录制键红色的,这个按钮按住之后,你看整个地方就变红了,这个时候它就表示, 哎,我已经开始录制动画了,录制动画了是吧?他只要我只要录制这两个关键针就可以了,第一针,哎,就是这个针就不管他,而且在六十的这个地方,六十的这个地方,那怎么样呢?我们要这个转鼓往左移动,这个开开的这个状态,对吧?这个就是我们的这个 结束帧,好,这个就是其实其实帧都有,其实帧有了,结束帧有了,好,我们关闭这个啊录制按钮,这样这个动画就做好了,我们可以预览一下,按这个播放按钮 看,没有,他说骨门从这个地方打开了,这样一个这个动画这样就做成了,那么我们在这个 animation 里面,对吧?你看这个动画这样就他已经啊就做好了,你这样双击的话啊,你看没有就可以进到这里面来,这个是我们这个 这样一个动画好,我们还要建一个,是吧?关闭股本的动画,那关闭股本的动画呢?我们可以这个时候建的话呢,就是可以从这里点击一下啊,我们还是要点击到这个这个度,是吧?这个度这个度之后,然后点击 create, 对 吧?然后我们 在这里啊,这个 close, 对 吧?然后点了这个 close 之后,然后的话,对吧?那我们要增加 property, 我 们要找到还是要这里千万不要选这个 transform, 一定要选择我们真正的转股 转股,这个转股转股上面马上的第一个 transform, 这个 transform 啊,然后点击它的 position, 方法一样的,那现在它有了起始针啊,还有末尾针,它已经关键针已经有了,那么我们这个时候是什么样呢?对吧?我们是, 对吧?我们这个关谷门是怎么关啊?是吧?我们第一针应该是吧?是在外面,第二针是吧?末尾针是在这个地方,所以这个第尾针最后六十针的地方不用改。我们应该改什么?我们改成这个第零针的时候,第零针的时候我们还是要选择这个剁,是吧?然后我们把它改到第零针, 但是这样是不是还是不行,对不对?这个时候我们还是那个话,我们一定要按录制,对吧?然后把它移到最左边,然后再移过来,就是这样一个过程,这个过程所以大家一定要记住就一条,如果我要做动画,对吧?我必须要 按录制啊,在哪一帧录制了,就是哪一个地方的关键帧的动画,好,这样就 好取消,然后我们再看一下,你看这里又多了个 close 动画,我们双击摄像,它就会打开这个动画,是吧?我们除了这个动画之外呢,我们还有一个静止动画 idol 动画, 我们大概意思是什么呢?就是啊,我们首先比如一进动画之后先进入静止状态,进入静止状态的时候按一个按一个键,比如按 a 键,然后呢进入这个 开门动画,然后,对吧?按一下这个 d 键呢?进入这个关门动画是这样子,所以我们还需要一个建立一个, 建立一个 idol 动画,就是一个静止的动画啊,静止的动画怎么建立呢?像方法是一样的是吧?我们还是选择这个 do 是 吧?我们这 create 是 吧? create 之后呢,我们这个 啊可以选一个名字,我们一般呢就是像这种动画我们就会有 i、 d, l、 e 啊,是通用的名字, 然后我们继续是吧?我们选选什么?不要大家不要觉得有的时候就你选在这里或者选在这里认为是剁了,这是不对的,在这里的时候并不是我们一定要看这里,这里是他才是,所以我们就要一定要从这里来选,很多同学都会犯这样的错误啊,我们就要 transform 下面的 position 好, 然后我们是静止动画,是不是从头到尾都是这样的,所以它就是这就是会是一个动画 啊,所以的话,那我们这个动画就这样结束了,那我们可以看一下这里面是不是看到有什么有这个 open 动画、 close 动画和 idol 动画、 m 动画,我们,对吧?那 你可以,你要刚开始不能播放你这样的,别的地方就播放不了,是吧?对,按了有的地方就播放不了,那你在有的转转股上它就能播放,对吧?我们看一下这个啊,看一下这个,这个是 open 啊,这个是 open, 我 们不看 open, 我 们看 idol, idol 这个动画我们看一下看,没有,它就是不动的动画,对吧?不动就是这就是个动画,但是它不动。好,这样的话我们就把我们的这个 都三个动画准备好了,还加上一个他自创的这个啊,这个专门物的这个控制器啊,他的这个或者名词控制器,并且呢他还会自动的把我们这个 animator 啊 啊自动的挂载,就在我们在键的那个时候,我们先按照 window 按键这个 animation 的 时候,你一键,他就会在这里给这个这个物体给他附加一个 animator 啊,所以他就这样。那么, 然后我们现在是啊,另外一个呢,就是我们怎么样把动画啊,来这个实践,把这几个动画串起来,那我们就要通过这个 双击它,双击它之后我们可以打开这个 animator 啊这个编辑的界面,这个呢就是把已有的动画啊的逻辑在这里面把它立出来。 好,我们首先呢一进来之后,是吧?我们一进来动画里面刚开始应该播放什么?我们也说了,我们应该播放这个 id 禁止动画在这里呢。不是的,一般第一个键呢,它就会自动连这个线,所以我们可以也可以先键 id, 它会自动连接,如果像现在这样已经键了也没关系,这个是可以变化的。 右啊右击 id 这个动画,这个线,按一下,这个线就来了, 所以他一进来的时候就首先呢就播放这个动画,这个动画实际上是不动的,一进来之后相当于说就转股,就是静止的,实际上是进进来了,这样进到这一个动画里面。 好,然后我们现在是怎么样呢?我们怎么样控制啊?控制我们的这个这个这个动画,动画 这里呢,就是我们的是滑鼠,左右移动就能够啊,移动他, 然后我们在这里的话呢,我们希望他啊,哎,躲之后呢,我们要按一个键到到 open, 我 们这样我们调一下位置,这个位置按住可以拖动,根据习惯哈,我一般喜欢 open 放上面, ctrl 放下面右击,然后他就会一个 may transition 啊,就是 建立一个这个线,这个线看到没有?这个线现在你呢?除了 id 之后,你要到哪里去?我要到 open 里去。好,那我们大家不知道这个是什么意思?这个就是这个动画,这个线就先到 open 里去,如果我们可以看一下,像 这个里面,就是啊,一进来之后啊,我们看一下,我们把这个 animator 呢,把它拨动一下啊,放在一个合适的位置,这样子呢,更方便我们的观察。 把这个滑鼠放到合适的大小,是吧?就这样子一个,那如果没有这个处理器呢,对吧?没有这个处理器,我们按 d e l 键删除,你看我们播放的时候它会怎么样的啊? 他就会一直这样,一进来之后,一进到这个动画,他就会在爱豆里,他一直会在爱豆里面啊,所以他就一直不动啊,然后当我们啊 建立了这个线之后啊,然后呢,这个时候他一进来爱豆,爱豆这有个有一个线可以到 open, 所以 他就会这样 open, 然后呢一直在 open 里面啊,就在 open 里面,所以你会看到他一直播放这个 open 这样一个动画, 这样一个动画,那如果我们比方啊,再建一个 make transition 到 close, 再建一个 make transition 到,那我们先看看这个的效果吧, 看这个效果,比方说在建了这个之后,它就会怎么样进来?无条件的进来,先到 idol, 再到 open, open 之后呢,再到 close, 然后就不断的播放,因为它在这个地方就卡住了,一直播放这个 close 的 动画, 那我们也可以再建一个那个纯粹式 idon 过来,那这样就会怎么样?先 idon, open, close, open, open, 就 会不断出现这个循环 啊,这个动画呢,就会出现这样一个效果啊,不断的开和关,这个就会自动的运行。那我们现在的要求啊,是什么呢?我们现在要求说按 a 键或者是鼠标左键,它能够这个 能够开关骨门,就让受我们的控制,受我们输入的控制,那怎么样能够实现这样一个效果呢? 这个呢就要我们要建立,就说在这个线这个地方,我们要啊增加一个条件或者是一个变量来控制它啊,控制像一个开关一样的啊, 一个开关要么是处或者是 force 是 吧?一个开或者关相当于处和 force 是 吧?哎,那就是说一个布尔变量来控制它,比方说是处的时候它就过来,对吧?哎,这样的话,而 force 就 不能过来,那这样的话就起到一个开关的作用, 比方说按下 a 键之后,这个地方就变成处了,就变到 open 这里面来了,那这样的话就可以过来,就是这样一个意思,我们在这地方是一个开关,好,是一个开关,怎么样设置这个这个 bar 的 这个开关呢?我们在这里点击一下 parameters 啊,这里面 parameters 呢?在这个按下箭头,在这里呢,可以键一些局部的变量,这些变量呢,就是在这个 animator 里面的 局部的变量,我们需要去刚才说的一个波尔,波尔的变量,是吧?初或者 force 的 变量是吧?好,我们给它取个名字,取个名字的时候一定要注意,像这种啊,像这种中间有空格的一定不要有啊,不然的话很容易错。那比方说 is, 它是个变量嘛? is open, 那就是说我知道一个括号变量,它的名字叫 is open, 它现在默认状态呢,是 false 状态,对吧?好,那我们这个时候接了这个变量之后呢,我们要用它有没有那个变量放在这里,怎么放到这里来呢?点击一下它,它在这里 condition 这个位置, 肯定这个位置,就是说条件啊,这条件条件什么样的呢?我们点击右侧,它会自动,它这里有一个变量,只有一个变量,它会自动显这个变量。 is open, 它这个是可以选的哈,这个呢,它是因为只有这一个变量,所以它就只有这个变量,而这个住是或 false, 它是可以选的,就是说 我现在是说如果是 true, 它就 open, 那 么我就是说 is open, 就是 true 的 时候这样子,所以说它的意思是说 当 is open 这个布尔变量是处的时候,这个我们这个开关是开,开的就是过去的,就这么个条件,就说满足这个条件他就往前面走 啊,往前面走,好,那我们来,我们刚才说,那现在我们去把条件设置好了,那条件设置好了之后,那我怎么样能够达到?比方说按下一下,是吧? 这个鼠标左键,或者是按一下这个键盘的 a 键,是吧?它能够实现这个变量的变化呢?这个我们就需要用脚本来实现啊,这就是我们要响应键盘或者鼠标事件啊,所以我们要编啊,一台倒码代码, 那我们在这里编个代码,我们在这里呢先啊,要养成好习惯,我先建一个文件夹, scripts 是 吧? scripts 念夹,然后呢在这里 双击,然后建一个啊,这个 c 下的脚板啊,然后 open nose 这样一个脚板。好,然后我们这里呢要文件名,一定要保证这个文件名跟我的这个类名要保持一致,不然的话就会出错误啊,还有就是经常不要啊,莫名其妙的加入了空格,不然的话很难发现。 那我们这个时候啊,我们在,我们在这里的话,是吧?我们首先要控制我们刚才说的这个变量是什么样的?这个变量实际上属于这个这个 animator 的 这个变量 is open, 所以 的话我们先要获得我们这个 animator 的 控制权,怎么样获得声明,一个变量 public 啊,然后是一个什么 animator 啊?微 mater many meter 啊,好比方说来,我们取个名字叫 my, 这样定义了这样一个变量啊,这样变量,然后呢? 我们我们呢有两种方法获得这个变量,是吧?一个是拖动的办法,我们会在比如我们把这个脚本,比如说挂载,挂载之后通过拖动的办法, 另外还有个方法,是吧?通过 get component 的 方法也可以,我们到时候采用这个拖动的方法,那我们就先这个地方就不写了啊,我们就把这个地方写这个 update, update 的 意思是对吧? 每一针的时候他会运行,是吧?那这个时候是什么样子呢?就是说他每针都要去判断,判断什么?判断我是否啊?我们先来,嗯,去做这个按这个 a 键的好不好? a 键就说是否按到键盘上的 a 键啊,所以需要判断 e o 啊,把这个画打完, e o。 什么? 我们对于输入来说啊,对于旧的这个啊,动画系,这个动画控制系统啊,这个输入系统里面呢? import manager 来控制的啊,我们现在就用这个比较简洁, input 点儿啊,点 get 啊, t get 到啊,然后呢?它需要输入参数,那就是你要按入什么键啊?一 code 点啊,这里会有,我们说是 a 键是吧? a 键我们可以选,也可以直接按 a 键,如果满足这个条件,如果按了 a 键啊,如果按了 a 键,它怎么样呢?我们回车这里打一对括号,在中间写入这个, 那么好,那我们说如果,如果按着 a 键就怎么样,我们就要设置这个 麦,就是这个 animator 里面的,是吧? animator 里面的它的什么?它那个值,那值怎么设呢?它有个 set, set bo 的 方法,因为我们是 bo 变量,是吧?好过号这里, 然后说,然后这个名字,大家看一下这个名字是什么?很多同学就在这里犯错误,就这个名字,这个名字要一模一样,大小写必须一样,并且不能有空格。今天有很多同学啊,这里有一个空格,然后又是小写的, 然后又在这里是又是大写,那就不行,所以我们来考一下粘贴,这样万无一失,对吧?然后他的值呢?是啊,比方说按了一下之后他就是处,然后我们再看一下这个意思,对啊,这个意思是什么意思呢?就是如果按了 a 键之后,他 就这个值呢?就变成了处,变成了处。嗯,好,我们看一下有什么问题啊?这就少了一个框号啊,框号是一对一对出现的,我刚才的时候可能删的时候不小心多删了一个,他一对一对的,你看一对一对,一对 一对啊,这样子,如果是出现那样的问题的时候,你就查找一下原因, ok, 第二的话呢,就可以把这个值在调试的方便呢,我们在这里输入一个打打印语句啊,就是表示说比方说 按下了这个 a 线,因为有的时候如果我们这个数值写错的时候打印出来,它这个变了,但是我们又不知道它这句执行了没有,比方说是这句错了还是哪一句错了,这调试的时候就是这样子,那就是说如果我这个 这个比方说按了这个 a 键能够响应这件事情的话,它至少它可能别的地方可能不见得对,比方这个地方没设对或什么,但它至少会打印这个这个按下来 a 键这几个字,那这样我就知道哦,程序进到里面了,这就是调试的一种方法。 那我们这个时候我们就可以调试一下啊,播放, 播放之后呢,要在这个 game 窗口按一下啊,然后我们按一下 a 键, 等一下,我们看一下考试了啊,看一下,现在不行。为什么呢?是因为我们没有挂在这个脚本。好,我们现在呢把这个脚本 挂在到我们的这个物体上,并且呢我们在这里还有 my enemy 没有赋值,但是 my enemy 赋值在哪里呢?啊?值呢?不是 啊,不是那个,这里呢?很容易错的地方就是这个,这个呢,他的扩展名是 ctrl 了,他这里是要的是这个 make, 说白了就是这个,就这个纸。那可以这样直接拖啊,拖过来,把这个地方也可以从这拖这个地方拖过来。这个地方拖过来是比较常见,从屋顶中拖,它会自动获得自动去 过去它的 html, 所以, 所以你看到它前面写的是专门的,但是它后面是 html, 它能够自动检测到这个 html, 所以 是这样的,所以它能行啊,我们这个再运行, 我们再运行的时候,对吧?看到没有?那刚开始的时候,一进来就会在 id 这个地方不断的播放这个 id 的 动画。 那为什么不到 open 来呢?是因为这个时候的我们的这个,呃,这个值啊,这个 is open, 这个是 force, 他 要求是处才能过去,所以他过不去。那当我们按下 a 键,按下 a 键之后会什么呀? 按下 a 键,你看股门就开了。为什么按下 a 门 a 键股门就开了?因为按了 a 键之后,我们的脚本,我们的脚本就死。这个值 啊,把它设置为处了,他一旦变成处之后,他怎么样?哎,他就过来了,然后就不断的循环,不断的循环, 对吧?所以说我们按了 a 键可以进入 open, 但是现在的问题是,进了 open 之后,然后又直接又 close 了,是吧?那我们怎么样控制他?我们还得在这地方加个开关,那加关什么开关呢?我们已经有这个变量,我们继续用这个变量来, 还有一个值没有用,是吧? is open。 我 们这是 force 的 时候,对吧?它处的时候到这来,嗯,这是处,处之后,对吧?然后这个地方 force 才过来,它是处的时候它就过不来,所以你按一下之后它就会打开啊,然后我们再 用一个,比方说有个按 d 键来控制,使这个值变成 force, 那 它是不是就可以来关了, 对不对?所以我们在这里设置了是 force, 当 force 的 时候他过来啊,并且我们在这个代码里同样的写一下,那就写,是吧?如果啊,别的地方学校都可以抄,是吧?我们可以抄,可以复制一下, 读一下,因为很接近啊。那这里就是我控制如果按 d 的 时候,他怎么样呢?这个值应该什么? force, 是 吧?那我们是这个时候按下了 d 键,有的同学在这里的时候,这里写成 a, 这里还写成 a, 是 不对的,是吧?你不能同一个 a 又把它设为 处,又设成 force 嘛,对吧?你说 a 设成处, d 设成 force, 那 就是说如果按 d 的 时候,它就设置成 force 了,对吧?那我们再来看,我们再来思考一下啊,比方说我按了一下,比方说一进来啊,我现在先不运行,一进来就是 idol 开头之后,这个时候呢,是 force 的, 对吧?然后呢?过不过来呢?过不来,按了一下 a 键,变成处之后就得 open, 就 在 open 这一直一直这个播放这个动画,是吧?为什么不下来?因为这个时候是处处的话,对吧?下面要下来怎么办?它就变成 force, 是 吧?那我们就按, 对吧?按 d, 按 d 的 时候,它就是变成 force 了, force 就 过来,过来之后,然后这里,这里没有开关,所以直接过来,所以它就会形成这样子,那我们来观察一下 运行,咱们点击一下这个 game, 这个地方啊,刚开始在这个地方堵住了,是吧?这个这个啊,我们按 a, 按 a, 按 a 之后就变成处了,处了就过来了,看到没有就开股卖好,然后这个地方就这地方又堵住了,为啥?因为这个是处,它的 force 才能下来,所以说我们就按,再按 d, 按 d 的 话怎么样就 force 就 下来 啊,看到没有?这样子就实现了一个,那为什么又不动了,对吧?那我们其他的同时,我们也可以看一下这左边的这个 animate, 下面一直 open, 当我们注意的时候,你看我们按的时候八 a 的 时候,这个会发生变化,它会打勾啊,五好按 a, 看到没有?它就变成出了,看到没有,哎,这个动画也过来了,对吧? 啊? d, 对 吧?你看又变成 force 了,你看这个就实现了我们做细胞的效果, 对吧?那我们再看一遍, a 开股门,是吧?然后呢? d 关股门啊,那现在可能同学又发现问题,为什么它开股门一直开一直开啊,对吧?那我们就点击一下这个 open 动画,它这里有个选项, loop times, 就是 loop time, 它就是说我一直循环,所以我不循环的话,我只要把它勾去掉,勾选 close, 这样也一样啊,好,然后我们再来运行,我们再来观察一下,对吧?好,我们按一下 a 键, 好,这个地方就变成处,就过来了,开门了,我们按一下 d 键,好,它就下来了,关门了啊,又到这个 id 地方去了,按 a 键 开关,按 d 键,慢慢就这样子,这样就实现了我们的目标,通过按 a 键或者是 d 键控制我们的开关,我们下面还说了,是吧,我们说我们控制通过这个 按鼠标左键来控制呢,实际上方法是一样的啊,方法是一样的,那我们来写一下 ev, 同样是 ev, ev 什么呢? input 点,这个时候呢,它是 get mouse button down 啊,就是按下鼠标, 按下鼠标,这里有个参数,这个是一个方法,这个方法参数是什么呢?就是零,一和二啊,大家记住,零就是左键,我按一就是右键,二就是中键,那我们按一下零,就是说我按照鼠标左键的时候干嘛?假如说啊,我按照鼠标左键的时候 啊,我一样的啊,我也是这个,比方说把这个抄下来,我也是让他变成一个开股门,但是呢,我按一下了啊,按下鼠标 鼠标左键啊,这个是这个 debug 是 不是必须的啊?就是我们调试的方便,有的时候发现错误了,不知道错误在哪里,这样可以方便啊,那我们先保存一下,调试一下,我们看我们现在呢不按键盘了,我们按鼠标 在这里,是吧?这个是个 force 啊,我们在这里,我们按一下鼠标左键,看到没有,它就变成处了就可以,对吧?就按鼠标左键就变成处,那我们 好,那我们把另外一个按鼠标右键来复制一下,对吧?这个大家已经都可能有点感觉了,是吧?好,然后这个是右键是吧, 对吧?右键是一是吧?中间键是二嘛?那这个地方要改成什么是吧? force 是 吧? f c force 有 时候也会写错,是吧?那鼠标右键输入法好,再保存一下, 那我们在这里运行一下,好,按鼠标左键开鼓门,按鼠标右键关鼓门,按 a 键 开鼓门,按 d 键关鼓门,那这样的话我们就可以通过外面的输入键盘的,是吧来输入和鼠标的输入来控制鼓门开关啊,那我们再把这个思路最后理一遍啊,就是首先呢, 我们啊就是要建立这个动画,是吧?这个关谷门,开谷门和 id 的 动画,这分别就是这三个动画。然后呢,这个 anim, 这个呢,就是一个,呃,这个控制器,这控制器呢,双击之后就打开这样一个 啊,这样一个,这个 animator 的 这个编辑框能够控制这几个动画之间逻辑的播放等等这些,是吧?首先呢,一进来是, 并且关键是要建立这个 is open 这个啊布尔变量,这个变量呢是挂在这个上面的是吧?挂这上面,这里边设置条件,设置条件于 is open 的 时候, is open 是 出的时候,它就是进过来,刚一进来是默认是 false, 看到没默认是 false, 然后按了一下之后,对吧?然后就是 open 啊, open 之后呢,对吧?按了一下啊, open open 之后呢,它在这地方又不会动了,为啥?因为这儿 force 才能过来,对吧?所以它这个时候呢,这个地方又有个条件,它是 force 的 时候再过来,所以我们要怎么样啊?所以,哎, 然后我们这个时候,比方说按住,对吧?右键,这时候它就 force force 过来之后,它这个地方这个地方没有设置条件,所以它会直接 到了 close 之后直接又到 id, 所以 再这样这样呢啊,就实现了我们这样开关,我们同时呢设置了两个方法,是吧?这叫两个,就是一种呢,是按鼠标,鼠标的方法,它的主法就是 input get key 到 啊, key code 点 a 或者是 d, 然后设置的时候呢,还有一个设置的方法,这个是容易啊,容易错误的,是吧?就是设置这个 animator 里面的 这个 is open 的 值,这个名字要跟这个这个地方的名字一模一样,不能有空格,大小写啊,都要完全注意啊,不要有空格啊,大小写一定要完全是。这个地方呢是用鼠标控制的方法,是吧?鼠标是吧,左键右键写的就是一样的, 从而这样呢就实现了我们这个我们在这个地方的话啊,这个这个地方的话,是吧? 就有这个 animator, 是 吧?我们这里复制的办法,那这里呢其实还有一个办法,就是因为它是挂了, animator 本身就有,所以我们也可以不挂,在不用拖的办法来挂的是什么?我们在这里 my any 等于 get component, 大家记不记得那个是吧? animator 这样也是可以的,这样的话,就是啊,这样的话就是什么呢?就是说我这里可以不用脱载了,就这个地方,如果我没有赋值啊,这个地方,比方说我假说是 no, 如果是没有这一句的话是不行的,比方说我没有这一句, 我把它注置掉,我保存一下,那,那你看我这个,它这个地方它就会显示错误,说显示怎么错误呢?我们看一下 看到没有,它就是说这个变量,就这个变量啊,这个 my any, 它这个变量没有赋值,没有被被设定,是吧?它就会出现这样一个错误,那如果出现这样的错误了,就是这里没设定 好,那我是用手读的,方法是可以,我刚才是用代码,代码的话 get command 呢,因为是它自己上,所以我们取消这个趋势的话,那就是说,哎,它这个直接去在 start 一 开始的一挂的 一这个脚本一运行之后,它首先去找了个 animator, 找到之后,哎,就给它赋值了,那这样的话就不用我们去拖了。那我们在这种情况下呢,我们来再运行,看是不是写的, 看没有,一运行之后它自动就 get 了这个 animator, 对 吧?这其他的是一模一样的,是吧?是吧?左键是吧?右键按 a a 键,看到 a a 键,按 d 键,看没有,哎,这样就实现了。 好啊,这节课呢,我们就介绍到这里,好,谢谢大家。