后期网站,郑州网站营销推广公司,招聘网站开发技术维护,免费下载优化大师文章目录 一、探索1.1 ECA1.1.1 ECA的定义1.1.2 使用触发器实现瞬间移动效果 1.2 变量1.2.1 什么是变量1.2.2 使用变量存储碎片收集数量并展现 1.3 if语句#xff08;魔法效果挂接#xff09;1.3.1 地形设置1.3.2 编写能量灌注逻辑1.3.3 编写能量灌注后#xff0c;实现传送逻… 文章目录 一、探索1.1 ECA1.1.1 ECA的定义1.1.2 使用触发器实现瞬间移动效果 1.2 变量1.2.1 什么是变量1.2.2 使用变量存储碎片收集数量并展现 1.3 if语句魔法效果挂接1.3.1 地形设置1.3.2 编写能量灌注逻辑1.3.3 编写能量灌注后实现传送逻辑 二、战斗2.1 循环2.2 数组2.3 计时器2.4 单位组 三、升级3.1 技能3.1.1 地形设置3.1.2 触发编写 3.2 界面编辑3.2.1 界面编辑器设置3.2.2 添加按钮事件3.2.3 触发编写 3.3 运动器 四、优化4.1 游戏声音设计4.2 游戏镜头设计4.2.1 镜头的基本参数4.2.2 镜头时间轴动画 4.3 表格编辑器实现对话UI4.3.1 一维表和多维表4.3.2 数据验证、搜索、保存与撤销4.3.3 Excel导入导出4.3.4 使用表格编辑器实现对话UI4.3.5 更多示例 4.4 函数库 五、项目竞技场争霸赛5.1 项目简介5.2 地形设置5.3 触发器设置5.3.1 游戏初始化5.3.2 战斗准备5.3.3 战斗中5.3.4 游戏结束 Y3编辑器文档1编辑器简介及菜单栏详解文件、编辑、窗口、细节、调试Y3编辑器文档2场景编辑地形编辑、物件放置Y3编辑器文档3物体编辑器Y3编辑器文档4触发器1对话、装备、特效、行为树、排行榜、不同步问题
一、探索 参考《开发者学院系统化教程》 1.1 ECA
1.1.1 ECA的定义
Y3编辑器中触发器可以实现游戏内的所有功能触发器由三部分组成
事件Event触发器的导火索当设定的事件发生时触发器才会执行。条件Condition触发执行必须满足的条件。动作Action触发执行的结果。 当事件被激活满足了条件后才会执行动作。例如短跑比赛中信号枪响事件只有参赛者条件会开始跑步动作。
1.1.2 使用触发器实现瞬间移动效果
本视频中实现瞬间移动的步骤为 地形设置在地图上放置一个单位在传送阵处绘制圆形区域。在希望角色被传送到的地方绘制一个点。点和区域在编辑器里是可见的但在游戏中会处于隐藏状态。 触发编写 新建事件CtrlE当任意单位进入圆形区域时触发所以选择单位-任意单位区域事件。区域行为选择进入区域选择刚刚绘制的圆形区域。 新建条件CtrlD只有神秘人进入才会触发动作。设置单位-单位类型-判断触发选择单位类型-函数-获取单位类型判断符选择等号第二个字段选择自定义的神秘人。 新建动作CtrlR神秘人移动至点P1。 移动命令选择单位-强制移动动作选择单位-函数-获取事件中的单位坐标选择刚刚创建的点。发布停止命令不设置的话单位瞬移后会立马跑回去。选择单位-发布命令-停止相机跟随单位为了增加玩家视觉体验设置镜头-第三人称跟随单位。玩家选择玩家1镜头焦点选择跟随事件中的单位。 1.2 变量
1.2.1 什么是变量
变量是可能随时变化的值比如人的体重或年龄。变量按照作用域分为局部变量和全局变量。局部变量只在单个触发器内有效而全局变量可以在整个触发器中被调用。变量不能重名 变量类型变量在创建时需要声明其类型这包括 布尔型True或False。整数型整数如12345。浮点型实数如4.633也可以存储整数。字符串型由数字、字母和符号组成的字符序列用于存储游戏中的文字。 变量类型限制 一旦定义了变量类型该变量只能存储该类型的数据。不同类型的变量不能直接进行数学运算或拼接。
1.2.2 使用变量存储碎片收集数量并展现 游戏中探险者收集六个次元石块并修复传送阵这需要通过设置一个整数变量来记录探险者收集的石块数量。具体实施步骤为 地形设置 打开物体编辑器创建一个新的物品石块并设置模型和图标。在表现页面可以预先设置石块大小提前调整将在地图上放置六个石块注意间隔。 触发编写触发的核心是需要设置一个整数变量去记录探险者收集的石块数量。 创建事件创建一个新的触发器设置事件为物品-单位获得事件。创建动作选择基础-变量-设置变量-全局变量可重命名为number类型选整数来记录石块数量初始值为0。实现累加逻辑每次探险者获得石块时变量number增加1。所以设置第二个参数整数-整数间数学运算。第一个变量为number运算符为第二个变量设为1这样每获得一个石块数量就累加1。存储石块数为了增加用户体验创建一个字符串变量来存储和显示累计拾取的数量并展示。选择变量-设置变量-局部变量字符串类型可命名为message。设置为字符串-字符串拼接。第一个字符串为“累计拾取数为”第二个为number。由于整型要转为字符串类型才能拼接选择字符串-任意变量转为字符串选择待转换的变量为整数-全局变量-number。展示消息选择界面-系统消息提示选择向玩家1显示message信息持续时间可自己调整。 1.3 if语句魔法效果挂接 魔法效果挂接参考《挂接流程》 if流程语句的结构如下条件可以是取反not语句、所有条件成立and语句、任意条件语句or语句或者所有条件不成立。 下面用if语句实现献祭能量后激活传送阵的效果。
1.3.1 地形设置
在物体编辑器中新建两个自定义装饰物能量圈和传送门和一个自定义单位探险者放置在地图上。在能量圈和传送门的位置各绘制一个圆形区域并分别重命名为能量圈区域和传送门区域。在希望被传送到的位置绘制一个点重命名为point。新建能量获取魔法效果选择魔法效果-创建-普通-右上角获得特效列表下选择一个蓝色护盾buff特效。选择左上 模型编辑器-模型可以查看在不同单位模型效果。单机特效标签弹出的窗口中还可以对效果进行旋转和缩放以及选择挂接点。 1.3.2 编写能量灌注逻辑
需要新增一个全局变量infusion来判断探险者是否进入能量泉进行了能量灌注类型为布尔值。
创建事件选择单位任意单位进入区域魔法区域。创建注入动作选择基础-设置变量新建全局变量重命名为infusion类型为布尔值默认为False。进一步设置变量infusion为True表示单位进入能量泉后能量注入成功infusion应为True。 创建魔法效果动作选择魔法效果-添加魔法效果。第一个参数魔法效果类型选择刚刚自定义的获得能量护盾效果蓝色护盾buff。第二个参数单位选择探险者。
1.3.3 编写能量灌注后实现传送逻辑 如果条件满足探险者已能量灌注则执行if b动作列表将探险者瞬移到点point并发布停止命令。如果条件不满足则执行else动作列表提示传送失败。新建一个触发器
创建事件单位-任意单位进入区域创建动作基础-条件IF/THEN/ELSE旁边的号点击后选择基础-布尔值判断判断条件为infusionTrue。创建Then语句探险者瞬移到point然后发布停止命令创建Else语句选择界面-系统消息提示参数分别选择玩家1和“传送失败”。
二、战斗
2.1 循环
循环是指重复执行某项动作。在Y3编辑器中循环有三种类型 指定次数或指定整数变量重复执行这是最常用的循环触发方式例如设定NPC敲门三次动作会重复三次后自动停止。 条件成立重复执行在条件满足的情况下进行无限次的循环直到条件不再满足。例如如果条件是门关着就敲门那么敲门动作会一直重复直到门开了才会停止。 遍历数组变量循环根据数组的索引数字对数组中的每个单位重复执行动作。例如有一个不同门的列表NPC会按照顺序敲门直到所有门都被敲过。 指定次数循环实现召唤六个次元种子 地形设置 自定义创建黑袍男单位并重命名为boss自定义特效种子投射物重命名为Seed。将boss单位放置在地图上并以boss为中心绘制一个圆形区域重命名为alert_area。触发编写 创建事件选择单位-任意单位区域事件设置参数为任意单位进入alert area任意单位包括boos啊得指定玩家才行非boss都不行。 创建动作 创建一个变量循环Seed number变量类型为整数从1到6做动作表示循环六次创建六个种子。变量Seed number存储当前循环的整数数字。创建一个角度变量angle使用函数-数学运算-角度运算选择已创建的整数变量Seed number乘以60得到从60度到360度的六个平均分布的方向确保投射物出现在boss周围。 创建一个点变量loc点类型用来记录种子出现的点。选择函数-路径-点向方向偏移初始点为boss所在点方向为变量angle偏移距离设置为300。 添加动作为boss创建种子。选择投射物创建投射物seed位置为变量loc可选参数中选择持续时间为5秒。 2.2 数组 数组是相同数据类型的集合数组中的每个元素都在其基本值上添加了一个索引使我们在数组中更容易找到和访问它们。整数、单位、实体、单位名字、物品实体等变量都可以设置为数组。 下面使用数组实现六个黑暗守卫一起进攻的游戏效果。地形上我们复用上一节的地形。触发编写为
创建事件键盘按键H按下硬件输入-键盘-按下-H。创建动作 设置一个局部变量guards类型为单位类型不是单位这里要勾选数组。分别设置1~6对应我们需要的六个黑暗守卫单位类似语句可以直接复制粘贴还是太不优雅了。利用上节课学习到的循环创建一个变量循环numGuard从1~6循环。我们同样需要创建变量angleGuard和locGuard来存储黑暗守卫出现的方向和位置。添加动作为boss在locGuard创建guards数组变量guards的索引为变量numGuard。 2.3 计时器 计时器就好比一个沙漏在计时结束后开始执行某项动作。我们可以用计时器来处理和时间有关的游戏逻辑。在编辑器中计时器一共有三种
运行单次计时器计时器运行一次后开始执行动作。例如倒数三秒后约翰的门就会打开。运行循环计时器计时器循环运行每次运行后都会执行动作。例如每隔一秒约翰的门就会打开一次。运行固定次数的计时器计时器中间停留固定时间固定次数的计时器。例如每隔一秒约翰的门就会打开一次一共打开三次。 本节使用计时器实现一只只次元入侵者从裂缝中爬出来的效果。
地形设置 在地图上绘制一个点区域-点重命名为“裂缝”。打开物体编辑器-生物自定义次元入侵者。头顶无显示血条样式无血条取消勾选是否有技能资源条取消勾选是否在小地图显示修改攻击范围为10。 触发编写 创建事件键盘按键J按下事件。创建动作 选择循环计时器每两秒循环一次。通过设置语句中的布尔值参数我们可以选择“立即执行”或者选择“等待两秒后再执行第一次动作”。我们在这里选择true即立即执行。动作列表中创建你想要生成的单位在刚才绘制的点“裂缝”处创建面向角度跟boss一样。
2.4 单位组 单位组是由一个或多个单位组成的集合单位组里面的所有元素的类型都是单位。单位组也可以是一组不同类型的单位组成的集合。合理利用单位组我们可以在游戏制作中节省大量的时间。在单位组中我们能同时对所有的单位发布命令。 下面使用单位组实现主人公发送特技“次元入侵”入侵者瞬间死伤殆尽的效果。 地形设置在地图上放置一些自定义的次元入侵者和一名次元统领设置他们的单位所属为中立-敌对再将我们的主角探险者放置在地图上。触发编写 创建事件硬件输入键盘按键按下选择按下K键。创建动作 设定一个局部变量变量名invaders_Group类型为单位组我们将次元入侵者设为单位组中的指定单位类型函数-单位组-指定类型的单位-次元入侵者。选择单位组invaders_Group遍历其中的单位在动作列表中添加单位-杀死单位。第一个参数选择“获取单位组中遍历到的单位”凶手为“探险者”。现在单位组invaders_Group中的所有单位将被一起杀死。 三、升级
3.1 技能
技能的释放简单来说有三个关键点
施法开始在施法开始节点后会播放单位的施法动作比如魔法师抬起魔杖施法引导施法过程的开始例如魔法师开始念咒语施法结束咒语念完的时间点在这个关键点之后部分人物会有结束动作。
下面实现探险者在选中位置召唤一个巨雷对区域内所有敌人造成伤害的效果
3.1.1 地形设置 在地图上放置中立-敌对的野怪单位以及主角探险者。 新建自定义技能并为其命名和添加说明“探险者在选中位置召唤一个巨雷对区域内所有敌人造成伤害。”。在右侧固定属性基础中保留是否转身勾选超出范围、立即释放其他全部取消。选择圆形指示器设置技能范围为300。 新建自定义的雷电投射物作为技能的施法效果新建投射物-表现页签-右侧属性栏-特效配置选择闪电特效。 在物编器中给探险者添加雷电技能作为其通用技能。
3.1.2 触发编写
此技能有两个阶段
施法开始到施法引导阶段播放施放技能的动作施法引导到施法结束阶段创建施法效果的投射物表示产生技能效果识别技能范围内的所有单位对其中的敌对单位造成群体伤害并显示伤害数据。
在工具栏-技能中也可以编辑触发器它会编写技能触发的具体过程。整个逻辑实现过程为
技能物编器中新建触发器重命名为stage1 创建施法开始事件选择技能-施法开始创建施法动画播放动作单位-动画-播放动画参数“单位”选择“函数-技能拥有者”参数“播放动画字符串”选择“值-attack1”单位内置动画名称参数“速率”设为1即正常播放速度。从0秒播放到-1秒表示动画播放到最后。 技能物编器中新建触发器重命名为stage2 创建施法引导事件选择技能-施法引导创建动作1——投射物动作施法选择投射物-投射物-在点创建参数“投射物类型”选择刚刚自定义技能“雷电”参数“点”选择“函数-技能当前技能获取到点”参数“所属”选技能拥有者。在可选参数中选择持续时间为3秒。创建动作2:——筛选单位组新建动作设置单位组-函数-筛选范围内所有单位以技能选取点为圆心半径300内的所有单位做动作。创建动作3——对敌人造成技能伤害新建if条件动作-如果所有条件成立 创建if条件 在if条件中选择单位-是敌对关系两个参数分别选择“获取单位组中遍历到的单位”和“技能拥有者”。创建Then动作选择单位-造成伤害。对遍历单元组中的单位造成500点法术伤害伤害所属设置为技能拥有者所属当前技能。else代表同盟或者友方单位不需要做任何动作。 技能默认消耗MP而生物和建筑单位默认是没有MP的装备了主动技也使用不了。 3.2 界面编辑 界面编辑器是对软件的人机交互操作逻辑和界面美观进行的整体编辑我们通常会用到图像、文字、按钮等组件在界面上与操作者进行互动从而丰富和增强用户的体验。Y3编辑器中UI编辑器的操作界面主要由五个部分组成
画板区在开始做一个界面之前必须先创建一个画板。控件区用于展示每个画板里面的各个控件。节点区展示所有可使用的UI组件包括按钮、图片、模型、文本输入框、进度条、滑动条列表等。画布区域在画布中编辑摆放组件并查看组件属性。事件区域用于编辑组件的具体参数包括大小、位置、外观、动画等。 在控件区所有组件都以树结构来陈列包含了一组节点节点之间相互关联并且具有父节点和子节点关系节点的任何附属节点都称为子节点。删除一个节点其所有子节点也会被一起删除。 UI本身只有显示作用我们一般会配合触发编辑器去实现一些想要的功能。接下来我们实现以下界面UI 3.2.1 界面编辑器设置 首先在地图上放置一个用于选择的单——探险者在法师周围绘制一个圆形区域命名为select _area,表示进入这个区域会触发宝物选择界面。 创建空白画布打开界面编辑器单击创建一个新的画板并重命名为select_treasure。缩放画布大小为33%。 创建选择框底板拖动顶部图片按钮到画布中央在资源库中选择喜欢的图片弹窗-公告栏。拖动图片锚点放大图片或者通过x轴y轴坐标进行放大。 设置界面标题拖动顶部文本按钮到底板上调整位置和大小输入“请选择一个你喜欢的宝物”作为选择框的标题并明明为title。设置文本的字体颜色和对齐方式让它们看上去更美观一些。 设置玩家选项1拖动一张图片控件图到画布上根据喜好调整位置、尺寸和背景图片命名为button1。将另外一个图片拖动至button1内作为奖励的展示图标icon1选择文本并将其拖至button1内作为奖励的名字name输入“魔法戒指”并调整字体颜色和位置。 调整父子级关系以图片为父节点将title,button1拖动到图片下作为相互平行的子节点。将icon,name拖动到button1下作为其子节点。这样icon,name,button1就可以作为一个整体被选择。 设置玩家选项2复制并粘贴一个新的选项重命名为button2调整级别和位置更改图像和文本完成第二个按钮。
3.2.2 添加按钮事件 界面组件设置完毕后我们为按钮添加事件。选中button1右上角点击事件点击添加事件并命名为choose_ring。点击“空事件-事件设置-点击”。同样的方式为button2选择点击事件并命名为choose cloak。 在事件板块点击音效可以选择事件的音效点击界面上方的动画编辑可通过时间轴管理为事件制作帧动画。时间轴和动作设置板块中的动画效果互相排斥如果在动作设置板块中选择了一个动画效果则时间轴不生效。 由于整个画板在事件触发前是不可见的所以选中整个画板select_treasure选择属性将是否可见取消勾选。这样我们绘制的整个界面组件在触发调用前是不可见的。
3.2.3 触发编写
整个触发分三部分
当选择单位进入到对应的区域后会出现选择框选择按钮A左侧信息栏提示A内容选择按钮B左侧信息栏提示B内容
下面是具体的编写逻辑
触发器-进入区域 在物编器的触发器页签下创建任意单位进入select _area区域事件将此事件命名为“进入区域”。新建条件-单位类型判断获取事件中单位的单位类型等于探险者。新建动作-界面-显示/隐藏控件对玩家1显示控件。 触发器-选择戒指 创建事件界面-控件事件参数UI事件选择choose ring。创建动作选择界面-显示/隐藏控件来向玩家1显示控件select_treasure。创建动作选择界面-系统消息提示来向玩家提示“你选择了魔法戒指”持续时间设为5秒。 触发器-选择斗篷 直接复制上一条触发器重命名为选择斗篷UI事件改为choose cloak第二条动作命令信息显示内容修改为“你选择了魔法斗篷”。
3.3 运动器 运动器可以为单位或者特效等添加运动效果比如沿着直线运动或追踪某一个单位等是制作技能、特效等场景中十分常用的功能。 在Y3编辑器中运动器分为追踪运动器、曲线运动器、直线运动器、环绕运动器对单位、环绕运动器对点。今天就以环绕运动器对单位为例给大家做一个演示实现电球的环绕和爆炸效果。 触发组件设置 在物编器中创建一个自定义投射物Electric ball球形蓝色电流攻击作为环绕的球体设置缩放0.4倍大小勾选循环播放让特效一直播放。设置自定义投射物Explosion蓝色电流冲击波0.3倍缩放作为结束时的爆炸效果。在主界面地图上放置一个英雄单位作为主角 触发逻辑 新建事件硬件输入-键盘按下A。新建电球投射物创建一个投射物变量Electric ball投射物类型选择预设的投射物Electric ball选择在点创建创建的位置点选择探险者所在的点。新建运动器选择运动器-环绕运动器对单位两个参数分别设为变量Electric ball和探险者环绕半径为200角速度为100。在可选参数中添加环绕时间5s和环绕高度100。新建投射物爆破动作在运动完成动作列表下添加动作在探险者所在的点创建投射物Explosion持续时间1s。优化游戏内存销毁投射物Electric ball并移除运动器为单位移除运动器单位选择探险者。 四、优化
4.1 游戏声音设计 声音不仅是玩家接收游戏信息的重要途径也是游戏开发者传递情感和增强游戏体验的关键工具。游戏中的声音主要分为功能性音乐和背景音乐两大类
功能性音乐 游戏信息提示为玩家提供画面外的游戏信息提示和预警例如交互物品的存在、环境变化和潜在威胁。玩家操作反馈通过声音反馈玩家操作增强游戏互动性使玩家获得及时且全面的反馈。 背景音乐 环境渲染通过声音对游戏场景进行多感官渲染增强玩家的沉浸感。情绪渲染利用声音表达复杂的情绪如战斗的激烈、对未知的恐惧和紧迫感。
在物体编辑器中可以进入音效模块设置音效属性
淡入:设置声音开始时由无声过渡到有声所经历的时间。淡出:设置声音结束时由有声过渡到无声所经历的时间。调整至3D声音模式我们可以设置声音的衰减距离和静音距离。 点击“”可以为一个音乐场景添加多个声音不仅可以调节各个声音的音量还可以调整各个声音的播放概率从而使游戏中的音乐变得多样化。还可以为音效添加新的自定义属性并设置其名称、类型、值后续通过触发器调用。 在物编器-单位-单位固定属性中我们可以为单位绑定声音事件比如选择当角色升级时播放升级音效。
4.2 游戏镜头设计
4.2.1 镜头的基本参数 打开工具栏-放置物件-镜头可以看到编辑器自带得默认镜头Initial Camera此镜头的视角为进入游戏之后的默认视角无法删除无法重命名。用户可以在场景中的任意位置点击“以当前视角设置镜头属性”来为当前视角创建镜头。用户创建的镜头可以重命名、删除。
参数说明焦点位置及镜头的指向点焦点位置指的是镜头所注视的目标点它由三维坐标X、Y、Z确定。镜头的指向是通过这些坐标来设定的表示镜头当前所看的位置。俯仰角镜头与水平线的夹角平视为零度仰视为负数俯视为正数。导航角镜头在地平面上的方向通常从参考方向如正北开始测量镜头面向正东时导航角为90度。滚转角镜头自身的旋转角度类似于歪头时视角的变化。距离镜头与焦点之间的三维空间距离。观察区域FOV镜头视野所能覆盖的范围决定镜头显示细节的区域。远景裁剪镜头显示参数超出距离范围的物体不进行渲染不显示。实时观察镜头属性改变勾选后可实时预览镜头的视角变化。与焦点的最大/最小距离游戏中玩家可通过鼠标滚轮控制镜头与焦点的距离设置此参数可进行限制。例如当二者设为一样时玩家视角将被限定无法使用鼠标滚轮调整距离。 4.2.2 镜头时间轴动画 使用镜头时间轴动画和使用触发器都可以实现镜头动画二者在最终的画面表现上没有区别但却各有优势
镜头时间轴动画可以在时间轴内通过设置关键帧的形式方便快速地制作镜头动画。但每条时间轴镜头动画不能复制无法复用。触发器触发器编写的自定义程度高语句还可以复制粘贴具有很强的复用性和扩展性。相关定义详见触发器-镜头API 点击新建的“镜头时间轴动画1”右侧的编辑按钮即使用当前画面视角为初始帧创建时间轴动画。每条时间轴动画由两个部分组成分别是 时间轴和 当前关键帧下镜头的属性面板。 我们可以在时间轴上拖动进度条或是在frame窗口中输入具体帧数来选择关键帧位置。Y3编辑器使用的刷新率为30帧每秒所以如果设置关键帧在第60帧就是在第两秒。点击上方的创建按钮即可在所处位置为所选参数新建关键帧。 关键帧分为绝对值当前关键帧下镜头的具体参数和相对值相对于初始帧所改变的取值。当指针选定一个关键帧时点击鼠标右键即可对关键帧进行复制、粘贴、删除按下delete按键也行等操作。编辑并保存关键帧之后在触发器中可以编写镜头触发事件 4.3 表格编辑器实现对话UI
4.3.1 一维表和多维表 在故事中我们通过对话UI向玩家传达了剧情的重要信息。不同的对话内容需要多个UI来呈现吗其实不用在Y3编辑器中我们可以结合表格编辑器、界面编辑器和触发来实现这个效果。 表格编辑器是Y3编辑器提供的数据管理工具我们可以在表格编辑器中以表格的形式保存数据并之后通过触发来快速调用这些数据比如怪物的物品掉率刷怪时怪物种类和数量。 在表格编辑器中有两种表格一维表和多维表。一维表中每一行都是一条独立的数据包含键名、类型、值和备注。通过键名也就是索引我们就能快速获取到对应的值。 一维表适合定义零散的各种数据比如游戏初始化时的一些规则和参数。假设你的《练功房》项目中一共会有六个房间你想分配其中有两个房间产出经验有两个房间产出金币并且希望在游戏中时间12时开始刷新怪物14时之后就停止刷新怪物。由于这些数值关系到项目中设定的经济产出如果你希望快速地调整这些数值可以将这些数值保存在一维表格中 假设你正在制作一个《塔防》项目在第1波次一共有30只恶魔进攻玩家玩家需要在60秒内把他们消灭。这里波次有“顺序”、“怪物数量”、“怪物类型”、”消灭时间”四个关键属性可以使用多维表格管理数据。多维表中每条数据包含多个属性及其数值我们需要两个索引才能锁定数据位置。 多维表适合定义一个数据对象表格中的第一行是这个数据对象的属性名称(key)第二行是这个属性的数据类型第三行及之后的行则是对应的值。如果数据类型选错了那么你可能没有办法在触发器中正确的拿到你想要的数据。 4.3.2 数据验证、搜索、保存与撤销
多维表可灵活添加行和列一维表固定只有三列不能新增列。不允许出现相同的主索引值且主索引只能是整型或字符串类型数据验证标红的单元格意味着该数据无法在局内读取到。若是在你配置过程中出现可能只是因为你的表格还没有编辑完成而系统提前在验证。数据配置后仍有单元格标红可把鼠标悬浮在红框上查看具体原因如关键数据的缺失或不匹配或重复再予以修复。 重命名右键点击一张表或选中后按F2可进行重命名表格归类点击文件夹图标按钮或CtrlG可创建文件夹归类表格。保存与撤销保存按钮是保存整个工程而撤销按钮只针对你在表格编辑器内的操作。
4.3.3 Excel导入导出 表格编辑器并不支持如office中公式、填充柄、甚至VBA等一些高级功能的应用。如果要进行高效开发推荐先使用Excel进行快速编辑再导入编辑器。表格编辑器用于快速验证调试游戏体验。 点击导入你可以选择一个表格文件将其导入至编辑器中当前支持的表格格式有”.xlsx”,”.xlsm”,”.xls”,”.csv”共四种。
一维表导入所有以“kv_”开头的sheet将读取为一维表 标题行第一行为标题行限定内容为“Key,Type,Value,Des大小写允许模糊。数据行第二行往后为数据行 多维表导入所有config_作为前缀的sheet表格将读取为多维表 第一行为注释行不读取第二行为数据名读取后视为列名第三行为数据格式支持int,string,float,bool四个类型支持大小写模糊第四行为主键标识格式需要是整型或者字符串类型以key1,key2,key3进行枚举支持大小写模糊。最多支持三键表需有key1才能有key2需有key2才能有key3否则报错导入错误。如果没有key则生成一个”key1“列作为主键以行号填写值。第五行之后为表格的数据涉及到的公式等特殊格式以结果的值进行读取。
4.3.4 使用表格编辑器实现对话UI
在表格编辑器内定义的表格在游戏初始化时将会保存在内存中供你在任意的触发器中调用 下面我们就来看一看表格编辑器的具体使用方法。 绘制UI绘制一个界面来承载和展示对话内容 打开界面编辑器添加一个新面板并将其重命名为dialogue。这个界面应包含两个图片一个作为content对话内容背景一个作为real name角色的背景以及两个分别用于承载real name和content文本框。拖动调整这些控件的大小和位置在文本设置中设置文本的字体样式调整空间的父子级关系。选择整个面板并取消勾选是否可见表示直到它被触发才显示对话界面。 创建多维表创建多维表并将其重命名为scripts。在scripts中将主索引key修改为order存储对话顺序整型。添加两个类型为字符串的属性role name和content分别存储角色名称和对话内容。 触发编写 新建事件硬件输入-键盘空格键按下事件新建动作设置对话顺序设置一个全局整数变量order来记录空格键被按下的次数初始值为零。使用函数-整数间运算设置变量order为order1这样当我们第一次按下空格键时order都加1。新建动作显示角色名称选择界面-设置文本对玩家一设置dialogue面板下的real name文本字符串参数选择函数然后选择第二个多维表中的字符串值。 现在当我们第一次按下空格键时order1主索引为1的role name数据将读取显示。当我们再次按下空格键时order2主索引为2的role name的数据将被读取显示。 新建动作显示角色对话文本操作同上
4.3.5 更多示例
一维表用例配置了如下的一维表命名为globalConfig。 可直接通过Type类型对应的参数类型在获取到Key对应的Value值。 多维表用例配置了如下的多维表命名为Example。 最基础的使用方式为直接获取表格中的值如我当前需要获得id为1的数据中的use_money字段数据将其存入变量a中。可以采用这样的方式 常用方式是遍历表格实现一些逻辑
4.4 函数库 在2.3章节中我们使用循环计时器连续生成次元入侵者。那如果需要在多个区域在不同的时间点生成敌人是否需要写多个触发器重复设置效果呢当然不是Y3编辑器为我们提供了一种更简单的方法来重复实现简单的功能即函数库。 函数库允许我们将常用的触发器语句转换成可重复使用的函数类似于编程中的函数或者方法可以提高工作效率。函数库由以下部分组成
函数描述定义函数在动作列表中的显示方式包括自定义名称、描述触发器语句的内容和格式和提示。参数定义了该函数的输入数据连接函数库和触发器可设置参数类型。返回值定义了函数执行后返回的结果输出数据。你可以点击 来设置返回值的名称和类型以方便触发器的后续调用。动作函数执行的动作列表显示了函数的具体行动逻辑。 现在我们想要实现的效果是在三个指定的地点间隔0.3秒生成一个指定类型的野怪总共生成五个。我们可以使用函数库简化具体的编写过程。 触发组件我们需要在地形上放置敌对单位、boss和探险者。 在boss周围绘制三个点区域分别命名为point A、Point B、Point C。以boss为中心绘制一个圆形区域alert area作为boss的警戒范围自定义三个不同的小怪他们会在三个点生成。 自定义函数库函数 在函数库中新建函数命名为“野怪刷新”参数为Monster小怪单位类型和Point刷新点点击左边的可用参数使用刚刚创建的参数组成函数描述“在参数Point处创建参数Monster”。新建一个技数计时器设定每隔0.3秒运行一次共运行五次选择“立即执行”在动作列表中选择创建单位单位类型是参数Monster点是函数参数Point为单位boss创建方向是单位boss的方向。添加一个动作来向怪物发出命令选择“单位发布命令”设置命令为“攻击移动”。 触发编写调用函数库通过设置不同的参数和计时器来在不同时间和地点生成敌人。 新建“任意单位进入区域事件”在单玩家位进入BOSO警戒区域两秒、三秒、四秒后分别使用“野怪刷新”函数在三个点刷新小怪。
五、项目竞技场争霸赛
5.1 项目简介 游戏的制作一般分为三大类
设计包括游戏的核心玩法和故事背景。美术负责游戏的原画角色、物体和场景的三维建模。程序设计通过代码实现游戏玩法。 本项目“竞技场争霸赛”是一款射击类小游戏一个人就足以完成开发。核心玩法是玩家控制挑战者挑战怪物通过移动和射击来躲避怪物攻击和击败怪物。每隔几秒钟怪物就会热身蓄力然后冲锋玩家必须使用鼠标右键移动进行躲避然后使用鼠标左键精瞄准射击击败怪物所以游戏两大核心机制是移到和射击 另外游戏将从游戏印象和游戏沉浸两个角度进行设计。由于挑战者在攻击时不能移动所以玩家在何时躲避危险和何时瞄准目标之间保持平衡是很重要的这带来了挑战和乐趣。在游戏沉浸方面我们可以通过动画、镜头、角度、滤镜等去创造过程带来令人印象深刻的游戏体验玩家将在游戏开始时更加兴奋在游戏结束时更感到印象深刻。 时间有限下面只展示必要步骤。
5.2 地形设置
新建空白工程选择小型地图64×64和自定义UI模板。创建生物单位挑战者、boss、观众和抛射物探险者的子弹。 挑战者模型选择仙人掌人血条样式为绿色血条显示模式为不满血显示取消勾选死亡后销毁单位取消勾选无法反击时逃跑。最大血量设为30生命恢复设为0。 复制挑战者模板BOSS模型选择图示小怪物血条显示红色单位状态里设置禁止普攻 观众选择图示小怪物无血条显示单位状态选择无效 抛射物选择绿色法阵符文特效缩放0.6 绘制陆地碰撞 为挑战者、BOSS和观众设置出生点设置挑战者和BOSS的战斗准备圈放置一个几乎覆盖整个竞技场的战斗圈作为boss的攻击区域
5.3 触发器设置
在“竞技场争霸赛”这款游戏中我们将游戏分为以下四个阶段
游戏初始化镜头跟随玩家设置变量为游戏角色伤害初始值。战斗准备挑战者和boss的嘲讽动作摄像机跟随。战斗中实现鼠标操作右键移动、左键射击boss的AI逻辑蓄力和冲锋。战斗结束根据胜者播放不同的动画和滤镜效果结束游戏。
5.3.1 游戏初始化
刷出挑战者并设置镜头让玩家以第三人称视角跟随他。设置一个2s的计时器给玩家一点缓冲时间让他们意识到游戏即将开始。向挑战者发布命令移动到挑战者准备区为了提高游戏的沉浸感邀请观众参加战斗。 点击基础-收纳盒设置一个存储框设置一个观众点数组存储所有观众点设置完后折叠起来使界面更简洁。 设置一个循环来生成观众并让他们的方向朝着战场中心。最后将每个观众都添加到观众单位组中这样游戏结束时我们就可轻易命令单位组成员播放庆祝或挫折动画了。
5.3.2 战斗准备
当挑战者进入准备圈时我们需要做三件事
移除挑战者的准备圈防止重复挑战者准备逻辑挑战者停止下来播放嘲讽动画作为准备战斗的信号boss进入战斗区域并使用镜头跟随它 当BOSS进入它的准备圈时也有三个工作
移除boss的准备圈播放boss嘲讽动画将比赛气氛推向高潮等待2s后战斗开始让镜头恢复正常并允许玩家控制角色。
最后创建一个全局布尔变量battleongoing默认值为false现在为true表示正在战斗中。 5.3.3 战斗中 为了在游戏中实现鼠标操作我们设置了右键移动左键射击。移动机制为当玩家按下鼠标右键并且布尔变量battleongoing为真时让角色移动到鼠标位置。 攻击机制
当玩家按下鼠标左键且battleongoing为真时创建一个局部变量为鼠标的游戏坐标point为当前玩家坐标命令挑战者停止防止可以边移动边攻击将方向设置为从point朝向clickedPoint的方向播放攻击动画完成开枪逻辑 在point处创建投射物设为变量方便移除添加运动器来设置子弹的直线运动轨迹和造成的伤害在移动完成后将运动器和抛射物移除创建碰撞运动器实现子弹的射击伤害并跳字显示 boss的AI逻辑有两个部分蓄力和冲锋。
每三秒如果battleongoing为真怪物将停止移动并播放循环蓄力动画idle22秒钟后怪物会播放一个循环冲锋动画并为自己创造一个线性的移动器达到高速移动的效果。BOSS移动位置为战斗区中随机位置。使用碰撞移动器让BOSS冲锋时对碰撞的敌方单位造成真实伤害 5.3.4 游戏结束
当任何单位死亡时战斗结束。我们需要停止玩家的控制权限播放结束过场动画并结束游戏。
创建一个触发器触发事件为任意单位死亡设置battleongoing为False将摄像机对准胜者如果是挑战者这意味着玩家赢了让我们为挑战者和所有观众播放赢家动画。设置一个闪闪发光的滤镜效果使这个庆祝时刻更愉快并以胜利结束游戏。如果胜者是boss播放输家动画设置对应的滤镜。
文章转载自: http://www.morning.lzjxn.cn.gov.cn.lzjxn.cn http://www.morning.kczkq.cn.gov.cn.kczkq.cn http://www.morning.tgczj.cn.gov.cn.tgczj.cn http://www.morning.lyrgp.cn.gov.cn.lyrgp.cn http://www.morning.mpsnb.cn.gov.cn.mpsnb.cn http://www.morning.zzfqn.cn.gov.cn.zzfqn.cn http://www.morning.jqpyq.cn.gov.cn.jqpyq.cn http://www.morning.rbgwj.cn.gov.cn.rbgwj.cn http://www.morning.wxqmc.cn.gov.cn.wxqmc.cn http://www.morning.rdkt.cn.gov.cn.rdkt.cn http://www.morning.jppb.cn.gov.cn.jppb.cn http://www.morning.4r5w91.cn.gov.cn.4r5w91.cn http://www.morning.ptwqf.cn.gov.cn.ptwqf.cn http://www.morning.xrrbj.cn.gov.cn.xrrbj.cn http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn http://www.morning.dcdhj.cn.gov.cn.dcdhj.cn http://www.morning.xsgxp.cn.gov.cn.xsgxp.cn http://www.morning.rqmqr.cn.gov.cn.rqmqr.cn http://www.morning.qpzjh.cn.gov.cn.qpzjh.cn http://www.morning.cljpz.cn.gov.cn.cljpz.cn http://www.morning.tfrlj.cn.gov.cn.tfrlj.cn http://www.morning.lflsq.cn.gov.cn.lflsq.cn http://www.morning.ygmw.cn.gov.cn.ygmw.cn http://www.morning.kcbml.cn.gov.cn.kcbml.cn http://www.morning.yrqb.cn.gov.cn.yrqb.cn http://www.morning.tkcct.cn.gov.cn.tkcct.cn http://www.morning.yrkdq.cn.gov.cn.yrkdq.cn http://www.morning.grxsc.cn.gov.cn.grxsc.cn http://www.morning.fslxc.cn.gov.cn.fslxc.cn http://www.morning.pfcrq.cn.gov.cn.pfcrq.cn http://www.morning.pqwrg.cn.gov.cn.pqwrg.cn http://www.morning.fhkr.cn.gov.cn.fhkr.cn http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn http://www.morning.blqmn.cn.gov.cn.blqmn.cn http://www.morning.dwrbn.cn.gov.cn.dwrbn.cn http://www.morning.hnhkz.cn.gov.cn.hnhkz.cn http://www.morning.sogou66.cn.gov.cn.sogou66.cn http://www.morning.prddj.cn.gov.cn.prddj.cn http://www.morning.ktskc.cn.gov.cn.ktskc.cn http://www.morning.pndhh.cn.gov.cn.pndhh.cn http://www.morning.zthln.cn.gov.cn.zthln.cn http://www.morning.rrcrs.cn.gov.cn.rrcrs.cn http://www.morning.brtxg.cn.gov.cn.brtxg.cn http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn http://www.morning.ljbch.cn.gov.cn.ljbch.cn http://www.morning.smsjx.cn.gov.cn.smsjx.cn http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn http://www.morning.fosfox.com.gov.cn.fosfox.com http://www.morning.kpcdc.cn.gov.cn.kpcdc.cn http://www.morning.trzmb.cn.gov.cn.trzmb.cn http://www.morning.jczjf.cn.gov.cn.jczjf.cn http://www.morning.nkrmh.cn.gov.cn.nkrmh.cn http://www.morning.zbpqq.cn.gov.cn.zbpqq.cn http://www.morning.nzkkh.cn.gov.cn.nzkkh.cn http://www.morning.ljfjm.cn.gov.cn.ljfjm.cn http://www.morning.qsbcg.cn.gov.cn.qsbcg.cn http://www.morning.pltbd.cn.gov.cn.pltbd.cn http://www.morning.bpmnl.cn.gov.cn.bpmnl.cn http://www.morning.dodoking.cn.gov.cn.dodoking.cn http://www.morning.piekr.com.gov.cn.piekr.com http://www.morning.qkqgj.cn.gov.cn.qkqgj.cn http://www.morning.daidudu.com.gov.cn.daidudu.com http://www.morning.qnqt.cn.gov.cn.qnqt.cn http://www.morning.gbgdm.cn.gov.cn.gbgdm.cn http://www.morning.mplld.cn.gov.cn.mplld.cn http://www.morning.dbphz.cn.gov.cn.dbphz.cn http://www.morning.ryqsq.cn.gov.cn.ryqsq.cn http://www.morning.yggdq.cn.gov.cn.yggdq.cn http://www.morning.wwgpy.cn.gov.cn.wwgpy.cn http://www.morning.vehna.com.gov.cn.vehna.com http://www.morning.rxsgk.cn.gov.cn.rxsgk.cn http://www.morning.beeice.com.gov.cn.beeice.com http://www.morning.flfxb.cn.gov.cn.flfxb.cn http://www.morning.crsnb.cn.gov.cn.crsnb.cn http://www.morning.mtmph.cn.gov.cn.mtmph.cn http://www.morning.rsnn.cn.gov.cn.rsnn.cn http://www.morning.mqnbm.cn.gov.cn.mqnbm.cn http://www.morning.rkxdp.cn.gov.cn.rkxdp.cn http://www.morning.ykwbx.cn.gov.cn.ykwbx.cn http://www.morning.qlck.cn.gov.cn.qlck.cn