钢铁雄心4 GUI教程 P3窗口类型与图像资源(二)


2.省份城市介绍
前端设计
还是老样子,先构思这个界面,我们需要在state面板,为一些特殊的state附着一个打开城市介绍的按钮,点击按钮后打开一个城市介绍的页面
先制作按钮的窗口

这里的背景调用的图像是quadTextureSprite,而不是之前的spritetype
spritetype多用于调用普通图像元件(单一图像或多帧图像)
quadTextureSprite而多用于调用“实时更新”的图像资源,例如游戏中的旗帜,材质背景(稍后会提到),序列帧动画

接下来讲解钢丝常见图像资源注册格式(.gfx文件)

spritetype:最常用也是最基本的储存图像元件,可以是单一图片也可以是多帧图片(多用于按钮)
corneredTileSpriteType:纹理填充图像,依据注册图像通过游戏生成对应大小的纹理图像,常用作背景。它的原理是确定边界大小后,固定边界,填充中心
以下将通过实例帮助理解:这个是即将使用的纹理材质,

将它注册为:

在游戏中调用:


当tilingCenter(中心填充)选yes时:

可以看见,当我们需要创建大量不同规格窗口时,采用corneredTileSpriteType可以更高效地通过游戏生成不同大小的背景。

回到界面制作,将背景和窗口调整为按钮大小

我们还需要第二个界面,点击按钮后打开的省份介绍,它大致由以下部分组成

然后构建窗口

以下每项都在之前p详细讲过,这里不加赘述,注意文本框的文本直接使用的是scripted loc


后端编写
我们需要提前将加装地区介绍的state找到,并将它们的ID列出来,并且我们需要只有点选这些State时才会显示按钮并且打开对应界面
下面将暂定5个城市:巴黎,伦敦,罗马,维也纳,柏林;
方便分配图像和文本,我们将它们编号为1,2,3,4,5
通过一个数组将它们集中在一起

编写scripted trigger

接下来需要编写点击按钮时候的效果,通过一个变量代换得到目标State的id然后用scripted localisation分配对应图像,在设计变量代换的时候需要下一点功夫


解读一下这部分代码:
首先将当前选中State的id储存为变量
由于我们填充数组是根据编号顺序,因此我们可以通过比较当前选中State与数组中每个值是否匹配,匹配则传递该State所在序号
由于数组首位默认是0,因此加1得到我们设定的编号
分配图像时保持前半段不变,只更改末尾序号,即可实现不同State的图像分配
强调一下,由于窗口类型为selected_state_context,THIS(默认作用域)为所选State,ROOT为操作界面的国家

以下为完整后端编写,第一个关联的是State附着按钮,第二个关联的是简介界面

最后完成文本内容,由于P2讲过这里就不完全展示了



最后测试


这就结束了吗
怎么可能,地图那么大我怎么可能一个一个去点看那些state你加了介绍啊
因此我们还需要一个mapicon(地图图标),把所有我们加过State view的区域标注在地图上

前端设计
十分简单的一个窗口,它没有背景只承接了地图图标(buttonType)

后端编写
我们需要让它在地图上显示,因此使用一种截然不同的窗口类型

context_type(窗口类型)为:state_mapicon(省份地图图标)
mapmode(地图模式)决定该窗口会在什么地图模式下显示,default为默认地图模式
mapicon_targets为设置图标的省份,这里将目标state设置为先前的数组
通过flag控制地图图标显示与否,点击时执行先前按钮一样的效果

最后将设置flag关联在先前按钮上,设置为右键点击

进入游戏测试


P3的第二部分,第三部分其实剩下不多了不过因为分了三个案例讲解就还是把最后一部分单独拎出来吧