粉丝1126获赞3214


大家好,我是椒盐,这里是丛林开发游戏系列的第三集,上一集我们将我们的角色资源加入到游戏项目中,这一集我们将为我们的角色添加动画。首先打开我们的项目,然后将我们画好的角色真动画图片倒入到项目中。 将资源图片放入到映日文件家中, 然后在项目中增加 mv 的, 然后在右侧属性面板中单击怀孕属性,点击新建 sdy。 在下方我们可以看到动画的编辑面板。在这里我们添加三个动作,待机、跑步和攻击。 然后在左侧资源文件夹中找到刚才我们导入到项目中对应的资源。 我们的图片是一些发力,所以在左上角的设置中写上对应的航母灯, 这个为十一针。 最后为我们的 nmates right 节点。在右侧属性面板选择默认的动画状态, 这里我们选择的是冬季,然后将播放的父选框选中,这样我们的角色就更起来。 这里就是我们这期教程所有内容,感谢大家的收看。下一集我们将为我们的角色搭建一个简易的场景,方便我们日后角色交互使用。 如果喜欢此教学,请一键三名,如有任何问题,请评论区留言。

hello, thank you for enrolling in this course, i'm very happy to have you here the footage that you're seeing right now on your screen is the game that you're going to be making during this course i've intentionally set up the lessons, so that each of them are below a half hour in duration with most of them being under fifteen minutes, so don't be dismayed at the large number of lessons here if you even complete just one lesson a day you will have a complete game before you know it once again my name is firebelly i've published several games on steam and itch io, i've linked my steam io and ludemdair gamepage as resources to this introduction, so you can check those out if you want to again, i'm very happy to have you here and without further ado, let's get right into the course。

大家好,今天我们来创建一个简单的技能释放状态栏,主要通过键盘数字键和鼠标点击操作实现。 下面开始新建一个测试场景,命名为 test scene。 增加一个 label, ctrl 加 d 复制 label, 拖拽到屏幕中央, 修改对齐为居中对齐,字号大一些,方便观看。另一个 label 也修改一下,因为没有做技能特效。这两个 label 用来查看操作效果。创建一个脚本, 删除默认方法,给 label 改名,分别为 skill label 和 key label。 按住 ctrl 拖拽到脚本。新增一个参数, skills, 保存已设置的技能 id, 分别为 slu 一、 skill 二和 skill 三。新增 band skill 方法,用来绑定技能。新增 use skill 方法,用来使用技能, ctrl 加 s 保存。新建一个节点,类型为 panel, 命名为 slot。 切换到二 d 式图,设置最小尺寸为六十四乘六十四。 新建一个 text button 节点,用于鼠标操作。 修改对齐为整个矩形。新增一个脚本,删除默认方法,创建一个参数 status, 类型为 resource。 创建一个 label 节点,对齐方式为整个矩形。修改文字大小, 看看二十四,再看看三十二,不错,修改文字居中对齐要用到一点零零,这种格式有点大,改成二十四。新建一个 texture progress bar, 调整一下顺序, 重新对齐一下技能冷却时用它做倒计时效果 调整。 step a 零点零一 film mark 改为逆时针 texture 的 progress。 新增一个 gradient texture。 二 d 默认是渐变色,修改它的颜色区间,右键点击右侧的锚点,取消渐变,点击左侧锚点修改颜色。 这里只修改一下透明度,背景色有点撞色。给 slight 增加 style, 类型为 style box flat。 换一个喜欢的颜色 可以调暗一点。 调整 value 看看效果。后面要让它根据冷却时间变化先隐藏 texture progress bar, 创建一个 by and skill 方法,传入一个 status 参数。 新建 status 文件夹。创建一个脚本,命名为 skill status。 删除默认方法,继承 resource。 添加几个参数,分别为 skill id, skill name, skill icon, 还有 cool down。 设置 class name 为 skill item。 新建一个 resource 类型为 skill status。 复制两个 resource, 设置 skill id 为 skill 一, 我准备了三个图片,拖拽到 skill icon, 技能名称就叫雷霆万钧吧,冷却时间为一秒。 给第二个技能设置图片 id 为 skill 二,名称为飞火流星,冷却时间改为零点五。 给第三个技能设置图片 id 为 skill 三,绝对领域,冷却时间改为零点二。 新建一个场景,类型为 node, 命名为 skill manager。 新增一个脚本,删除默认方法,增加一个参数, skills 类型为 array, 这里主要保存 skill status, 回到 slot 节点。 修改 bend skill 方法,给 status 复制。将 texture button 拖拽到脚本,给 texture button 的 texture normal 复制为 skill icon。 新建一个方法, use skill。 在使用技能时调用新增参数, left time 记录冷却倒计时默认一秒,如果没有 status 返回未绑定信息, 当 texture progress bar 可见时,代表正在倒计时返回技能冷却中。接下来完成倒计时。新增一个捕监动画, 停止正在进行的补间动画。重新创建动画 trim property, 一 段时间内将指定属性修改为某个值, 修改 texture progress bar 的 y 六值从当前值变为零。时间为 cool time。 增加 train call back。 在 上个动画完成后,致信一个方法,将 texture progress bar 隐藏, 动画开始前修改,可见性为 true。 给 left time 赋值。 cool down。 增加内置的物理帧方法,将 label 拖拽到脚本,在物理帧中给 label 赋值。格式化。将浮点数转换为两位小数的字母串, 用百分号转换 判断使用 texture progress bar 的 可见性,如果不可见则改为控值。 给按钮绑定,按下信号鼠标点击时调用 use skill 方法。 调用 trim 的 parallel 方法,使下一个动画和上一个同时进行 trim property 修改, left time 为零,持续时间为 left time。 上一个持续时间也改为 left time。 为了方便做测试,将 status 改为 export 参数。 将 skill 一 status 拖拽到 status 上,测试一下。 多次点击时有异常。每次开启动画之前需要重置 left time 和 text progress bar 的 值。 修改完值之后再显示重新测试图片显示,过一会儿再查看。新建一个场景,命名为 skill panel, 类型为 ctrl。 新建一个脚本备用。回到二 d 使徒, 创建一个子节点,类型为 grape container。 准备四个技能栏位置,添加四个 slide, 调整节点的尺寸。 增加一个 color rect, 方便查看。重命名为 background, 增加一些间距居中对齐。 背景颜色调整暗一点,上下也留一点。编剧 修改脚本,增加 bind skill 方法,参数有 index 和 status。 将 grid container 推拽到脚本查看,如果字节点数量大于 index, 过去对应位置的 swap, 将 status 绑定到 slot。 新建 use skill 方法,根据 index 使用技能 将结果作为返回值, 返回失败结果。 默认方法,暂时不需要回到测试场景,将 skill piano 加入测试场景。 修改 band skill 方法, 调用 skill panel 的 band skill 方法, 需要获取 skills i 对 应的 status。 从 skill manager 中找到对应 id 的 status。 skill manager 无法调用。打开项目设置,点击大局,选择 skill manager 节点,不选脚本,点击添加,加个空格再删除,让编辑器反应一下,判断 id 相同。执行绑定方法, break 跳出循环一个 break, 跳出一级循环,加个等号。修改 use skill, 调用 skill panel 的 use skill 方法,返回调用结果。 增加一个新方法, skill start 接收鼠标点击时的反馈信息参数为 slot。 调用 slot 的 use skill 方法, 场景加载完成时绑定技能,测试一下没有绑定技能,查一下问题, skill manager 还没有给 skills 赋值。双击 skill manager 节点,给 skills 增加三个元素,将之前准备好的 skill status 放置到对应位置,返回 test c, 再次测试,报错了 skill id 获取异常。 这里问题是 skill 亦不是数组的脚标, 应该在循环时用 size 方法获取数组大小。 size 方法应该在 skills 参数上再测试一下,图标太大了。 到 slot 节点调整 texture button 的 纹理。对齐方式,正常啦,未绑定的技能不应该倒计时。 去掉之前测试时的 x part 修饰符可以啦。 到测试场景中调整一下技能栏的对齐方式。 增加一个 input 内置方法,判断 event 事件类型 处于按下状态和松开状态分别做不同处理, 让 key label 分 别显示按键松开和按下, 判断类型应该是 input event key 键盘按键获取按键的内容, 复制一份,改成按下测试一下,分别按下一二三四等按键,文字居中, 再处理一下按键操作,根据 key code 判断, t one, t, two, key, three t 四,分别调用四个技能栏。 调用 use skill 方法 测试一下返回值,报错到 swot, 找到 use skill 方法,返回技能名称, 重新测试,调用正常。接下来让场景显示调用结果。新增一个 success 参数, 接受 use skill 的 返回结果。给 skill label 赋值。 测试一下按键没有问题,鼠标点击没有反馈,通过信号调用 skill start 方法来实现。来到 skill manager 节点,新建一个 signal 启民 use skill signal, 回到测试场景,为信号绑定接收方法,在其他节点发出信号时可以执行这个方法。 切换到 slot 节点,按下按钮时发出信号参数是 self, 测试一下,这里调用了 skill panel 的 u skill。 回到测试场景,应该调用的是 skill start 方法,重新测试,显示还没处理,给 skill label 赋值, 给 key label 赋值。 再测试一下技能冷却时没有提示, 技能冷却时没有提示。检查一些各个地方的调用 texture progress bar 显示时会阻止按键接收点击事件。将 texture progress bar 的 filter mode 改为忽略,最后再测试一下,点击按键。 谢谢观看。

大家好,我们来创建一个简单的背包系统,可以新增拖拽,合并刷新保存。使用 gado 内置的 dark 方法。现在开始 创建一个测试场景,起名 test scene。 添加三个按钮,分别处理。随机添加一个道具, 第二个是保存道具状态,最后是刷新道具列表,调整一下按钮的位置。创建一个脚本 为三个按钮,分别绑定 press 的 信号。创建新方法,分别为 refresh, 刷新, save, 保存, add item。 添加道具,写好后暂时备用。 新建一个 great container 节点,命名为 backpack 节点水平垂直居中,列数设置为十。 再创建一个新节点,节点类型为 panel, 命名 slot。 改一下文件名叫 slot native。 将 slot 拖拽到 backpack 节点上,按 c t, r, l 加 d 复制 slot 节点设置 slot 的 尺寸为六十四乘六十四。回到 backpack, 十个 slot 排列好啦。 新建一个节点,类型为 textdirect, 节点,命名为 i time。 设置 item 的 尺寸和 slot 相同, 纹理自适应高度并保持长宽比。用默认图标查看,将 item 拖拽到 backpack 的 第一个 slot 中,检查一下显示效果。给 slot 创建一个脚本。 物品拖拽功能主要依赖 control 节点的几个内置方法。 can drop data 方法,用来判断道具是否能够拖拽到当前节点。 get drag data 用来获取要拖拽的道具。 drop data 用来实现道具放置到当前节点的操作。使用时, select 节点中会包含一个 item 节点。 在 get drag data 中,需要调用一个 set drag preview 方法,它的作用是创建拖拽时跟随鼠标移动的图标。 先判断 slot 中是否存在 item 子节点。 getchild 零获取第一个子节点,即是 item 复制 item, 将其复制给 texture 参数, texture 作为 set drag preview 的 参数,返回 item, 如果没找到 item, 返回 false 或者 null, can drop 计算方法,默认返回 false。 测试一下,报错是因为 slot 的 子节点重名,删除 slot 节点下的 item 名称改回来, 重新测试一下,鼠标按住第一个 item 并拖转,一松手就恢复原状,这样第一步就完成了。 setdrag preview 传入的 texture 是 用于现实的副本, return 返回的才是要处理的节点。 下面判断一下 item 是 否可以放置到当前的 swap 槽中, 节点类型是否为 texture。 再测试一下,鼠标没有静止,但仍然无法放置。 下面来实现放置方法,先看看 slot 下有没有 item, 如果没有此节点,则可以放置 data 参数,即是原 slot 上的 item 节点。复制一个 data 节点, 将 new item 添加到 slot 中,测试一下怎么越复制越多。将原节点删除。再测试一下,可以拖拽移动 item 了。 将 backpack 添加到测试场景中, 位置好像不太对, backpack 居中对齐。再重新测试一下。单个道具拖拽完成。复制一个 item 到第二个 slot, 相互拖拽时完全看不出来有什么变化。我准备了一些 icon, 新建一个脚本,命名为 item status。 删除默认方法, 创建几个 export 参数。创建几个 export 参数,有 item id、 item name 和 item icon。 item icon 是 texture。 二 d 类型 设置 class name 为 item status, 继承类型改为 resource。 新建一个 resource 资源,类型为 item status, 命名为 item status。 一, 设置参数, item id 为 item 一, 找一个图片拖拽到 item icon, 这样就准备好一个资源,复制 item status 一, 并命名为 item status 二。 修改 item status 二的 item id 为 item 二。再找一个新的图片, 回到 item 节点,新增一个脚本, 增加一个 item status 参数。 创建 unit data 方法, 给 item status 赋值。 另外再增加一个 item size 参数,记录道具数量,默认之为一。 增加一个 label 节点,用来显示道具数量。先放到 process 方法上,实时刷新,将数值转换成字母串显示。 调整一下文字的位置,让它固定到图片的右下角。 先写个零,应该能看到效果。 改在 physical process 方法也可以清理一下用不到的内容。 增加更新道具数量的方法, 默认之为一。 切换到 slot 节点,创建一个 add item 方法, 传入 item, 获取 slot 下原有的 item, 判断 slot 下是否已存在 item, 如果没有子节点,则将 item 添加到 slot 中。 如果有此节点,完成其他判断 新节点的 item id 是 否与旧节点相同, 如果相同,请更新道具数量, 从参数中获取数量, 如果不相同,则需要交换两个道具的位置。从原有 slot 槽中剔除 item 节点,再将新的 item 加入到 slot 中。新的 item 节点需要从原 item 复制, 这样用新节点替换旧节点,用 item 方法替换原来的新增节点。方法,传入 dat item 脚本,增加一个 add item 方法,传入 item status。 class name 命名为 dragitem。 新建 dragitem, 给 item status 赋值, 添加 item size。 slot 是 否为空? 如果不为空,则需要处理原 item, 便利 slot 子节点也可以直接 get child 零, 获取 slot 原有 item。 给 slot 增加一个 get item 方法, 子节点不为空,则返回 child 零, 否则返回 now。 返回类型是 text direct。 改一下返回 direct。 给 backpack 节点增加一个脚本。将 item 节点的 add item 方法剪切到 backpack 节点。 如果 slot 放置了 item, 判断两个 item 的 item id 是 否一致, 如果一致则修改道具数量,直接使用 size 参数,如果不一致,不做处理。 如果 slot 下没有子节点, 新增一个 item。 增加一个 in swap 方法, 清理 swap 结下的 item 点,让背包保持初始状态。 清理节点,用 remove item 方法到 swap 的 脚本中添加。 调用 remove child 后,再调用 q free 释放内存, 加载完成时调用 indiskot。 测试一下。 新建一个 node, 场景命名为 global, 为 global 添加脚本, 删除默认方法,并创建新参数。 base item, 保存已有道具信息, 包含 item id 和 item size 两个属性。 先设置有两个道具, 再添加一个 items 属性,保存 item status 资源, 将 items 设置为 export 属性,以便编辑器操作。 之前创建的两个 resource 可以 拖拽到这里。 点击项目设置,选择大局菜单,将 global 设置为大局。加载节点, 使用随机数从 item 列表中获取一个 item status。 把 backpack 放置到脚本中,以便调用。调用背包的 add item 方法, 将方法绑定给 button, 回到 backpack, 继续处理新建 item, 调用 swap 的 add item 方法 测试一下,报错了,报错显示 label 节点不存在, 报错显示 label 节点不存在。判断一下是否加载完成,调试器报错了还是 label 不 存在。 到 backpack 中找一下 new 方法,不能用在继承节点上。找到 item 节点文件,拖拽到脚本中,它是一个 pack 的 sin 类型参数, 要用 excel 它的方法创建一个实例,重新测试。一个崭新的 bug 又出现了,完成操作,要跳出循环图标,没更新。 修改 item 下的 edit data 方法,将 texture 设置为 item icon, 再测试还是没有变化,找找问题在哪。 这里并没有调用 edit data 方法, 参数没有变化,测试一下。 第二步完成,调节一下图片对齐,根据图片形状适当调节自适应高度,宽度。我这里效果相同, 先撤回。 又出现一个新的问题, 看一下 slot 应该实出。在 add item 里 复制一个 item 节点, 添加为 slot 的 子节点,试一下报错了。 检查一下占信息 org item 的 item status 参数为 null, 找一下问题在哪, 打印一下看看。 duplicate 方法不能复制自定义的属性, 需要调用 enix data 方法赋值, 复制节点都需要调用。先不打印了,再测试一下报错, item 不 存在 这里不应该是 get child 零。重新测试, 有道具的情况下还没处理完。 应该修改 slot 节点的 drop data 方法, 删除空值,判断类型不同时不应该删除。就节点需要修改 add item 方法,获取 item 所在的 slot, 将就的 item 添加到另一个 slot 里, 测试一下 slot 推空。 get parent 方法不太好用, 换个位置试试 还是报错。 换一种方式获取 slot, 给 item 增加一个 set slot 方法, 再增加一个 get slot 方法, 调用 get slot 方法。 新 item 要调用 set slot 方法。记录新的 slot, 改成 add child, 不 需要再重新判断一遍, 这里也要调用 set slot。 改成 set slot。 测试一下。 相同物品合并时报错 item status 里没有 item size, 删除 item status 看起来还不错。 第三步完成, 接下来要进行数据保存和刷新。在测试场景的 save 方法中,便利 slide, 根据 item 存在与否以及 base items 的 size 更新。 base items size 大 于 i 则修改 di 格值,否则添加新值。 将 save 方法绑定到 button 二, 顺便将 refresh 方法绑定到 button 三。 下面实现刷新功能。 首先便利 slot 删除所有 item, 然后便利 base items 获取已保存的 item 信息。 base items 的 大小不会超过 slot 个数,所以直接获取第一个 slot。 调用 add item 方法添加新的 item 到 backpack 节点。找一个新建 item 的 例子, 复制到 refresh 中, 获取 item status。 便利 items 根据 item id 获取对应 item status。 添加节点文件到脚本, 完成后跳出循环, 增加一些判断条件。 测试一下数组需要获取 size。 测试一下 item size 不 存在,写错了,应该是 item size。 测试一下, 把 i 去掉,再测试一下 数值。角标越界, 改成 item status 再重新测试。 谢谢观看。