一种基于预制体的脚本自动化绑定方法、系统及介质与流程

文档序号:29461734发布日期:2022-04-02 01:42阅读:479来源:国知局
一种基于预制体的脚本自动化绑定方法、系统及介质与流程

1.本发明涉及游戏开发技术领域,特别是涉及一种基于预制体的脚本自动化绑定方法、系统及介质。


背景技术:

2.在游戏开发中,待游戏界面搭建完毕后,需要编写脚本并在脚本中声明变量,同时将变量与预制体中的节点进行绑定,进而实现通过脚本代码来控制游戏界面中的相关属性和动作;现有的脚本绑定方法中,存在如下问题:第一方面,现有的脚本绑定方法较为繁琐,其需要根据脚本变量的相关属性采用不同的绑定方式,例如脚本变量为数组变量时,需要指定数组长度,并将数组中的每一项均进行一次绑定操作,耗时较长,工作量较大;第二方面,在游戏界面进行修改时,存在部分节点需要重新绑定;且在数组中插入节点时,需要将插入位置之后的所有节点全部重新插入,耗时同样较长,且工作量较大;综上所述,现有的脚本绑定方法较为繁琐,其中特殊的绑定操作会消耗大量的时间资源,影响游戏和脚本的开发效率。


技术实现要素:

3.本发明主要解决的是现有的脚本绑定方法较为繁琐,其中特殊的绑定操作会消耗大量的时间资源,影响游戏开发效率和脚本开发效率的问题。
4.为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于预制体的脚本自动化绑定方法,包括以下步骤:初始配置步骤:创建数据配对表,配置脚本模板,获取预制体载入情况,基于所述预制体载入情况设定第一待遍历节点;脚本生成步骤:配置节点处理函数,基于所述数据配对表、所述脚本模板、所述第一待遍历节点和所述节点处理函数生成第一待绑定脚本;脚本绑定步骤:配置creator引擎,基于所述第一待遍历节点、第一待绑定脚本和所述creator引擎执行脚本绑定操作。
5.作为一种改进的方案,所述数据配对表包括:第一属性表和第一点击事件表;所述脚本模板中设置有若干占位符;所述预制体载入情况包括:第一情况和第二情况;所述第一情况为存在已载入的第一预制体;所述第二情况为不存在已载入的第一预制体;所述第一待遍历节点中包含若干第一子节点;所述节点处理函数包括:节点结构识别函数和节点数据填充函数;所述creator引擎中配置有属性绑定接口和事件绑定接口;
所述基于所述预制体载入情况设定第一待遍历节点的步骤进一步包括:当所述预制体载入情况为所述第一情况时,获取节点选取需求;按照所述节点选取需求在所述第一预制体中选取第一节点,设定所述第一节点为所述第一待遍历节点。
6.作为一种改进的方案,所述基于所述数据配对表、所述脚本模板、所述第一待遍历节点和所述节点处理函数生成第一待绑定脚本的步骤进一步包括:设定第一字符位、第二字符位、第一字符结构和第二字符结构;基于所述第一属性表、所述第一点击事件表、所述节点结构识别函数、所述节点数据填充函数、所述第一字符位、所述第二字符位、所述第一字符结构和所述第二字符结构对若干所述第一子节点分别执行节点绑定步骤,得到若干第一键值对和若干第二键值对;调用所述节点数据填充函数将若干所述第一键值对添加至所述第一属性表中,得到第二属性表;调用所述节点数据填充函数将若干所述第二键值对添加至所述第一点击事件表中,得到第二点击事件表;设定第一字符串格式;基于所述脚本模板、所述第二属性表、所述第二点击事件表和所述第一字符串格式执行数据替换步骤,得到所述第一待绑定脚本。
7.作为一种改进的方案,所述节点绑定步骤包括:调用所述节点结构识别函数识别所述第一子节点中对应所述第一字符位的第一结构信息;将所述第一结构信息与所述第一字符结构进行比对;若所述第一结构信息与所述第一字符结构相匹配,则执行第一键值对生成步骤;执行所述第一键值对生成步骤后,调用所述节点结构识别函数识别所述第一子节点中对应所述第二字符位的第二结构信息;将所述第二结构信息与所述第二字符结构相比对;若所述第二结构信息与所述第二字符结构相匹配,则执行第二键值对生成步骤。
8.作为一种改进的方案,所述第一键值对生成步骤包括:调用所述节点结构识别函数识别所述第一子节点的第一名称信息和第一识别码信息;将所述第一名称信息和所述第一识别码信息整合为所述第一键值对;所述第二键值对生成步骤包括:在所述第一子节点上增加第一组件;基于所述第一名称信息设定第一点击事件名称;识别所述第一组件的第二识别码信息;将所述第二识别码信息和所述第一点击事件名称整合为所述第二键值对。
9.作为一种改进的方案,所述数据替换步骤包括:读取所述第二属性表中的若干所述第一键值对以及所述第二点击事件表中的若干所述第二键值对;按照所述第一字符串格式生成与若干所述第一键值对分别匹配的若干第一脚本字符串;按照所述第一字符串格式生成与若干所述第二键值对分别匹配的若干第二脚本字符串;统计若干所述第一脚本字符串的第一数量以及若干所述第二脚本字符串的第二数量;在所述脚本模板的若干所述占位符中按照所述第一数量确认若干第一占位符;在所述脚本模板的若干所述占位符中按照所述第二数量确认若干第二占位符;首先采用若干所述第一脚本字符串分别替换所述脚本模板中的若干所述第一占位符,然后采用若干所述第二脚本字符串分别替换所述脚本模板中的若干所述第二占位符,得到所述第一待绑定脚本。
10.作为一种改进的方案,所述脚本绑定操作包括:
将所述第一待绑定脚本与所述第一待遍历节点绑定;识别所述第一待遍历节点中的若干所述第一子节点;设定若干所述第一子节点中具有所述第一组件的节点为第二子节点;识别所述第一待绑定脚本中若干所述第一键值对所分别对应的若干所述第一名称信息;识别所述第一待绑定脚本中若干所述第二键值对所分别对应的若干所述第一点击事件名称以及若干第二识别码信息;调用所述属性绑定接口按照所述第一键值对中的所述第一识别码信息将若干所述第一子节点分别与所述第一待绑定脚本中的若干所述第一名称信息进行绑定;调用所述事件绑定接口按照所述第二键值对中的所述第二识别码信息将若干所述第一点击事件名称分别添加至若干所述第二子节点的若干所述第一组件的若干第一属性中。
11.作为一种改进的方案,所述第一字符结构为下划线结构;所述第二字符结构为下划线和数据字符串的组合结构;所述数据字符串为btn;所述第一组件为按钮组件;所述第一属性为clickevents属性;所述基于所述数据配对表、所述脚本模板、所述第一待遍历节点和所述节点处理函数生成第一待绑定脚本的步骤进一步还包括:当调用所述节点数据填充函数将若干所述第一键值对添加至所述第一属性表中时,对若干所述第一键值对分别执行校验操作;所述校验操作包括:遍历所述第一属性表中是否存在与所述第一键值对相匹配的第三键值对;若不存在,则将所述第一键值对添加至所述第一属性表中;若存在,则识别所述第一属性表中所述第三键值对的第三识别码信息;将所述第三识别码信息变更为空数组,并将所述第一键值对所对应的所述第一识别码信息添加至所述空数组中。
12.本发明还提供一种基于预制体的脚本自动化绑定系统,包括:初始配置模块、脚本生成模块和脚本绑定模块;所述初始配置模块用于创建数据配对表、配置脚本模板以及获取预制体载入情况,所述初始配置模块基于所述预制体载入情况设定第一待遍历节点;所述脚本生成模块用于配置节点处理函数,所述脚本生成模块基于所述数据配对表、所述脚本模板、所述第一待遍历节点和所述节点处理函数生成第一待绑定脚本;所述脚本绑定模块用于配置creator引擎,所述脚本绑定模块基于所述第一待遍历节点、第一待绑定脚本和所述creator引擎执行脚本绑定操作。
13.本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述基于预制体的脚本自动化绑定方法的步骤。
14.本发明的有益效果是:1、本发明所述的基于预制体的脚本自动化绑定方法,可以实现自动化生成脚本,并自动与对应的cocos预制体中的节点绑定,同时通过本方法生成和绑定的脚本,在面对脚本变量变更时,无需进行重复的绑定操作,节省了极大的脚本绑定时间和生成时间,提高了游戏开发和脚本开发的效率,弥补了现有技术的不足,具有一定的市场价值和应用价值。
15.2、本发明所述的基于预制体的脚本自动化绑定系统,可以通过初始配置模块、脚本生成模块和脚本绑定模块的相互配合,进而实现自动化生成脚本,并自动与对应的cocos
预制体中的节点绑定,同时通过本系统生成和绑定的脚本,在面对脚本变量变更时,无需进行重复的绑定操作,节省了极大的脚本绑定时间和生成时间,提高了游戏开发和脚本开发的效率,弥补了现有技术的不足,具有一定的市场价值和应用价值。
16.3、本发明所述的计算机可读存储介质,可以实现引导初始配置模块、脚本生成模块和脚本绑定模块进行配合,进而实现自动化生成脚本,并自动与对应的cocos预制体中的节点绑定,同时在面对脚本变量变更时,无需进行重复的绑定操作,节省了极大的脚本绑定时间和生成时间,提高了游戏开发和脚本开发的效率,并有效提高所述基于预制体的脚本自动化绑定方法的可操作性。
附图说明
17.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1是本发明实施例1所述基于预制体的脚本自动化绑定方法的流程图;图2是本发明实施例1所述基于预制体的脚本自动化绑定方法的具体流程示意图;图3是本发明实施例2所述基于预制体的脚本自动化绑定系统的架构图。
具体实施方式
19.下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
20.在本发明的描述中,需要说明的是,本发明所描述的实施例是本发明一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
21.在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
22.在本发明的描述中,需要说明的是,本实施例1提供的一种基于预制体的脚本自动化绑定方法,应用于游戏开发过程中;具体的,其应用于游戏界面搭建完成后,cocos预制体节点和脚本绑定操作的相关流程中。
23.在本发明的描述中,需要说明的是:cocos是系统化游戏开发平台;creator是游戏开发引擎。
24.实施例1本实施例提供一种基于预制体的脚本自动化绑定方法,如图1和图2所示,包括以下步骤:s100、初始配置步骤,具体包括:s110、创建数据配对表,配置脚本模板,获取预制体载入情况,基于所述预制体载入情况设定第一待遍历节点;在本实施例中,数据配对表为空表,即待填充的列表;预制体载入情况即为要进行节点绑定的第一预制体的打开情况;第一待遍历节点为第一预制体中需要通过本方法进行绑定脚本的节点;
具体的,所述数据配对表包括:第一属性表和第一点击事件表;第一属性表用于存放代表节点属性的相关数据;第一点击事件表用于存放代表节点相关联功能事件的相关数据;所述脚本模板中设置有若干占位符;若干占位符为在脚本模板中分别固定的待填充位,用于配合后续的脚本生成步骤;所述预制体载入情况包括:第一情况和第二情况;所述第一情况为存在已载入的第一预制体,即存在已打开的第一预制体;所述第二情况为不存在已载入的第一预制体,即不存在已打开的第一预制体;所述第一待遍历节点中包含若干第一子节点;具体的,当所述预制体载入情况为所述第一情况时,获取节点选取需求,节点选取需求即为操作者希望进行绑定的某个节点的相关标识信息;按照所述节点选取需求,即在所述第一预制体中选取与上述标识信息相匹配的第一节点,设定所述第一节点为所述第一待遍历节点。
25.对应的,步骤s100的部分核心javascript代码如下://脚本模板let classtemplete = `cc.class({
ꢀꢀꢀ
extends: cc.component,
ꢀꢀꢀ
properties: {{properties}
ꢀꢀꢀ
},
ꢀꢀꢀ
// life-cycle callbacks:
ꢀꢀꢀ
// onload () {},
ꢀꢀꢀ
start () {
ꢀꢀꢀ
},
ꢀꢀꢀ
// update (dt) {},{clicks}});//节点选取let scriptproperties = {};let scriptclicks = {};let scriptfileuuid;const generatescript = () =》 {
ꢀꢀꢀ
let root = editor.selection.curselection('node')[0];
ꢀꢀꢀ
if (!root) return editor.error('请选中需要生成脚本的节点');
ꢀꢀꢀ
let rootnode = cc.engine.getinstancebyid(root);//初始化表
ꢀꢀꢀ
scriptproperties = {};
ꢀꢀꢀ
scriptclicks = {};scriptfileuuid = '';s200、脚本生成步骤,具体包括:s210、配置节点处理函数,基于所述数据配对表、所述脚本模板、所述第一待遍历
节点和所述节点处理函数生成第一待绑定脚本;在本实施例中,节点处理函数即为采用编程语言所编译的实现相关功能的函数;第一待绑定脚本为准备与步骤s100中第一待遍历节点进行绑定脚本;具体的,所述节点处理函数包括:节点结构识别函数和节点数据填充函数;具体的,设定第一字符位、第二字符位、第一字符结构和第二字符结构;在本实施例中,第一字符位为节点的字符开头;第二字符位为节点的字符开头次位的相关字符位;对应的,第一字符结构下划线结构,在本实施例中为下划线,即“_”;第二字符结构为下划线和数据字符串的组合结构,在本实施例中,数据字符串为btn,即第二字符结构为“_btn”;对应的,故基于所述第一属性表、所述第一点击事件表、所述节点结构识别函数、所述节点数据填充函数、所述第一字符位、所述第二字符位、所述第一字符结构和所述第二字符结构对若干所述第一子节点分别执行节点绑定步骤,得到若干第一键值对和若干第二键值对;调用所述节点数据填充函数将若干所述第一键值对添加至所述第一属性表中,得到第二属性表;调用所述节点数据填充函数将若干所述第二键值对添加至所述第一点击事件表中,得到第二点击事件表;对应的,节点绑定步骤对每个第一子节点均同步执行;第二属性表和第二点击事件表分别为经过节点绑定步骤后的第一属性表和第一点击事件表;设定第一字符串格式;在本实施例中,第一字符串格式为特定的字符串格式,且该第一字符串格式与脚本模板具体所支持和适配的数据格式相匹配,故第一字符串格式具体根据脚本模板的规格进行具体设置;第一字符串格式作为辅助脚本生成的数据结构基础;故基于所述脚本模板、所述第二属性表、所述第二点击事件表和所述第一字符串格式执行数据替换步骤,得到所述第一待绑定脚本。
[0026]
具体的,对每个第一子节点均执行的节点绑定步骤的具体逻辑流程包括:调用所述节点结构识别函数识别所述第一子节点中对应所述第一字符位的第一结构信息;在本实施例中,第一结构信息即为第一子节点的字符开头处的相关字符数据;将所述第一结构信息与所述第一字符结构进行比对;若所述第一结构信息与所述第一字符结构相匹配,即第一子节点的字符开头处的相关字符数据为“_”,则执行第一键值对生成步骤;执行所述第一键值对生成步骤后,还需要判断当前的第一子节点是否存在相关的点击事件,故调用所述节点结构识别函数识别所述第一子节点中对应所述第二字符位的第二结构信息,第二结构信息即为第一子节点的字符开头次位的相关字符位处的相关字符数据;将所述第二结构信息与所述第二字符结构相比对;若所述第二结构信息与所述第二字符结构相匹配,即第一子节点的字符开头次位的相关字符位处的相关字符数据为“_btn”,则执行第二键值对生成步骤;具体的,所述第一键值对生成步骤包括:调用所述节点结构识别函数识别所述第一子节点的第一名称信息和第一识别码信息,在本实施例中,第一名称信息即为当前第一子节点的名称;第一识别码信息即为当前第一子节点的uuid;将所述第一名称信息和所述第一识别码信息整合为所述第一键值对,即将当前第一子节点的名称和当前第一子节点的uuid以key=value的形式进行绑定;具体的,所述第二键值对生成步骤包括:在所述第一子节点上增加第一组件,在本实施例中第一组件为按钮组件;基于所述第一名称信息设定第一点击事件名称,在本实施例中,第一点击事件名称关联该第一子节点的名称进行设定,具体的名称设定规则不做限
定,主要目前为进行索引的区分以及对点击事件的标识;识别所述第一组件的第二识别码信息,第二识别码信息即为该刚刚添加的按钮组件的uuid;将所述第二识别码信息和所述第一点击事件名称整合为所述第二键值对,第二键值对的整合原理与第一键值对的整合原理相同;具体的,经过上述步骤后,可以根据键值对进行脚本模板中占位符的替换,进而生成对应的脚本;具体的,所述数据替换步骤包括:首先,先读取所述第二属性表中的若干所述第一键值对以及所述第二点击事件表中的若干所述第二键值对;然后按照所述第一字符串格式生成与若干所述第一键值对分别匹配的若干第一脚本字符串;按照所述第一字符串格式生成与若干所述第二键值对分别匹配的若干第二脚本字符串;脚本字符串即为可以应用于脚本模板中进行脚本生成的相关字符串;统计若干所述第一脚本字符串的第一数量以及若干所述第二脚本字符串的第二数量;在所述脚本模板的若干所述占位符中按照所述第一数量确认若干第一占位符;在所述脚本模板的若干所述占位符中按照所述第二数量确认若干第二占位符;若干第一占位符分别为若干第一脚本字符串的待填充位置;若干第二占位符分别为若干第二脚本字符串的待填充位置;故首先采用若干所述第一脚本字符串分别替换所述待填充模板中的若干所述第一占位符,然后采用若干所述第二脚本字符串分别替换所述待填充模板中的若干所述第二占位符,得到所述第一待绑定脚本;对应的,在本步骤中,当调用所述节点数据填充函数将若干所述第一键值对添加至所述第一属性表中时,需要对若干所述第一键值对分别执行校验操作;即需要遍历所述第一属性表中是否存在若干所述第一键值对;具体的,所述校验操作包括:遍历所述第一属性表中是否存在与所述第一键值对相匹配的第三键值对;若不存在,则将所述第一键值对添加至所述第一属性表中;若存在,则识别所述第一属性表中所述第三键值对的第三识别码信息的具体值;将所述第三识别码信息的具体值变更为空数组,并将所述第一键值对所对应的所述第一识别码信息添加至所述空数组中,进而完成对已有的第一键值对的调整。
[0027]
对应的,本步骤s200的部分核心javascript代码如下,通过该代码进而实现脚本的自动生成,提高了脚本的生成效率;let additem = (map, name, uuid) =》 {
ꢀꢀꢀꢀꢀꢀꢀꢀ
if (!map[name]) { // 键不存在,直接保存
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
map[name] = uuid;
ꢀꢀꢀꢀꢀꢀꢀꢀ
} else if (array.isarray(map[name])) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
// 键存在且为数组,加进数组里
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
map[name].push(uuid);
ꢀꢀꢀꢀꢀꢀꢀꢀ
} else {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
// 键存在且不为数组,改为数组
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
map[name] = [map[name], uuid];
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
}// 遍历节点
ꢀꢀꢀꢀ
travelcocosnode(rootnode, (node) =》 {
ꢀꢀꢀꢀꢀꢀꢀꢀ
// 处理下划线开头的节点
ꢀꢀꢀꢀꢀꢀꢀꢀ
if (node.name.startswith('_')) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
// _btn开头的节点,视为按钮
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if (node.name.startswith(prefix_button)) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
// 确保节点有button组件
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
let btncomp = node.getcomponent(cc.button);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if (!btncomp) btncomp = node.addcomponent(cc.button);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
// 构造事件名称,添加到点击事件表中
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
additem(scriptclicks, `on${node.name.substr(4)}click`, btncomp);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
// 添加到属性表中
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
additem(scriptproperties, node.name, node.uuid);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
} else {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
// 非按钮,只需要添加到属性表中
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
additem(scriptproperties, node.name, node.uuid);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
});
ꢀꢀꢀꢀ
// 遍历属性表,构造属性字符串
ꢀꢀꢀꢀ
let propkeys = object.keys(scriptproperties);
ꢀꢀꢀꢀ
let propertiesstr = propkeys.map(p =》
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
${p.substr(1)}: ${getclassbyname(p, array.isarray(scriptproperties[p]))}`
ꢀꢀꢀꢀ
).join(',\n');
ꢀꢀꢀꢀ
// 遍历点击事件表,构造点击事件字符串
ꢀꢀꢀꢀ
let clickkeys = object.keys(scriptclicks);
ꢀꢀꢀꢀ
let clickstr = clickkeys.map(c =》
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
${c} () {\n\n
ꢀꢀꢀꢀ
}`
ꢀꢀꢀꢀ
).join(',\n\n');
ꢀꢀꢀꢀ
// 替换模板中的占位符,并保存脚本
ꢀꢀꢀꢀ
let classstr = classtemplete.replace('{properties}', propertiesstr).replace('{clicks}', clickstr);
ꢀꢀꢀꢀ
let jstargeturl = `db://assets/${rootnode.name}.js`;
ꢀꢀꢀꢀ
if (gtargeturl) jstargeturl = `${gtargeturl}/${rootnode.name}.js`
ꢀꢀꢀꢀ
editor.assetdb.create(jstargeturl, classstr, (e, r) =》 {
ꢀꢀꢀꢀꢀꢀꢀꢀ
if (e) return console.error(e);
ꢀꢀꢀꢀꢀꢀꢀꢀ
if (r.length 》 0) scriptfileuuid = r[0].uuid;
ꢀꢀꢀꢀ
})
}s300、脚本绑定步骤,具体包括:s310、配置creator引擎,基于所述第一待遍历节点、第一待绑定脚本和所述creator引擎执行脚本绑定操作;在本实施例中,creator引擎即为开发游戏以及导出上述第一预制体的游戏开发引擎;具体的,所述creator引擎中配置有属性绑定接口和事件绑定接口;属性绑定接口和事件绑定接口均为creator引擎所提供的功能性api,可以预先配置也可以进行重新设定;对应的,基于上述两个接口以及前述步骤得到的第一待遍历节点和第一待绑定脚本执行自动化的脚本绑定操作;具体的,所述脚本绑定操作包括:首先将步骤s200生成的所述第一待绑定脚本与所述第一待遍历节点绑定;完成后,需要将该第一待遍历节点中特定的子节点与脚本上的变量进行绑定,进而完成整个绑定操作;故识别所述第一待遍历节点中的若干所述第一子节点;同时设定若干所述第一子节点中具有所述第一组件(即按钮组件)的节点为第二子节点;识别所述第一待绑定脚本中若干所述第一键值对所分别对应的若干所述第一名称信息;识别所述第一待绑定脚本中若干所述第二键值对所分别对应的若干所述第一点击事件名称以及若干第二识别码信息;首先,调用所述属性绑定接口按照所述第一键值对中的所述第一识别码信息,即以第一子节点的uuid作为索引和关联项,将若干所述第一子节点分别与所述第一待绑定脚本中的若干所述第一名称信息进行对应绑定;之后调用所述事件绑定接口按照所述第二键值对中的所述第二识别码信息,即以按钮组件的 uuid作为索引和关联项,将若干所述第一点击事件名称分别对应添加至若干所述第二子节点的若干所述第一组件(即按钮组件)的若干第一属性中;具体的,在本实施例中,所述第一属性为clickevents属性;通过上述步骤,完成了基于cocos预制体的脚本自动绑定操作;对应的,本步骤s300的部分核心javascript代码如下,通过该代码进而实现脚本的自动绑定,提高了脚本的绑定效率;// 绑定脚本const bindscript = () =》 {
ꢀꢀꢀꢀ
let root = editor.selection.curselection('node')[0];
ꢀꢀꢀꢀ
if (!root) return editor.error('请选中需要绑定脚本的节点');
ꢀꢀꢀꢀ
let rootnode = cc.engine.getinstancebyid(root);
ꢀꢀꢀꢀ
let comp = rootnode.addcomponent(rootnode.name);
ꢀꢀꢀꢀ
let compid = comp.uuid;
ꢀꢀꢀꢀ
// 遍历属性表
ꢀꢀꢀꢀ
let propkeys = object.keys(scriptproperties);
ꢀꢀꢀꢀ
propkeys.foreach((p) =》 {
ꢀꢀꢀꢀꢀꢀꢀꢀ
let prop = scriptproperties[p];
ꢀꢀꢀꢀꢀꢀꢀꢀ
if (array.isarray(prop)) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
// 绑定数组
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
editor.ipc.sendtopanel('scene', 'scene:set-property', {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
id: compid,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
issubprop: false,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
path: `${p.substr(1)}.length`,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
type: undefined,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value: prop.length
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
});
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
for (let i = 0, n = prop.length; i 《 n; i++) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
editor.ipc.sendtopanel('scene', 'scene:set-property', {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
id: compid,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
issubprop: false,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
path: `${p.substr(1)}.${i}`,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
type: getclassbyname(p),
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value: { uuid: prop[i] }
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
});
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
} else {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
// 绑定普通节点
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
editor.ipc.sendtopanel('scene', 'scene:set-property', {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
id: compid,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
issubprop: false,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
path: p.substr(1),
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
type: getclassbyname(p),
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value: { uuid: prop }
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
});
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
});
ꢀꢀꢀꢀ
// 遍历点击事件表,设置按钮对应的点击事件
ꢀꢀꢀꢀ
let clickkeys = object.keys(scriptclicks);
ꢀꢀꢀꢀ
clickkeys.foreach(c =》 {
ꢀꢀꢀꢀꢀꢀꢀꢀ
let btncomp = scriptclicks[c];
ꢀꢀꢀꢀꢀꢀꢀꢀ
if (!array.isarray(btncomp)) btncomp = [btncomp];
ꢀꢀꢀꢀꢀꢀꢀꢀ
for (let i = 0, n = btncomp.length; i 《 n; i++) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
let comp = btncomp[i];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
let len = comp.clickevents.length;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
editor.ipc.sendtopanel('scene', 'scene:set-property', {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
id: comp.uuid,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
issubprop: false,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
path: 'clickevents.length',
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
type: undefined,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value: len + 1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
})通过本实施例1所述的一种基于预制体的脚本自动化绑定方法,可以根据cocos预制体的节点自动化的生成脚本,并自动与对应的节点绑定,这种脚本生成和绑定方式,在面对脚本变量变更时,无需进行重复的绑定操作,节省了极大的脚本绑定时间和生成时间,提高了游戏开发和脚本开发的效率,弥补了现有技术的不足。
[0028]
实施例2本实施例基于与实施例1所述的一种基于预制体的脚本自动化绑定方法相同的发明构思,提供一种基于预制体的脚本自动化绑定系统,如图3所示,包括:初始配置模块、脚本生成模块和脚本绑定模块;所述基于预制体的脚本自动化绑定系统中,初始配置模块用于创建数据配对表、配置脚本模板以及获取预制体载入情况,所述初始配置模块基于所述预制体载入情况设定第一待遍历节点;具体的,所述数据配对表包括:第一属性表和第一点击事件表;所述脚本模板中设置有若干占位符;所述预制体载入情况包括:第一情况和第二情况;所述第一情况为存在已载入的第一预制体;所述第二情况为不存在已载入的第一预制体;所述第一待遍历节点中包含若干第一子节点;具体的,当所述预制体载入情况为所述第一情况时,初始配置模块获取节点选取需求;初始配置模块按照所述节点选取需求在所述第一预制体中选取第一节点,并设定所述第一节点为所述第一待遍历节点。
[0029]
所述基于预制体的脚本自动化绑定系统中,脚本生成模块用于配置节点处理函数,所述脚本生成模块基于所述数据配对表、所述脚本模板、所述第一待遍历节点和所述节点处理函数生成第一待绑定脚本;具体的,所述节点处理函数包括:节点结构识别函数和节点数据填充函数;具体的,脚本生成模块设定第一字符位、第二字符位、第一字符结构和第二字符结构;脚本生成模块基于所述第一属性表、所述第一点击事件表、所述节点结构识别函数、所述节点数据填充函数、所述第一字符位、所述第二字符位、所述第一字符结构和所述第二字符结构对若干所述第一子节点分别执行节点绑定步骤,得到若干第一键值对和若干第二键值对;脚本生成模块调用所述节点数据填充函数将若干所述第一键值对添加至所述第一属性表中,得到第二属性表;脚本生成模块调用所述节点数据填充函数将若干所述第二键值对添加至所述第一点击事件表中,得到第二点击事件表;脚本生成模块设定第一字符串格式;脚本生成模块基于所述脚本模板、所述第二属性表、所述第二点击事件表和所述第一字符串格式执行数据替换步骤,得到所述第一待绑定脚本。
[0030]
具体的,所述节点绑定步骤包括:脚本生成模块调用所述节点结构识别函数识别所述第一子节点中对应所述第一字符位的第一结构信息;脚本生成模块将所述第一结构信息与所述第一字符结构进行比对;若所述第一结构信息与所述第一字符结构相匹配,则脚本生成模块执行第一键值对生成步骤;执行所述第一键值对生成步骤后,脚本生成模块调用所述节点结构识别函数识别所述第一子节点中对应所述第二字符位的第二结构信息;脚
本生成模块将所述第二结构信息与所述第二字符结构相比对;若所述第二结构信息与所述第二字符结构相匹配,则脚本生成模块执行第二键值对生成步骤。
[0031]
具体的,所述第一键值对生成步骤包括:脚本生成模块调用所述节点结构识别函数识别所述第一子节点的第一名称信息和第一识别码信息;脚本生成模块将所述第一名称信息和所述第一识别码信息整合为所述第一键值对;具体的,所述第二键值对生成步骤包括:脚本生成模块在所述第一子节点上增加第一组件;脚本生成模块基于所述第一名称信息设定第一点击事件名称;脚本生成模块识别所述第一组件的第二识别码信息;脚本生成模块将所述第二识别码信息和所述第一点击事件名称整合为所述第二键值对。
[0032]
具体的,还包括:当脚本生成模块调用所述节点数据填充函数将若干所述第一键值对添加至所述第一属性表中时,脚本生成模块对若干所述第一键值对分别执行校验操作;具体的,所述校验操作包括:脚本生成模块遍历所述第一属性表中是否存在与所述第一键值对相匹配的第三键值对;若不存在,则脚本生成模块将所述第一键值对添加至所述第一属性表中;若存在,则脚本生成模块识别所述第一属性表中所述第三键值对的第三识别码信息;脚本生成模块将所述第三识别码信息变更为空数组,并将所述第一键值对所对应的所述第一识别码信息添加至所述空数组中;具体的,所述数据替换步骤包括:脚本生成模块读取所述第二属性表中的若干所述第一键值对以及所述第二点击事件表中的若干所述第二键值对;脚本生成模块按照所述第一字符串格式生成与若干所述第一键值对分别匹配的若干第一脚本字符串;脚本生成模块按照所述第一字符串格式生成与若干所述第二键值对分别匹配的若干第二脚本字符串;脚本生成模块统计若干所述第一脚本字符串的第一数量以及若干所述第二脚本字符串的第二数量;脚本生成模块在所述脚本模板的若干所述占位符中按照所述第一数量确认若干第一占位符;脚本生成模块在所述脚本模板的若干所述占位符中按照所述第二数量确认若干第二占位符;首先脚本生成模块采用若干所述第一脚本字符串分别替换所述脚本模板中的若干所述第一占位符,然后脚本生成模块采用若干所述第二脚本字符串分别替换所述脚本模板中的若干所述第二占位符,得到所述第一待绑定脚本。
[0033]
所述基于预制体的脚本自动化绑定系统中,脚本绑定模块用于配置creator引擎,所述脚本绑定模块基于所述第一待遍历节点、第一待绑定脚本和所述creator引擎执行脚本绑定操作;具体的,所述creator引擎中配置有属性绑定接口和事件绑定接口;具体的,所述脚本绑定操作包括:脚本绑定模块将所述第一待绑定脚本与所述第一待遍历节点绑定;脚本绑定模块识别所述第一待遍历节点中的若干所述第一子节点;脚本绑定模块设定若干所述第一子节点中具有所述第一组件的节点为第二子节点;脚本绑定模块识别所述第一待绑定脚本中若干所述第一键值对所分别对应的若干所述第一名称信息;脚本绑定模块识别所述第一待绑定脚本中若干所述第二键值对所分别对应的若干所述第一点击事件名称以及若干第二识别码信息;脚本绑定模块调用所述属性绑定接口按照所述第一键值对中的所述第一识别码信息将若干所述第一子节点分别与所述第一待绑定脚本中的若干所述第一名称信息进行绑定;脚本绑定模块调用所述事件绑定接口按照所述第
二键值对中的所述第二识别码信息将若干所述第一点击事件名称分别添加至若干所述第二子节点的若干所述第一组件的若干第一属性中。
[0034]
实施例3本实施例提供一种计算机可读存储介质,包括:所述存储介质用于储存将上述实施例1所述的基于预制体的脚本自动化绑定方法实现所用的计算机软件指令,其包含用于执行上述为所述基于预制体的脚本自动化绑定方法所设置的程序;具体的,该可执行程序可以内置在实施例2所述的基于预制体的脚本自动化绑定系统中,这样,基于预制体的脚本自动化绑定系统就可以通过执行内置的可执行程序实现所述实施例1所述的基于预制体的脚本自动化绑定方法。
[0035]
此外,本实施例具有的计算机可读存储介质可以采用一个或多个可读存储介质的任意组合,其中,可读存储介质包括电、光、电磁、红外线或半导体的系统、装置或器件,或者以上任意组合。
[0036]
区别于现有技术,采用本技术一种基于预制体的脚本自动化绑定方法、系统及介质可以通过本方法自动化生成脚本,并自动与对应的cocos预制体中的节点绑定,同时通过本方法生成和绑定的脚本,在面对脚本变量变更时,无需进行重复的绑定操作,节省了极大的脚本绑定时间和生成时间,通过本系统为本方法提供了有效的技术支撑,最终提高了游戏开发和脚本开发的效率,弥补了现有技术的不足,具有一定的市场价值和应用价值。
[0037]
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
[0038]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0039]
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1