多层组合装饰(界面装饰-天窗层)
相关插件
核心插件:
◆Drill_CoreOfDynamicSnapshot 游戏窗体 - 动态屏幕快照核心
子插件:
◆Drill_HtmlDynamicSnapshotBackground 游戏窗体 - 天窗层的多层背景
◆Drill_HtmlDynamicSnapshotCircle 游戏窗体 - 天窗层的多层魔法圈
◆Drill_HtmlDynamicSnapshotGif 游戏窗体 - 天窗层的多层GIF
◆Drill_HtmlDynamicSnapshotTiledGif 游戏窗体 - 天窗层的多层平铺GIF
特殊插件:
◆Drill_HtmlDynamicSnapshotSprite 游戏窗体 - 天窗层的多层动态快照
◆Drill_HtmlDecorationPluginCommandList 游戏窗体 - 天窗层装饰的指令容器
上述插件可以配置多层贴图,并控制装饰 地图界面、战斗界面、菜单界面。
天窗层的装饰如下图。包含:斜切的动态快照、GIF实现的表情包、魔法圈实现的弹痕。装饰能跨 地图+战斗+菜单 界面。![]() ![]() |
示例位置
天窗层装饰插件的示例位置,在 特效管理层 ,如下图。
示例中介绍了 平移、旋转、缩放、斜切 等变换功能。

名词索引
以下你可以按住ctrl键点击下面的词,可以直接定位到想了解的名词:
| 界面设计 | 天窗层的层级 天窗层的底图 预加载静态装饰设计变换动画设计 |
| 特殊属性 | 延迟指令与周期指令静态快照与动态快照 |
| 特殊插件 | 动态快照 指令容器 次元斩 |
界面设计(天窗层)
结构说明
天窗层在各个界面中的装饰方式如下图。
天窗层只有一层,且都在 菜单界面、地图界面、战斗界面 的上面,比最顶层还高。
天窗层的层级
1)层级介绍
天窗层只有一层,且都在 菜单界面、地图界面、战斗界面 的上面。
装饰插件相互通过 图片层级 来决定先后顺序。


图片层级: 如果你配置了许多背景、魔法圈在,图片层级就用来给这些背景、魔法圈分配显示的先后顺序。
(图片层级也称”堆叠级”,可以去看”0.基本定义 > 界面.docx”的层级与堆叠级章节)
2)天窗层的底图
天窗层的底图,就是游戏画面本身( 动态快照 )。
并且动态快照支持添加多个,复制多个游戏画面,而且能进行各种变换操作。

静态装饰设计
1)插件参数配置
天窗层的装饰插件,打开参数配置即可配置。

天窗层的插件可以自定义在哪些界面中启用。
如果为false,则目标界面不会创建贴图。(未创建的贴图,设置显示也不会生效)

2)插件指令调整
注意,所有天窗层的装饰,默认都处于 隐藏状态 。
需要手动使用插件指令 显示,才能看见贴图。

3)标签说明
由于你需要配置大量背景内容到相应的插件中,你不能一次性看见全部内容,这里用标签来进行区分。标签不作用在插件中,只是在配置的时候方便查看。

如果标签名长了,你可以拖拽下面两个竖线,把值拉开查看。

变换动画设计
1)纯色幕布
天窗层,基于 修改单属性、延迟指令、周期指令 可以设计许多变换动画。
其中最常用的有灯光、滤镜变换。
为方便随时调用,作者我将纯色幕布固定在1~10的背景位置。

天窗层的转换,使用纯色幕布较多,可作为动画转场来用。
默认天窗层的所有贴图都是隐藏状态,
你需要手动显示它们,并且根据情况自定义混合模式与透明度。

| 图片也有纯色幕布,你也可以挂图片来实现幕布效果哦。 |
预加载
天窗层的装饰插件可以设置预加载。
预加载常用于游戏中多次、反复使用的贴图。
单个资源贴图,配置“是否预加载”。
多个资源贴图,配置“预加载类型”。


注意,并不是所有装饰贴图都要开启预加载。
因为预加载会一直占着内存,直到游戏关闭才释放内存。
具体去看看: “1.系统 > 关于预加载.docx”。
特殊属性
菜单界面中,装饰插件有一些特殊的属性,其他界面不一定有。(通用的属性在文档“17.主菜单 > 多层组合装饰(界面装饰).docx”中已有介绍) |
延迟指令与周期指令
1)关系表
修改单属性、延迟指令、周期指令,在不同界面的关系如下表。
| 插件 | 修改单属性 | 延迟指令 | 周期指令 |
| 地图插件 | 支持(常用) | 支持 | 支持 |
| 战斗插件 | 支持 | 支持(常用)(最好放公共事件) | 支持 |
| 菜单插件 | 不支持 | 支持(最好放容器初始化) | 支持(最好放容器初始化) |
| 标题插件 | 不支持 | 不支持 | 不支持 |
| 天窗层插件 | 支持(常用) | 支持 | 支持 |
2)使用细节(天窗层)
》天窗层的指令可以实时修改,可以加等待指令控制动画。
》天窗层的指令跨界面,但实时修改只能在地图界面、战斗界面实现。
3)使用细节(指令)
| 修改单属性、延迟指令、周期指令 的变换时长参数,设置“时间[1]”和“时间[0]”没有区别,因为变换切换至少要1帧的时间。因此设计动画时,要考虑加等待指令;设计周期时长时,要把这1帧也考虑进去。 |
| 修改单属性 对应 还原所有单属性;切换混合模式 对应 还原混合模式;切换图片层级 对应 还原混合模式。没有全部还原的指令,你要根据设计的动画情况来加 还原 指令,不要漏了。 |
数据更新与旧存档
天窗层的装饰插件中,提供了 存储功能 的开关。

设置 true/false 都能正常使用插件,只不过有部分区别:
》开启时,当前所有配置会一起存入存档中,插件指令修改的属性也会保存下来。
但这会造成旧存档数据不同步的问题。
》关闭时,重开游戏时只使用插件中配置的参数数据。
插件指令对 透明度、移动速度 的修改只能临时有效,读取存档后失效。
下图这些数据通过插件指令修改后,
若开启存储功能,则修改永久有效;若关闭存储功能,则只临时有效。

具体介绍与定义先去了解一下“21.管理器 > 数据更新与旧存档.docx”。
| 注意,这里提及的是 插件配置与旧存档 的关系。如果你直接更新了插件,旧存档赶紧删了。更新插件相当于数据底层变动,而数据底层变动对旧存档影响是无法预估无法控制的。 |
静态快照与动态快照
静态屏幕快照: 指将当前游戏屏幕的图像进行截取,并放置到一个贴图中。
屏幕图像截取后,不会再变化。也称静态快照。
动态屏幕快照: 指建立一个新的渲染快照,将当前游戏屏幕复制到一个贴图中。贴图的图像 与 游戏屏幕的图像 一模一样,并且实时变化。也称动态快照。

示例中 特效管理层 同时介绍了 静态快照和动态快照,可以去了解下。
也可以去看看文档:“1.系统 > 大家族-屏幕快照.docx”。
| 动态快照 与 装饰插件 都在天窗层,静态快照无法接触到天窗层。先进行静态快照截图,再创建动态快照,只能得到 不含动态快照图像的截图。先创建动态快照,再进行静态快照截图,也只能得到 不含动态快照图像的截图。 |
特殊插件
【游戏窗体 - 天窗层的多层动态快照】
动态快照插件如下。
◆Drill_HtmlDynamicSnapshotSprite 游戏窗体 - 天窗层的多层动态快照
1)动态快照属性
可见前面章节:静态快照与动态快照 。
2)动态快照变换
动态快照与天窗层的魔法圈、GIF一样,
支持 修改单属性、延迟指令、周期指令 等各种变换功能。

你可以去示例位置 特效管理层 看看。

【游戏窗体 - 天窗层装饰的指令容器】
天窗层的延迟指令、周期指令也可以放指令容器中,来自插件:
◆Drill_HtmlDecorationPluginCommandList 游戏窗体 - 天窗层装饰的指令容器
指令容器可存放 天窗层装饰的插件指令,并支持多行编辑,每行代表一条插件指令。
常用于快速存放、修改大量插件指令。

游戏中调用下面的插件指令即可执行指令容器。

指令容器的灵活性非常高,可以制作复杂动画,该文档就不赘述了。详细去看看文档:“17.主菜单 > 多层组合装饰插件的指令容器.docx”。 |
【游戏窗体 - 动态快照次元斩】
你可以直接设计次元斩效果,来自插件:
◆Drill_HtmlDynamicSnapshotSpaceWrench 游戏窗体 - 动态快照次元斩
次元斩是固定写好的一套动画流程,你只能在流程基础上,修改图片资源和参数。
灵活度没有 界面装饰插件 那么高。
详细设计可以去看看:“22.游戏窗体 > 关于动态快照次元斩.docx”。

在示例中 动画转场管理层 也有使用介绍。
从零开始设计(DIY)
设计一个天窗层的弹痕
1. 设置一个目标
考虑到快速上手,这里作者我直接建立一个新工程,在新工程中配置插件。
实现天窗层的装饰插件添加。

2. 结构规划/流程梳理
该流程用到了下面的插件。
◆Drill_CoreOfDynamicSnapshot 游戏窗体 - 动态屏幕快照核心
◆Drill_HtmlDynamicSnapshotCircle 游戏窗体 - 天窗层的多层魔法圈
有了上述插件,就能添加一个弹痕了。
3. 准备空白工程并测试
首先,新建一个工程。
复制插件文件到工程。
(后来还需要弹道核心插件,就加上了)

复制插件资源文件夹。

4. 资源准备
配置中用到了“弹痕”的图片资源。
这个资源从默认动画素材“Gun1.png”中,ps剪切出来,然后设置黑白,实现的图像。

5. 配置魔法圈
接下来,打开 天窗层的魔法圈插件。
如下图,双击并配置弹痕资源。

其中,魔法圈设置不旋转,
并且位置在 (70,500) 左下角的位置。
由于所有天窗层的装饰贴图默认不显示。
这里建立一个事件,手动显示魔法圈[20] 。

最后在游戏中测试。

可以看到,这个弹痕一直都在,
进入菜单界面也一直显示着。

