大型模块:场景对象模块化
场景对象可安装多个场景对象模块,安装了一个模块后即拥有了该模块的特性。
如下图所示,场景对象们拥有了一个「显示名称」的模块后,即可拥有该能力。
「基本功能」
★ 一个场景对象可拥有不限个模块:比如NPC1拥有了A、B、C三个模块。
★ 游戏内可对场景对象动态增减模块、修改模块属性等操作,存档时会自动记录更改后的状态,以便读档自动恢复。
★ 不同的状态页可拥有不同的模块:比如NPC1的第一个状态页拥有A、B两个模块,第二个状态页拥有B、C、D三个模块,
在满足出现条件自动切换状态页后会安装该状态页预设好的模块,所以即使在游戏中动态更改了他的模块后,一旦切换了
状态页,就重置成了该状态页预设的值了
。
★ 编辑器可以单独或批量给对象添加或移除指定的模块。
★ 场景对象模块除了模板自带的以外还可以自制或者下载其他创作者分享的插件来获得。
「对象原型和公共模块」
该功能为高级研发人员使用的高级功能。
仍然可以创建多个场景对象原型,以便进行归类。
而由原先的设计-不同的原型拥有【不同的特性和绑定类】,调整为拥有【共同的特性和绑定类】+【自定义场景对象模块】,
在主面板区域左下角的[场景对象]的列表鼠标右键进行编辑(需要启用菜单->自定义编辑器->通用->快捷修改编辑器)
公共模块:
表示所有的原型都拥有该公共特性。
显示列表:可设定该对象挂载的显示对象:如行走图、动画、界面,按照顺序决定显示层次。
属性列表:可设定该对象的自定义公共属性,属性是自动跟随存档的,无需额外自己实现存档逻辑来储存这些值。
原型可以设置如下属性:
1-设定预览:即将拥有的某个显示对象设定为左下方人物面板列表列举的图形(行走图/动画/界面),以便拖拽至场景中使用。
2-预安装的模块:即创建该类原型的场景对象时会预先安装设定好的模块。
提示1:如果勾选了[重置该原型的所有对象的模块],则所有场景中的该类原型的对象都会被重置为预设的模块,该预设默认情况下不会影响已经摆放好的场景对象。
提示2:模块顺序会影响显示列表中显示对象的显示层次。
「场景对象模块管理」
该功能为高级研发人员使用的高级功能。
在菜单-自定义编辑器-场景对象模块中可以管理(快捷键ALT+9)
可以绑定一个类,以便开发人员实现该模块在游戏运行时的逻辑和表现。
系统会自动生成相关场景对象模块的基类(如SceneObjectModule_1),自己定义的类必须继承于它。
「自定义属性依赖条件」
该功能为高级研发人员使用的高级功能。
在公共模块或普通场景对象模块的自定义属性均添加了依赖条件的支持,即在别的组件参数满足某个值时当前这个属性组件才出现。
「资源预加载」
在预加载该对象原型时也会预加载其模块中可能含有的显示对象。
「对象行为编辑器」
在对象行为编辑器中也能够实时预览到预设模块中的效果
「旧版本兼容性以及其他改动」
由于对象模块系统结构改动较大,对于旧版本的工程仍然保持原来的场景原型设定,并不支持模块化,如果需要使用该特性,可重新下载模板。
去除了GC本体提供的影子功能,删除系统影子相关API,转而由模板层实现「影子模块」,但旧工程仍然保持原样。
去除了GC本体提供的行走图材质功能,转而由模板层实现「行走图材质」,但旧工程仍然保持原样。
增加了自定义组件:52-选择场景对象模块,以便制作自定义面板可以选择场景对象模块。
增加了自定义短语中对场景对象模块名称的获取接口。
codeHelper更新了相关代码辅助(F11脚本编辑器中的Code按钮提供的功能,新工程才有):
1.调整了场景对象绑定类
2.增加了插件变量规范-场景对象模块ID
3.对象模块绑定类
「程序员专用的相关API开放」
该功能为高级研发人员使用的高级功能。
事件:可用于监听对象添加/移除模块
// 事件:当附加模块时 派发对象=SceneObjectEntity
SceneObjectEntity::EVENT_ON_ADD_MODULE
// 事件:当移除模块时 派发对象=SceneObjectEntity
SceneObjectEntity::EVENT_ON_REMOVE_MODULE
[SceneObjectEntity] 类中添加了相关模块操作的方法(该类是场景对象实体类,所有场景对象均继承于它)
// 如给场景对象添加1号模块
so.addModuleByID(1)
「场景对象的自定义编辑器实时预览」
该功能为高级研发人员使用的高级功能。
支持在编辑器中编写自定义的场景对象模块编辑器预览,以便在编辑器中实时显示或追加相关界面操作。比如上面的「显示名称」的场景对象模块,其拥有的几个属性设置的值可以实时反馈在编辑器中。可在模块设计中进行编写,也可以在开启了菜单-自定义编辑器-常规设置-快捷修改编辑器的情况下可以通过右键菜单快速编写。
编辑器预览和游戏运行时是两套代码,不会互相影响,编辑器预览提供的系统函数如下:
init 当前模块初始化(当添加该模块时)
onRemoved 当移除该模块时
onChange 当改变当前模块属性时
onUpdate 当前模块每帧执行的函数
onSelectedOwner 当选中拥有者时的函数
onCancelSelectedOwner 当取消选中拥有者时的函数
onOwnerAttributeChange 当拥有者的一般属性变更时(包含公共模块的属性变更)
onChangeModulePostion 当拥有者的模块顺序发生改变时
「插件的支持」
高级开发者在制作了模块后可以分享为插件供其他创作者免费/付费使用。
目前支持分享:
1-场景对象原型:将整个原型分享出去,会自动包含其预安装的模块。
2-场景对象公共属性(部分属性):比如自己增加了某些属性,可以将这些属性单独分享出去,其他创作者下载后所有场景对象都将拥有该属性。
3-场景对象模块:制作好的模块分享上去后,其他创作者下载后将拥有了该模块,可以自由给对象添加该模块了。
由于其他创作者可能其工程已拥有了该编号的模块,所以在制作插件时需要遵守变量命名规则,以便能够在用户的工程上正确找到该模块:
PLUGIN_SCENEOBJECT_MODULE_自定义名称:number = 1;
GC-IDE中可以帮你快速插入该标准:
so.addModuleByID(PLUGIN_SCENEOBJECT_MODULE_自定义名称); // 用户的工程也也能够找到正确的该模块了,而非用户工程下同编号的其他模块。
新增功能
曲线删除节点支持了快捷键D。
可输入文本组件添加平滑字体设置
显示对话指令增加角色名称颜色参数
资源管理器搜索栏在未搜索任何文本时增加了提示
资源管理器增加Z快捷键缩放还原至100%
资源管理器修改格式的话需要弹出提示框确认才能修改
资源管理器复制了相对路径或完整路径粘贴到地址栏跳转
资源管理器搜索文件支持通配符*,?
资源管理器新增DELETE/CTRL+D快捷键删除文件
资源管理器新增默认选中新建的文件夹
资源管理器新增搜索栏在未搜索任何文本时的提示
调整和优化
一些系统生成于内存中的相关api文件调整到了保存为ts实体文件存放在工程的Game/system目录中。
-- CustomCommandParams.ts 自定义指令类-- CustomConditionParams.ts 自定义条件分歧类
-- CustomGameNumberParams.ts 自定义游戏数值类
-- CustomGameStringParams.ts 自定义游戏字符串类
-- CustomModuleRuntime.ts 自定义模块类
-- DataStructureRuntime.ts 自定义数据结构类
-- GameAttributeRuntime.ts 自定义世界属性、玩家属性类
在场景列表顶部增加一栏并有添加场景的按钮。
编辑器设置界面优化修改,统一化管理。
设置-场景模块-场景对象原型默认客户端继承类 在有场景对象模块化的新版本中已经去除
修复问题
修复指令面板大小写搜索结果不一致的问题。
修复模板存档后立即读档卡死报错。
修复使用Texture截图失效bug
修复对话框框选项读档后错误bug
修复UIList设置的焦点对象被dispose后会报错
修复显示选项出现条件使用开关变量游戏中显示错误bug
修复出生点历史记录失效的问题
修复显示列表动画ID=0,然后再在里面设置ID就失效了
修复系统生成的代码文件,对应材质编辑器时类型有误
修复打开已存在的对话框时对话内容闪一下后才出现在框内的错误
修复资源管理器重复侦听文件后,占用无法操作文件bug
修复有时候文件夹相对路径和打开文件位置不对的bug
修复测试游戏在独立窗口模式下存档读档失效的问题
修复内存崩溃导致.gamecreator文件一定概率崩坏的bug修复资源管理器不识别大写MP3等格式bug
修复资源管理器左边树列表删除文件夹右侧列表未刷新的bug
修复资源管理器有时候文件夹相对路径和打开文件位置不对bug
修复资源管理器刷新文件夹时在某些情况下未能停止掉LOADING的bug
修复资源管理器在地址栏输入地址后按回车没有跳转的bug
修复资源管理器重命名失效的bug
修复资源管理器修改图片大小后显示图片存储大小错误
修复资源管理器新生成的文件夹左下角显示的是未知类型的bug
修复行走图/动画等地方十字线忽明忽现的错误 |