Skip to content

关于预加载

相关插件

相关核心插件:

◆Drill_CoreOfActionSequence 系统 - GIF动画序列核心

◆Drill_CoreOfGaugeMeter 系统 - 参数条核心

◆Drill_CoreOfGaugeNumber 系统 - 参数数字核心

……

所有界面装饰插件相关,如:

◆Drill_LayerGround 地图 - 多层地图背景

◆Drill_BattleBackground 战斗 - 多层战斗背景

◆Drill_HtmlDynamicSnapshotBackground 游戏窗体 - 天窗层的多层背景

……

大部分需要配置 资源 的插件都有预加载的配置设置。

如果你不清楚预加载应该在什么时候开启,那么可以直接看章节:使用规则

名词索引

以下你可以按住ctrl键点击下面的词,可以直接定位到想了解的名词:

预加载CPU 内存 外存加载 预加载内存占用查看 内存占用计算 减少内存占用的方法
预加载功能预加载(图片) 预加载(动画序列)预加载(界面装饰/动画转场)
预加载大量文件GIF的预加载 文件夹全部预加载

预加载

内存、外存与CPU

CPU: 是指软件在系统中 运行程序任务 所占的百分比。

软件要进行游戏每帧的计算时,都会占用一部分的CPU来确保程序执行。

内存: 是指软件在系统中 占用的空间。

软件每次需要加载资源文件时,都会向请求开辟内存空间放数据以供随时使用。

打开win10的任务管理器(快捷键 Ctrl + Shift + Esc),如下图。

可以看到所有程序的CPU和内存的关系。

外存: 是指系统内存储在 磁盘 上面的文件,也就是存储文件。

软件的资源加载过程,就是从 外存 获取然后传递给 内存 。

CPU 是衡量 游戏性能 的指标。内存 是衡量 游戏占用空间 的指标。外存 是游戏资源文件 占用/存储 在磁盘的空间指标。

加载

加载: 指将外存的数据文件,复制或转移到内存中。

以吃饭为例子,你需要跟 桌子、菜、碗 等交互物进行交互。

如下图,盘子中的菜,就好比存储在外存中的资源文件。

把菜夹到碗里这个过程,即加载的过程。

加载需要时间,只不过这个时间很短,10帧以内就可以加载完毕。

预加载是在进行游戏前,提前把盘子里的菜夹到碗里。但是,由于碗装不下所有菜,所以要先考虑哪些菜必须吃,才可以提前夹。
加载时间短,并不代表没有加载时间,如果文件数量很多,加载时间的问题会凸显,比如图片闪烁问题,可见:预加载大量文件

预加载

预加载: 指在进入游戏后,对指定的资源进行提前加载。

预加载的资源会长期占着内存,不会被释放。

游戏不会一次性将全部资源都 预加载,因为那样会占用大量的内存。大部分贴图都是按需载入,比如切换 战斗界面、菜单界面、地图界面 时,会弹出loading提示,这时场景加载就是 释放/加载 大量图片的过程。

以地图界面切换到菜单界面的过程为例,

界面过渡时,会销毁上一个界面的所有资源和贴图。

如果资源图片被标记了预加载,那么会被绑定到 预加载容器 中,

那么该资源图片会永久占着内存,直到游戏关闭。

部分插件中能进行 预加载 的配置。

预加载的标记规则 可见后面章节:使用规则

用法

1)使用规则

只要满足下面的条件,即可考虑启用预加载:

> 游戏中多次、反复使用的贴图,可以开启预加载功能。

(比如UI、作为幕布的纯色图片、GIF装饰物等)

> 配置的GIF贴图在游戏时会不停地闪烁,那么该贴图可以开启预加载功能。

(预加载能消除闪烁问题,但更具体的情况去看章节:GIF的预加载

其他情况下,都最好默认关闭 预加载,避免内存浪费。

不管加载还是预加载,都会占用内存。但加载会在一定时候释放,而预加载会长期占着不放。

2)内存占用查看

打开电脑的属性,你可以看到内存信息。

打开win10的任务管理器(快捷键 Ctrl + Shift + Esc),可以看到内存占用信息。

由图可知,通常情况下电脑内存不会被全部占满。

但是,如果你一边开 PS、浏览器,一边用RMMV测试的时候,就有内存占满的风险了,内存满了会导致游戏闪退。

3)内存占用计算

以100张816×624(占用空间80 KB)的图片为例。

外存占用:

100×80 KB = 8000 KB ≈ 7.81 MB

内存占用:

816×624 = 509184像素

509184×4 = 2036736字节 ≈ 1.942 MB(每像素4字节,作为RGBA颜色数据)

1.942 MB×100(张)≈ 194.2 MB

也就是说,加载100张图片,会暂时使用接近200MB内存。(不考虑内存优化的情况)

外存占用空间小,是因为它只存储,jpeg、png这类文件包含了特定的图片压缩算法。内存占用空间大,是因为真的要建立一个816×624的颜色大矩阵来实时给游戏使用。

上述只是理论内存占用。

实际游戏中,系统具备 压缩纹理、内存池 等内存优化功能。

压缩比大概为 4:1 到 8:1 。

经过优化,实际可能占用 25MB ~ 50MB 的内存。(但仍然比外存占用大)

4)减少内存占用的方法

减少内存占用有下面几个方法:

> 设置更小的游戏分辨率,缩小资源图片。

(分辨率816x624其实已经足够,只要不设置1920x1080这种超大分辨率,资源图片就不会需要那么大的图)

> 减少GIF的帧数,增加帧间隔。

(GIF是内存占用的重灾区,可以考虑合理降低帧数,增加帧间隔)

> 减少绑定预加载的资源数量。

(大部分GIF插件都提供了 预加载类型 设置,你可以根据实际情况设置,来保证GIF不闪,且只预加载前面几十帧的资源,以减少预加载数量)

预加载功能

预加载(素材库)

素材库插件中有预加载的设置,但一般为false。

因为素材库插件的设定为:

图标和小图,必然预加载;

中型图、高清图,默认不加载,可选是否预加载。

如果玩家在游戏中用到了中型图、高清图,

第一次用到时,开始加载,并使用缩放图;

第二次用到时,使用加载好的图。

未加载完毕时使用缩放图加载完毕后使用配置的图
关闭预加载,只会在第一次加载时出现清晰度不够的小瑕疵,不过对于玩家来说这不影响游戏体验,所以通常都建议关闭预加载。详细可以去看看文档:“21.管理器 > 关于素材库.docx”。

预加载(图片)

如果图片资源很大,那么第一次显示图片时可能会闪一下。

为了避免图片闪烁,你可以把大图片放在预加载列表中。

下面插件提供了常规图片的预加载功能,但需要将图片一个个加上:

Drill_PictureShortcut 图片 - 快捷变换操作

你也可以图方便省事,直接使用下面插件一次性加载文件夹下的 全部图片 。

Drill_ForcePreload 管理器 - 强制预加载文件夹

这个插件对应了:文件夹全部预加载

预加载(动画序列)

GIF动画序列中,经常会遇到GIF播放时不停闪烁的情况。

这是因为第一次播放时,需要即时加载,即时加载来不及显示图片全貌,所以就闪了。

你可以在状态元、动作元配置中,勾选预加载设置。

预加载可以避免 即时加载 的闪图问题。

动画序列小工具 不限制资源图片的大小,但建议最好用小图。因为动画序列的资源数量非常多,根据前面的 内存占用计算,大图GIF容易炸内存。

预加载(界面装饰/动画转场)

界面装饰: 指专门用于装饰 游戏界面 的插件。

包含:背景、粒子、魔法圈、GIF、平铺GIF、视频等装饰。

(界面装饰相关插件可以去看看:“17.主菜单 > 多层组合装饰(界面装饰).docx”)

动画转场: 通常指 地图传送、进入战斗界面 等情况时,播放的动画效果。

动画转场的设计都依赖界面装饰插件。

(动画转场相关设计可以去看看:“17.主菜单 > 关于动画转场核心.docx”)

由于动画转场在通过插件指令播放时需要立即显现,所以一般都需要考虑预加载。

常用的动画转场可以开预加载,不常用的可以不开。

如下图,使用 GIF或者平铺GIF 时,可以考虑配置:预加载类型

预加载大量文件

GIF的预加载

1)预加载类型

插件中的资源图片参数,

如果只需配置一张资源图片,则预加载参数只会问你是否预加载。如下图。

如果需要配置多张资源图片,则预加载参数会问你类型。如下图。

预加载类型 分为:关闭预加载、固定预加载数量、全部预加载。

其中,固定预加载数量 对应了 数量设置。

你可以设置多张图片只前面几张预加载。

2)GIF闪烁现象

在第一次执行播放前,GIF的图片资源就一直处于未加载的状态。

如下图,即使是很小的表情包GIF时,图像也会闪烁。

因为未加载时不显示,加载后立即显示贴图。

所以GIF一边加载一边显示,才会看到闪烁现象。

为了解决闪烁问题,最简单的方法就是设置 全部预加载。

但全部预加载也有个麻烦,大量图片会长期占着内存不放,容易挤爆内存。

为了减少内存占用,可以设置下图配置。

前面几张GIF图执行预加载,

后面的图片在前面的图片播放时,并行加载。

预加载数量根据你设置的GIF图片大小来定。如果是小图片(200x200像素以内),加载前6~10帧就可以了。如果是大图片(200x200像素以上),加载时间可能要长一点,需要设置10~30帧。只要播放GIF不会出现闪烁问题,就算解决。

文件夹全部预加载

这里有一个懒人插件,一次性强制 预加载 文件夹下的 全部图片 。

Drill_ForcePreload 管理器 - 强制预加载文件夹

只要指定文件夹路径,就能预加载所有图片。

另外这个插件 只能电脑端使用,浏览器端不支持。

该插件会识别文件夹下的所有图片,并绑定预加载。文件夹套文件夹下的图片,不能被识别。预加载明显的缺点就是长期占太多内存,使用时还是要考虑一下 内存占用计算

贡献者

暂无相关贡献者

页面历史

暂无最近变更历史
最近更新