当前位置: 首页 > news >正文

百度站长平台h5网站自学做网站可以嘛

百度站长平台h5网站,自学做网站可以嘛,怎么做审核网站,石家庄新闻头条新闻文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 函数库与触发器复用 二、触发器的多层结构2.1 子触发器#xff08;在游戏内对新的事件进行注册#xff09;2.2 触发器变量作用域2.3 复合条件2.4 循环2.5 计时器2.6… 文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 函数库与触发器复用 二、触发器的多层结构2.1 子触发器在游戏内对新的事件进行注册2.2 触发器变量作用域2.3 复合条件2.4 循环2.5 计时器2.6 单位组2.7 玩家组2.8 运动器 三、案例3.1 NPC对话3.2 装备限制3.2.1 装备拾取3.2.2 物品丢弃 3.3 特效3.3.1 特效生成3.3.2 特效销毁 3.4 行为树3.5 使用排行榜3.6 特效可见性3.7 不同步问题3.7.1 本地配置不同步日志环境3.7.2 线上游戏不同步定位3.7.2 定位不同步问题3.7.3 游戏不同步的原因 Y3编辑器文档1编辑器简介及菜单栏详解文件、编辑、窗口、细节、调试Y3编辑器文档2场景编辑地形编辑、物件放置Y3编辑器文档3物体编辑器Y3编辑器文档4触发器1对话、装备、特效、行为树、排行榜、不同步问题 一、触发器简介 参考官方文档《触发器》 触发器是Y3编辑器中实现游戏逻辑的核心组件它通过“事件-条件-动作”Event-Condition-Action简称ECA的模式来实现各种效果。 事件Event触发器的导火索当设定的事件发生时触发器才会执行。条件Condition触发执行必须满足的条件。动作Action触发执行的结果。 1.1 触发器界面 通过主界面顶部功能栏或使用快捷键F4可进入触发器。进入触发器窗口后你可以添加或删除文件夹和触发器并使用搜索功能快速找到你想找的触发器还可以对选定的触发器进行以下操作 复制, 剪切, 粘贴, 删除, 重命名, 禁用, 和转化成Lua代码。 右键单击触发器并选择禁用使其无效。单击启用以重新激活无效的触发器 你可以在变量管理与事件管理中提前写入常用的变量和事件以便在游戏中随时调用从而减少开发项目的记忆成本和后期维护成本。比如可以提前设置事件并添加事件中需要的参数然后在触发器-自定义事件中进行调用。   在主界面-编辑-通用设置-编辑设置中勾选“缩略图滚动条”可以显示ECA缩略图滚动条。左键点击可以定位到想要的行数长按左键可以拖动滚动条。错误、点选与搜索结果也会以色块形式显示到普通滚动条上。缩略图可以收起收起后需要重新在“主界面-编辑-通用设置-编辑设置”打开。 1.2 ECA语句编辑及快捷键 点击事件/条件/动作后面的为当前部分新建语句也可以在空白处点击鼠标右键新建事件条件动作子触发器与注释。如果想要更改已有的事件条件或者动作双击对应语句即可弹出选项窗口选择新的内容后即可进行覆盖。 功能快捷键说明新建触发器Ctrl T新生子触发器Ctrl Q新建事件Ctrl E新建条件Ctrl D新建动作Ctrl R新建注释Ctrl NECA注释开关Ctrl M将当前语句转为注释设为无效Ctrl W使触发器文件或eca条目无效被跳过条目下移Ctrl ↓快速将当前选中的eca下移一行条目上移Ctrl ↑快速将当前选中的eca上移一行新建收纳盒Ctrl P添加至收纳盒Ctrl O添加当前选中eca到收纳盒变量引用查看A全局元素引用查看S跳转到函数D 功能快捷键说明查看上一个触发器Ctrl ←查看下一个触发器Ctrl →搜索框Ctrl F跳转到物编器Ctrl J切换到触发器Ctrl 1切换到函数库Ctrl 2切换到触发总览Ctrl 3跳转F3复制参数Shift C右键单击参数使用。复制时整个参数的值和类型都将被复制到剪贴板上粘贴参数Shift V右键单击参数使用复制的参数类型与目标参数类型必须相同 1.3 参数设置 未赋值的参数会以红色显示已赋值的参数会以填入的数据类型分配颜色可选的参数则在次级菜单中选用额外的选项会以蓝色显示文本信息说明了当前触发器语句的含义。需要指定所有的必选参数本条动作以及所在的触发器才能正常运行。 参数有以下几种类型 预设对象当参数类型为可以放置在场景中的对象时 单位装饰物体特效等可以直接选择该预设对象作为参数。 数值你可以直接将一个固定的数字、文本或布尔值赋给一个参数变量包括全局变量和局部变量函数一组官方打包的获取数据的动作可以直接提供对应的返回值。 通用用于设置 自定义值 和调用表格编辑器。   当您单击转换为变量时会在当前语句之前创建一个变量赋值语句将当前语句结果赋值给一个变量。转换为变量后您可以单击取消变量转换以恢复到之前的状态。 1.4 变量设置 你可以通过触发器界面设置变量或通过ECA选择界面设置变量。 变量在创建时需要声明其类型部分变量类型必须设置默认值。 非对象型变量字符串、浮点数、整数、布尔值对象型变量单位、单位组、玩家组、单位命令 变量根据作用域类型分为全局变量和局部变量。 全局变量可以在本项目内的任何触发器中读取和写入。局部变量只能在当前触发器中生效。 数组是相同数据类型的集合数组中的每个元素都在其基本值上添加了一个索引使我们在数组中更容易找到和访问它们。整数、单位、实体、单位名字、物品实体等变量都可以设置为数组。比如下面代码设为按下H键之后在Boss周围召唤6个黑暗守卫使用数组guards实现。 变量只能用于储存数据的媒介并不会实时更新任何对变量的操作都需要使用赋值动作进行实现。请不要忘记在触发器中编写更新变量的语句。例如在游戏运行的时候设置变量“玩家人数”为65分钟后有一位玩家退出游戏此时游戏中玩家人数为5如果没有编写变量更新语句那么变量“玩家人数”依然为6。你需要编写能表达“在玩家退出游戏的时候玩家人数减1”的逻辑。 1.5 实体触发器 在物体编辑器-触发器中可进行实体的逻辑编写即为实体触发器其优势在于它可以更简单地将逻辑和目标物体绑定而与其他摆件无关所以可以减少性能的消耗。实体触发器的编辑与上述触发器操作一致一个摆件也可以设置多条触发。 1.6 函数库与触发器复用 你可以将自己常用的触发器语句/功能模块添加到函数库接着就可以在触发器中找到该函数语句进行重用。与触发器的操作逻辑相同在左侧创建函数后在右侧编辑功能库函数。 初始化玩家技能槽位 函数描述定义了函数在操作列表中的显示方式。 函数描述包括以下内容 名称要生成的触发器语句的名称。说明要生成的触发器语句的内容和格式。注意事项当前函数的说明。 函数体包括以下内容 参数定义了该函数的输入数据可设置参数类型如定时器、单位和整数。返回值定义了函数执行后返回的结果输出数据。你可以点击 来设置返回值的名称和类型以方便触发器的后续调用。动作显示了函数的具体行动逻辑 在触发器中选择想要复制的触发进行复制这条触发器的源代码内容会写入到粘贴板中此时可以在记事本等文本文件中进行本地粘贴保存或者在新项目的触发器界面选择右键粘贴CtrlV)。 二、触发器的多层结构 2.1 子触发器在游戏内对新的事件进行注册 触发器具有一个事件这个事件是通过一个注册来实现的即对一个事件进行注册从而让系统在对应的事件触发时能继续按照条件与动作顺序执行。全局触发器是在游戏初始化时就注册完成的如果要在游戏内对新的事件进行注册实现更复杂的游戏逻辑就需要通过子触发器来实现。 子触发器是在触发器的“动作”中创建的用于在游戏进程中对新的事件进行注册注册后会独立运行按ECA的逻辑执行。子触发器是一种变量类型可以返回这个触发器实例以方便在使用完毕后销毁它如果需要的话。因为是游戏进程中注册所以我们可以把变量中的数据传递给子触发器进行注册。 下面是一个简单的示例使用子触发器将单位关羽移动到相应的点。 2.2 触发器变量作用域 作用域是指变量在程序中被定义后可以被访问的范围它决定了变量的可见性和生命周期。全局变量可以在任何触发器及其子触发器的范围内有效局部变量可以在当前触发器及其子触发器的范围内有效子触发器局部变量只能在当前子触发器的范围内有效。作用域的存在可以防止变量命名冲突提供封装和隔离性提高程序的可靠性和可维护性。 局部作用域中的变量优先级更高。比如在子触发器中定义了一个局部变量这个变量与全局变量或者外部作用域中的变量另外一个触发器中定义的变量同名时子触发器内部只能访问和修改这个局部变量其余两个同名变量被隐藏无法直接访问或修改。所以说作用域机制提供了一定程度的隔离可以防止子触发器意外修改外部变量从而避免潜在的错误和不可预测的行为保持代码的清晰和可维护性。 根据作用域划分触发器中的变量可以分为全局变量、函数局部变量、触发局部变量、子触发器局部变量和组变量。根据类型划分可以分为对象型变量如单位、单位组、玩家组、单位命令和非对象型变量如字符串、实数、整数、布尔值。 子触发器内部对于赋值运算非单位类型局部变量的修改只会在子触发器内部生效不会影响外部但是对对象型变量如单位组、玩家组等的操作以及对单位属性的修改会同步影响到外部。这种设计有助于在保持局部变量隔离性的同时允许对共享资源进行必要的修改单位对象是一个全局可访问的对象。 下面使用全局字符串、全局单位类型、局部字符串、局部单位类型全局单位组、局部单位组这6个变量进行测试。 先打印每个类型的初始值 [Info]: 全局字符串AAA [Info]: 全局单位类型UnitName:134219749张飞) [Info]: 局部字符串BBB [Info]: 局部单位类型UnitName:134274912(关羽)[Info]: 全局单位组中单位数量1 [Info]: 局部单位组中单位数量1通过子触发器修改这4个变量的值并打印 [Info]: 全局字符串CCC [Info]: 全局单位类型UnitName:134220068(大乔) [Info]: 局部字符串DDD [Info]: 局部单位类型UnitName:134257382(小乔)[Info]: 全局单位组中单位数量2 [Info]: 局部单位组中单位数量2通过其他子触发器再次打印变量的值 [Info): 全局字符串CCC [Info): 全局单位类型UnitName:134220068(大乔) [Info]: 局部字符串BBB [Info): 局部单位类型UnitName:134274912(关羽)[Info]: 全局单位组中单位数量2 [Info]: 局部单位组中单位数量22.3 复合条件 if流程语句的结构如下条件可以是取反not语句、所有条件成立and语句、任意条件语句or语句或者所有条件不成立。 所有条件成立A和B都等于1 则单位会移动到指定的点 任意条件成立A和B有一个等于1则单位会移动到指定的点。 所有条件不成立整数A 和整数B 都不等于 1则单位会移动到指定的点。 如果A等于1则单位会移动到指定的点A否则会移动到点B。 2.4 循环 循环是指重复执行某项动作。在Y3编辑器中循环有三种类型 指定次数或指定整数变量重复执行这是最常用的循环触发方式例如设定NPC敲门三次动作会重复三次后自动停止。 条件成立重复执行在条件满足的情况下进行无限次的循环直到条件不再满足。例如如果条件是门关着就敲门那么敲门动作会一直重复直到门开了才会停止。 遍历数组变量循环根据数组的索引数字对数组中的每个单位重复执行动作。例如有一个不同门的列表NPC会按照顺序敲门直到所有门都被敲过。 下面是《触发器2循环》中的例子通过第一种循环实现在BOSS周围出现6个次元种子的效果。 2.5 计时器 计时器就好比一个沙漏在计时结束后开始执行某项动作。我们可以用计时器来处理和时间有关的游戏逻辑。在编辑器中计时器一共有三种 运行单次计时器计时器运行一次后开始执行动作。例如倒数三秒后约翰的门就会打开。运行循环计时器计时器循环运行每次运行后都会执行动作。例如每隔一秒约翰的门就会打开一次。运行固定次数的计时器计时器中间停留固定时间固定次数的计时器。例如每隔一秒约翰的门就会打开一次一共打开三次。 下面是《触发器计时器》中使用计时器实现一只只次元入侵者每隔2s在“裂缝”处爬出的效果。 注意你可以选择True并立即执行动作或者选择False在2秒后执行第一个动作。 2.6 单位组 单位组是由一个或多个单位组成的集合在单位组中我们能同时对所有的单位或选择某些单位发布命令。合理利用单位组我们可以在游戏制作中节省大量的时间。下面是在《触发器单位组》中使用单位组实现主人公发送特技“次元入侵”入侵者瞬间死伤殆尽的效果。 2.7 玩家组 玩家组是一个包含一个或多个玩家的集合。您可以直接对玩家组中的所有玩家执行操作。例如下面的语句表示在点A创建一个关羽单位并将该单位分配给玩家组BB中的每个玩家单位面向180°角度。 2.8 运动器 运动器可以为单位或者特效等添加运动效果比如沿着直线运动或追踪某一个单位等是制作技能、特效等场景中十分常用的功能。 在Y3编辑器中运动器分为追踪运动器、曲线运动器、直线运动器、环绕运动器对单位、环绕运动器对点。您可以设置运动器的 方向、距离、初始速度和加速度以及一些可选参数。 下面是《触发器运动器》中使用环绕运动器对单位实现电球的环绕和爆炸效果。 在物编器中创建一个自定义投射物Electric ball球形蓝色电流攻击作为环绕的球体设置缩放0.4倍大小勾选循环播放让特效一直播放。设置自定义投射物Explosion蓝色电流冲击波0.3倍缩放作为结束时的爆炸效果。新建电球投射物创建一个投射物变量Electric ball投射物类型选择预设的投射物Electric ball选择在点创建创建的位置点选择探险者所在的点。新建运动器选择运动器-环绕运动器对单位两个参数分别设为变量Electric ball和探险者环绕半径为200角速度为100。在可选参数中添加环绕时间5s和环绕高度100。新建投射物爆破动作在运动完成动作列表下添加动作在探险者所在的点创建投射物Explosion持续时间1s。优化游戏内存销毁投射物Electric ball并移除运动器为单位移除运动器单位选择探险者。 三、案例 3.1 NPC对话 添加“Talk”属性通过物体编辑器给NPC添加自定义属性“Talk”来存储对话内容。 UI设计通过界面编辑器设计聊天UI这包括背景、NPC头像、文本和退出按钮。 3. 显示聊天内容创建一个显示函数参数为“NPC”单位。在函数里创建两个本地变量存储NPC头像的ID和自定义属性“Talk”。然后再创建界面组件“Icon”和“Talk text”并读取这两个变量。这样当你具体调用与某个NPC的对话函数时玩家UI就会出现其头像和文字内容。 统一NPC对话入口 当玩家靠近并点击NPC时程序通过自定义函数统一处理触发事件传递玩家角色和NPC作为参数。函数获取对应NPC的一系列信息参数并显示在聊天界面。设计退出按钮当玩家点击时设置一个布尔值标记为‘true’以关闭界面。另外使用循环计时器检测玩家与NPC的距离如果超过500也会关闭界面。和前面的统一入口的实现逻辑是类似的我们需要把不同的退出方式进行单独处理并最后通知在同一个出口上。 功能优化为了保持界面关闭和显示功能在同一模块下选择一种相对消耗性能的方式即使用一个布尔值类型的变量Switch来控制界面的开启和关闭状态。界面在启动时会循环检测Swich的状态默认状态下Swich为false当玩家点击退出按钮时我们在事件的动作中设置Swich为True。 整体实现当玩家在地图上选择一个单位时如果检测到是NPC则调用函数Z02.一次NPC对话事件并让玩家重新选中玩家角色。只有当玩家与NPC的距离小于400时才启动对话功能否则提示距离过远。 3.2 装备限制 对装备的品类或者数量做限制是RPG类游戏中一个常见的机制例如一个玩家觉得只能携带一把武器和一件装甲比如在FPS游戏中玩家同时只能持有一把枪想要切换到另一把枪就会把当前持有的武器移除掉这些实际上的游戏效果都是装备限制。 3.2.1 装备拾取 当玩家拾取装备时如果玩家单位上没有该类型的装备则会直接进行装备。否则拾取的装备将被直接丢弃系统丢弃不会通知玩家也不会触发任何与玩家丢弃装备相关的游戏事件或流程。 装备数据存储使用自定义值功能为每个装备添加一个type属性用于标识装备的类型。设置一个SystemDiscard标记用于指示某个装备的丢弃是由系统自动处理的而不是玩家的操作。 拾取物品当玩家拾取一个物品时系统会创建两个局部变量分别存储玩家单位和拾取的物品。 逻辑判断 如果玩家单位已经装备了相同type的装备那么新拾取的装备将被系统丢弃。如果玩家单位没有装备相同type的装备玩家将成功获得新装备同时系统会更新玩家持有物品的状态以便后续可以显示相应的特效或其他游戏效果。 以上代码逻辑为 初始化变量设置变量unit为获得物品的单位item为单位获得的物品。 检查物品类型如果item存在自定义键值type则继续执行。 检查玩家是否已装备相同类型的物品 如果玩家单位unit已经存在自定义键值type并且与item的type相同则执行系统丢弃逻辑。如果unit不存在自定义键值type或者type与item的type不同则执行装备逻辑。 系统丢弃逻辑 设置item的自定义键值SystemDiscard为True表示这是一个系统自动处理的丢弃。将item从unit所在位置移除。 装备逻辑 向玩家发送消息告知玩家已经获得了新的物品。更新玩家单位的自定义键值type为item的type。发送自定义事件ProjectCreation参数为unit和item用于可能的特效或其他逻辑的触发。 3.2.2 物品丢弃 与拾取物品类似当一个单位丢弃物品时先使用局部变量对参数进行缓存然后执行判断 玩家丢弃如果物品被判断是玩家手动抛弃获取物品type清空单位对应自定义值项这个清空的动作会导致特效结构检测到数据清空从而触发特效的销毁。系统丢弃如果该物品被检测为系统丢弃则跳过整个流程当做无事发生系统丢弃是静默的不会通知玩家不更新玩家状态因此不会有新的特效或其他游戏效果被激活。 以上代码逻辑为 初始化变量设置变量unit为失去物品的单位item为单位失去的物品。 检查物品类型如果item存在自定义键值type则继续执行。否则发送调试信息“丢弃的物品无类型” 检查是否为系统丢弃 如果item的自定义键值SystemDiscard为False则执行玩家丢弃逻辑。如果为True则表示这是一个系统自动处理的丢弃不执行任何操作。 玩家丢弃逻辑 设置type为item的自定义键值type在玩家丢弃装备的过程中临时存储装备的类型信息以便在后续的逻辑中使用这个信息来更新玩家状态、触发相关逻辑或发送消息等删除unit的自定义键值type表示玩家已经失去了这个类型的装备。向玩家发送消息告知玩家已经丢弃了物品。 系统丢弃逻辑 删除item的自定义键值SystemDiscard重置物品的状态这样如果物品再次被拾取或处理系统可以重新判断其状态而不是基于之前的标记。向玩家发送调试消息“丢弃的物品为系统丢弃” 3.3 特效 想要为一个已有的事件附加另一个效果可以使用自定义事件功能比如在获得新装备后可以发送一个自定义事件来激活对应的特效功能。 3.3.1 特效生成 通过发送和接收自定义事件来传输信息实现特效的激活 武器特效武器特效是直接绑定在角色手部的拖尾所以我们只需要直接将对应的特效路径以自定义值的形式保存在物品上就可以用同一个函数启用所有的武器特效。 护甲特效由多个特效组合而成需要一个函数来不断生成和销毁这些特效。 特效分敛根据自定义事件传递的物品和type参数分敛到不同类型的特效创建函数执行对应的效果。 如果自定义事件ProjectCreation被触发则根据物品类型通知不同的特效生成机制 如果自定义事件参数item的物品类型等于“寒冰剑”或“闪电发生器”则设置变量projectType为物品的projectType并为事件单位unit的物品item生成特效projectType。如果item的物品类型等于“冰霜斗篷”则为事件单位unit的物品item生成盔甲01特效如果item的物品类型等于“地精的护服”则为事件单位unit的物品item生成盔甲02特效 3.3.2 特效销毁 在函数库中我们新建三个函数分别是武器盔甲1和盔甲2来分别执行武器和盔甲的特效创建和销毁过程。 对于武器特效功能是在单位的节点添加一个拖尾特效projectType同时启动一个循环计时器定期检查玩家是否仍然持有该武器。如果玩家更换或丢弃了武器特效将被移除并对所有结构进行销毁。 定义了一个名为“X01: 生成武器特效”的函数该函数接收三个参数unit单位item物品projectType特效类型。为单位添加魔法效果projectType并将此创建魔法效果赋值给变量project方便后续删除设置变量type为item的type启动循环计时器每隔一秒检测一次检测unit的type是否等于item。是则继续否则删除计时器和project。 盔甲1的特效显示逻辑和武器特效类似也是每秒检测一次。不同的是盔甲的特效将在每秒计时器到时后立即生成并在两秒后将其销毁。 为了显示盔甲2的特殊效果我们为单位创建了两个投射物并使用局部变量进行储存。 角度为了实现球体的环绕效果我们需要定义一个角度这个角度将会每帧进行递增以实现帧叠加以后的球体圆周运动。 检测使用一个帧计时器0.03秒来检测装备是否还在被装备如果它被丢弃对所有结构进行销毁否则继续执行循环当程序一直持续循环运行球体的角度会在每一帧减去6并根据一个固定的距离以角色位置为圆心通过极坐标系确定本帧投射物该在的位置。 函数定义定义了一个名为X03: 生成护甲2特效的函数接收两个参数unit单位和item物品。 变量初始化 type变量被设置为item的type属性用于区分不同类型的装备。int变量被初始化为0可能用于控制特效的生成或更新。angle01和angle02变量被初始化为90.0和270.0用于确定特效的初始位置。在单位的位置创建两个护甲特效分别命名为project[1]和project[2]。 循环计时器创建一个循环计时器每0.03秒执行一次用于更新特效的位置。 如果单位装备了“地精的护服”则继续执行循环否则销毁所有特效。 更新特效位置 angle01和angle02变量用于控制特效的旋转角度每帧都会变化。根据旋转角度更新两个特效project[1]和project[2]的位置point1和point2.。设置变量int每帧加1然后进行条件判断 如果int 1在point2创建特效project[3]如果2 ≤ int ≤ 13持续更新特效project[3]的位置点point2。如果int 60重置int 0 总的逻辑是每帧检测一次如果依旧装备“地精的护服”创建两个特效project[1]和project[2]环绕其持有角色然后每一秒的前13帧在project[2]的位置同时创建和更新特效project[3]。 3.4 行为树 行为树即是用树状结构分支使AI能根据条件执行不同行为如走、跑、跳、攻击让单位通过模拟真实玩家的行动而拥有“智能”行为增强玩家的参与感例如PVE的敌人BOSS的战斗模式玩家召唤物等。 初始化行为树初始化前需要创建一个全局变量比如unitPlayer来存储玩家角色创建一个全局变量单位组来存储敌方单位。通过动作“玩家-选择单位”让玩家选中自己的主控单位。为了更沉浸的游玩体验使用“镜头 - 跟随单位”功能让玩家的视角能始终跟随在自己的英雄上。 行为树分敛 游戏初始化结束游戏开始0.1秒后每隔1秒遍历一次地方单位组每次遍历所有单位根据地方单位类型近卫和治疗者对其应用对应的行为树。判断完单位类型后通过自定义事件传递单位参数来实现行为树的分发。参数必须是变量不支持数组。比如行为树是针对某单位执行那么就需要将单位作为参数传递出去。 实现守卫AI 新建一个单位类型局部变量unit存储通过“自定义事件AI_Guard”发送过来的单位。新建一个实数类型局部变量distance用于储存敌人和治疗者之间的距离通过判断distance是否小于300来判断治疗者是否安全。 如果治疗者不安全距离小于300则给单位unit向玩家角色unitPlayer发出一个攻击指令。如果治疗者安全判断守卫自身HP低于50%则移动至治疗者给单位unit向unitHealer发出一个移动指令。如果守卫安全检查警戒区域内是否有敌人有则攻击无则巡逻。 实现治疗者AI新建一个单位类型局部变量unit存储通过“自定义事件AI_Healer”发送过来的单位。优先保障自身安全满HP自己的HP是否等于其MaxHP则治疗友军中HP最低的单位如果有的话没有需要治疗的单位则进行攻击。 使用一个函数获取当前最需要治疗的友军。 新建局部变量Temp百分比格式初始化为1和unit单位类型分别存储单位组中最低的HP百分比及遍历到的单位。逐一将unit血量和Temp对比如果unit血量更低则将Temp更新为这个值。当遍历完全以后我们就获取到了单位组中HP百分比最低的那一个单位。返回HP百分比最低的那一个单位 如果HP百分比最低单位为空友军都是满血判断自己身边是否有敌人如果有就使用飞弹攻击它没有则在警戒区域的中心不动以方便巡逻的守卫保护自己。如果有HP百分比最低的单位则停止当前的动作这里并非使用‘技能’来实现治疗所以为了防止治疗者边攻击边治疗需要先停止攻击动作并对其进行治疗。为了让这种动作更具真实感我们可以播放对应的动画动作并为治疗效果添加一个特效。 3.5 使用排行榜 点击主界面【细节】-【存档设置】打开存档槽设置 点击加号创建一个新的存档槽并修改存档槽数据类型为整数 选择确认计入排行榜这个存档槽位就变成了排行榜存档。可以选择排行榜排序规则升序降序与排行榜最大人数。 使用以下eca可以获取排行榜上所有玩家的存档值配合界面eca让排行榜在界面显示。玩家-整数型增量存档eca可以让整数类型存档保持只增效果。 排行榜数据在游戏启动后不会再刷新使用双槽位可以实现周排行榜。 创建两个整数类型存档槽位A与BA存储第一周所有玩家的排行榜数据 当一周结束时通过时间戳判断使用B榜存储玩家在第二周的排行数据 在第二周开始时通过ECA清除玩家A槽位数据以备第三周存储玩家排行数据。需通过在作者之家清除A榜数据权限需找运营申请。 当第二周结束时将玩家排行榜数据存储在A榜并清除B槽位数据循环往复 3.6 特效可见性 特效默认为全玩家可见可通过ECA控制特效可见性。 通过“玩家”列表操作实现对某个玩家的特效显示/屏蔽通过“玩家组”列表操作实现对某个玩家组的特效显示/屏蔽比如某玩家的所有同盟玩家某玩家的所有敌对玩家等等 3.7 不同步问题 参考《不同步相关》 3.7.1 本地配置不同步日志环境 用户由于使用ECA不当频繁出现游戏逻辑不同步的问题会影响游戏正常运行。此时可通过在本地多开测试来进行调试。在【通用设置-调试】打开本地多开同步检测。 使用Lua文件配置更详细的不同步日志打开地图路径下Script文件夹下的main.lua文件在lua文件中配置不同步日志相关API GameAPI.api_set_enable_detail_snapshot(true) GameAPI.api_set_detail_snapshot_enable_tag(0xfffffff) GameAPI.api_set_enable_eca_snapshot(true) GameAPI.api_set_snapshot_traceback_level(2)配置完毕后本地多开运行游戏。如遇游戏逻辑不同步会有弹窗提示并在本地生成不同步日志以供用户定位不同步问题。 不同步日志Lua配置API说明 API描述参数返回值api_set_enable_detail_snapshot控制不同步日志记录的总开关。关闭后其他设置接口将不生效但可以提升性能。enable(bool)是否开启默认为false无api_set_snapshot_traceback_level设置日志堆栈记录详细等级默认0不记录1仅记录最近一层堆栈2记录完整堆栈数据压缩3记录完整日志不压缩数据量稍大记录越完整越有利于定位问题但开销增大level(int32)堆栈记录等级默认值为0无api_set_enable_timer_snapshot开启或关闭计时器不同步检测日志检测额外创建的ECA计时器但计时器不一致并不一定意味着游戏内容不同步。enable(bool)默认值为false无api_set_enable_eca_snapshot开启或关闭ECA不同步检测日志开销较高。可通过参数过滤掉一些安全的API以防止误报例如创建特效、UI操作等enable(bool)默认值为false无filter_mode(int32)过滤模式默认为11剔除模式不记录filter_set中指定的api0包含模式仅记录filter_set中指定的apifilter_set(table)过滤集合默认为client_only,client_possible可传入想要剔除/包含的API取决于上个参数如GameAPIprint_to_dialog,“GameAPIget_function_return_value。”api_set_detail_snapshot_enable_tag设置不同步详细日志级别。越详细越利于定位不同步产生点但性能消耗会增高tag(UInt64)控制开启哪些日志的mask 1运动器tick2运动器碰撞检测4寻路回调8寻路坐标更新16血量变化32坐标瞬变0xFFFFFFFF全部开启默认开启1632无add_detail_log记录自定义日志log(string)日志内容bool值恒定为true 3.7.2 线上游戏不同步定位 在本地配置不同步日志环境 打开地图路径下Script文件夹下的main.lua文件在lua文件中配置不同步日志相关API这样线上游戏发生不同步时根据配置API玩家客户端会自动上传日志。例如 GameAPI.api_set_enable_detail_snapshot(true) GameAPI.api_set_detail_snapshot_enable_tag(0xfffffff) GameAPI.api_set_enable_eca_snapshot(true) GameAPI.api_set_snapshot_traceback_level(2)下载不同步日志 使用KK账号登录编辑器打开任意地图点击【菜单栏】【调试】【查看不同步日志】查看线上游戏的不同步日志。 查找需要定位问题的对局下载不同步日志不同步日志包含对局中所有玩家的对战信息。 3.7.2 定位不同步问题 不同步日志文件中包含的是出现不同步情况的帧信息通过对比玩家日志差异可以大致定位到问题所在。打开不同步日志文件夹使用第三方文本对比工具进行对比推荐使用BeyondCompare。比如在main.lua文件中进行了如下配置 GameAPI.api_set_enable_detail_snapshot(true); GameAPI.api_set_enable_timer_snapshot(true);打开不同步日志查看逐帧信息 将多名玩家日志成对拖放到beyondcompare中进行对比发现玩家2比玩家1多了一个timer   通过对不同步信息附近的帧信息进行理解可大致定位问题为某个客户端上多了一个循环计时器在项目中进行查找可能的问题所在。 3.7.3 游戏不同步的原因 本地值 在单个客户端即单个玩家的设备上有效的数据比如界面显示、特效、镜头位置、声音等这些数据在不同的客户端之间不需要同步因为它们只影响单个玩家的体验。任意值与【本地值】进行逻辑运算后得到的值等价于【本地值】动作类ECA中修改【本地值】不会影响游戏的全局逻辑因此不会影响游戏的同步性。 本地操作针对本地值的操作如【获取本地玩家】、【获取本地控件坐标】、【获取镜头焦点】、【获取滑动条当前值】等这些获取本地值的ECA函数在不同客户端得到的结果也是不同的。全局值在所有客户端之间需要保持一致的值比如单位、技能、物品等。这些值的一致性对于游戏的公平性和逻辑一致性至关重要。全局操作针对全局值的操作比如修改单位的状态、技能的效果、物品的数量等。这些操作会影响游戏的全局逻辑因此需要确保在所有客户端上都能正确同步。 导致游戏逻辑不同步的一个重要原因就是将【本地值】作为参数传递到【全局操作】中或者是使用【本地值】进行逻辑判断后进行【全局操作】。这会导致不同客户端执行不同的逻辑最终导致不同客户端上【全局值】不同即游戏逻辑不同步。更多内容详见文档多人联机同步机制。
http://www.w-s-a.com/news/845851/

相关文章:

  • 阿雷网站建设wordpress lucene
  • seo做多个网站建筑公司企业标语
  • 各大网站收录查询汕尾手机网站设计
  • 东莞网站平台费用58同城推广能免费做网站吗
  • 网站建设的组织机构做博客网站赚钱吗
  • 移动网站建设的前期规划内容南阳网站备案
  • 天津公司网站建设公司哪家好网站建设评估
  • 猪八戒网网站建设wordpress建网 打不开
  • 廊坊网站排名优化报价自学网站建设和seo
  • 摄影网站开发背景vs2012做网站
  • 网站建设空间使用标准沈阳网站建设招标公司
  • 网站流量怎么做的成都山而网站建设公司
  • 天河区网站建设公司爱站网排名
  • 怎样开发设计网站建设博物馆网页设计案例
  • 山西建设厅网站查不了seo搜索引擎优化包邮
  • 临沂网站建设价格太原网站优化公司
  • 网页设计基础课程设计搜索引擎优化英文
  • 网站备案号怎么查楼书设计素材网站
  • 网站设计机构有哪些中国建设银行网站登录不上
  • 烟台理工学校网站罗湖建设网站
  • 卑鄙的网站开发公司郑州人才网站
  • 成都专业的网站设计公司文化建设的成就
  • 做书籍封皮的网站如何建网站教程视频
  • 唐山建站公司模板ipfs做网站
  • 贵阳做网站品牌网站模板
  • 紫网站建设我的个人博客
  • 优秀网站菜单网页上的视频怎么下载
  • 龙口建网站公司价格国内的平面设计网站
  • 电子商务网站建设与管理读后感上海市基础工程公司
  • 织梦免费企业网站做网站时,404网页如何指向