首页 >  时评 >  详情

钢铁雄心4 GUI教程 P7gridboxType(二)

2023-02-19 00:08:03来源:哔哩哔哩

注:观前提示,gridboxType与数组紧密结合,在观看前请确保你有足够的有关array的知识

上一p介绍了gridboxType的基本理解和简单应用。


(资料图)

根据数组内容(阵营成员)动态变化被列举窗口(国家旗帜,名字等组成的窗口)是gridboxType的一大应用,这次将介绍gridboxType的另一大应用,即批量为相同规格的元件依据数组分配不同的图像

TNO竖方向议席(托木茨克议会)为例子

素材准备:

预计用正方形方框代表一个议会的席位,不同颜色代表不同的席位支持的party

于是先制作一个长图并且分帧

前端设计:

还是一样构思一下界面,我们预计设置48个席位,依据不同party的支持率分配每个party所占的议席数量

如果不使用gridbox的话就意味着需要写48个icon然后再给每个icon分配不同颜色,这显然是反人类的

回到上一P的“大楼”比喻,这一次我们规定每间房(被列举窗口)只有一个iconType

然后让我们设计这个大楼将会怎么建造:

总共48间房,每层8间房,一共建6层,房间顺序按从上到下标号(add_horizontal = no)

这样子第一间房是第一列第一行,

第二间房是第一列第二行,第七间房(每列最多六间房子)是第二列第一行………以此类推

后端编写:

还记得上一篇讲的dynamic_lists

这里列举的数组没有scope的性质,且只作为图片使用的帧数区分,所以填写change_scope = no(可以不填写,默认为不填写)

然后是properties填写的部分,由于每间房对应的门牌号都是独一无二的,使用所列举数组的次序进行区分(array^i),对于第一间房(第一行第一列)而言,它所关联的变量是数组

gridbx_seat_array的第一位,也就是gridbx_seat_array^0(i= 0,数组中首位次序是0)

第二间房(第二行第一列,前面填写过add_horizontal = no,还记得吗),

它所关联的变量是数组gridbx_seat_array的第二位,也就是gridbx_seat_array^1(i= 1)

以此类推

所以,我们只需要改变数组中每个位次的变量的值,就可以让对应的icon更换不同的图像帧

人为地,依据最开始我们准备的素材,我们规定,

变量值= 1,为红party

变量值= 2,为棕party

变量值= 3,为蓝party

变量值= 4,为灰party

然后是依据当前tag的不同支持率,用上述4个值来填充数组

首先将每个party的支持率(以百分数形式),乘以48(席位总数),取整,

可以得到不同party分配到的席位数量

将每个party分配得的席位数转换为填充进数组时次序

e.g. 红party10个席位,棕party12个,那么棕party从第11个开始,到第22个结束

所以,棕party次序红party数目,加上棕party数目,其它以此类推

为什么少了灰party的?为了保证总数为48,结束位为48

最后填充数组

以下为完整代码

由于采用的是决议gui,所以你还需要新建一个决议然后引用这个gui

最后进游戏测试

gridbox也终于告一段落了,后续将以parliament-diagram-main提供的样本进行介绍,敬请期待吧

关键词: 以此类推 不同颜色 钢铁雄心

[ 相关文章 ]