[教程] 在EU4中制作自定义图标与UI

前言
在EU4中,如何让一个事件变得与众不同,更有风味呢?除了图片和事件文本,还有一个可操作性更高的选择,那就是自定义图标。


一.画一个UI
在讲解前,我先推荐一个轻量的修图软件,名叫paint.net,其兼容性和通道的处理比较强,且可以对几乎所有的图像文件,如.tga和.dds,生成缩略图,这个功能还是很舒服的。(所以我把所有dds和tga文件的默认打开方式设置成了paint.net)
但是其功能肯定是不如ps的,建议将其作日常辅助用


所谓事件ui,其实也就是一个大一点的图标。在一个事件文本中,只有标题和选项的文本是中间对齐的,所以我们在制作文本框外的ui时,大多是从标题和选项上进行引用。(具体怎么引用下面会讲)
这里拿事件标题举例:与标题的文本一样,标题上引用的图标并不是以标题位置为起点的,而是以标题位置居中。所以我们需要对标题上方进行透明通道的留白,以使其出现在想要的位置。
具体的大小我就不讲了,你们制作的时候就用下方的png文件作为模板进行比对吧。(想要图片素材的话可以去EU4本体的gfx\interface里淘一淘,能保证风格的统一)


重要的一点来了,图标文件一般都是以dds格式保存的,当你完成了ui的绘制,你会发现保存后的图像并不能在游戏内正确的引用。这是因为保存的通道格式不对,这里我们选择B8G8R8A8(线性, A8R8G8B8) 或 BC3(线性,DXT5)
前者透明通道的处理明显优于后者,但是体积更大。使用有阴影的图标时建议使用B8G8R8A8(线性, A8R8G8B8)


二.自定义图标的定义与引用

而EU4的所有图标,如上图所示的附属国图标,修正图标,任务图标,以及事件图片等图像资产,都是在MOD根目录/gfx文件夹中存放,并在MOD根目录/interface的.gfx文件中定义的。
定义流程:
下图举例,假如我已经有了如下图所示的事件UI,而我想在游戏中将它调用,我就应该先对其进行一个定义:
1. 先在根目录下的interface文件夹中新建一个.gfx文档,或者复制一个现有的.gfx文档进行清空。
2. 输入如下代码,之后该文件内的定义都要在这个大括号中进行
3. 对icon进行图标的定义,其定义格式是这样的:
最后效果如下例
引用流程:
欧陆风云4中出现的文本都是在MOD根目录/localisation中的.yml本地化文件中实现的,文本中的图标也不例外。如下图所示,我们在上一步骤定义的图标名就可以在其中进行引用了。

图标的引用以如下格式进行,为了实现图标的居中,这里在标题另起一行引用。
就能实现下图的效果了


三.进阶教程
你想像过动态任务图标和动态事件图片吗,其实在EU4的框架下完全可行,甚至有专门的定义方法,只需要序列帧即可。既然是进阶教程,我这里就不对基础做太多赘述了,直接上定义用代码和例子,请见谅。


最后就实现了一个动态的图标
至于这种图片的生成可以自行搜索序列帧