当前位置: 首页 > 热门 > >正文

钢铁雄心4 GUI教程 P1创建一个新的界面

来源:哔哩哔哩    时间:2023-01-28 02:57:35

前言


(相关资料图)

在钢4mod制作中,稍微进阶的制作当属ui制作,其中既包含了原版中本来存在的一些页面修改,也包括新加的Scripted Gui。

在一些大型mod中,gui的大量修改可以让mod变得更“酷炫”(没错就是指TNO

然而无论是原版还是wiki可能对于scripted gui的教程都略显简陋,不易理解,甚至部分内容没有相关说明(gridbox,scrollbar等等),加之其制作难度略大(需要大量运用变量,数组),让GUI修改成为钢4mod制作的一大难题

那么本教程将对钢4mod中有关GUI的内容进行说明,这将会是一个大坑,以及受限于当前资料,有些内容可能无法完全涉及或者有错漏,还请海涵!

观前提示,gui制作可能会涉及大量variable,array,meta_effect,flag,event_target的操作,如有不适请立刻打开wiki!

1.了解钢4GUI原理

请允许我借用正经编程的术语,钢4的UI大致分为两部分,一部分是“前端”,用于创建图像文本界面;另一部分是“后端”用于链接和执行相关的UI互动。

对于绝大部分游戏原版ui来说,“后端”代码无法触及,只能进行“前端”修改,如更改图像位置,插入新图像/文本框之类

但是对于scripted gui(新加自定义界面)就可以进行相应的“后端”编辑,令它可以完成相应的效果

不难看出,UI本质就是图像操作于游戏内容的交互,以玩家为媒介,沟通起一条链接游戏图像文件和代码分配的桥梁

因此,UI与美工深度绑定,好比布料和裁缝,好的裁缝(代码)需要有丰富精良的布料(美工)才能制作出一件完美的艺术品

所以开始ui制作之前,你得找到一个好美工

2.ui文件构成

首先是“前端”文件,在游戏文件夹目录下

gfx文件夹中储存了游戏会调用的图像素材,在原版中,绝大部分图像以dds格式储存,但是,也可以使用png格式,二者互有优劣,对于dds文件,其能储存通道信息,游戏自带的图像处理器可以依靠他进行渲染;对于png文件,其能保存透明部分,同时便于使用

interface文件夹中,储存了钢4GUI的“前端”代码(后缀为.gui),以及gfx图像的注册文件(后缀为.gfx),因此在使用新加图像文件时,请一定要记得在游戏中注册

然后是“后端”文件,位于common文件夹中

通常而言,scripted_gui文件本身就可以单独完成相关的ui“后端”编辑,但是如果需要相对复杂的ui编写,其余内容必不可少

后续会在使用到的时候进行相关介绍

3.创建一个新的ui界面

了解了基本的gui构成,让我们实践一下,创建一个自己的新页面

以mod开局介绍界面为例

首先让我们打开ps,构思一下这个界面会是什么样子的,以下借用kr的开局介绍图像素材

(才不是因为我不会美工

可以看到,我打算制作的新ui分为四个部分,一个背景,一个图像,一个按钮,一个文本框,那么接下来我需要把这个界面用游戏的代码表达出来

第一步,注册相关图像文件

第二步,编辑前端文件

首先新建一个.gui文件(你可以选择复制一个原版的并且将它清空)

接下来我们需要创建一个“窗口”containerWindowType,它是钢丝最普遍的一种窗口,所有“元件”(图像,文本,按钮)都必须储存在一个容器之中。

创建之前我们先回到之前ps的页面,确定一下我们需要多大的窗口(依据背景图像),要让他出现在哪里(画面正中心)于是有:

orientation:窗口相对于屏幕的方位,默认情况以屏幕左上角为原点,x以右为正方向y以下为正方向。center则将相对方位的原点改为屏幕中心为原点(相较于原来的位置,在1920x1080分辨率下,position为:x = 960 y = 540)

两图为position x =0 y=0时,不同的orientation

origo:窗口的基准点,position的x,y值即为基准点的位置,默认为整个窗口的右上角,center则将窗口基准点定为整个窗口的中心点

两图为相同position,相同orientation,不同origo

moveable:窗口可以拖动

clipping:是否会裁剪超框的图像/文本框

然后,我们需要往里添加元件,参考我们在ps里的设计,一个logo,一个按钮,一个文本框

p社gui元件堆叠方式与图层相同,从下往上堆积,写在下方的元件会叠在写在上方的元件,窗口的背景永远位于最下方

所以我们这样写

这三个元件分别为:按钮(buttonType),文本框(instantTextBoxType),图标(iconType),体现在ps图层大概是这样的

注意,元件中position的位置则是以整个窗口的左上角为原点,元件的左上角为基准点,根据x,y来排布

name为每个元件名称,orientation为元件相对于窗口的位置,spriteType为引用的图像文件(先前注册过的)

每项元件都有一些自己的设置,但不是本次的重点,这部分详解将会在后续的文章中列出

以上,前端页面的创建就完成了。

第三步,编辑后端文件

在common/scripted_gui中新建一个文件

我们先需要将前端界面与后端代码进行关联

context_type定义了前端窗口类型:玩家窗口(player_context),默认作用域(scope)会设置为这个界面所展现给的tag

window_name则指向这个后端代码所对应的前端窗口,还记得它吗

我们需要让欢迎窗口在开始游戏时显示,点击按钮时关闭,于是选择country_flag作为检测条件(trigger)

目前的代码将会把这个欢迎窗口呈现给拥有flag为welcome的国家,点击按钮的时候会清空flag然后让窗口消失,接下来配合on_action将这个flag在游戏开始时设置

最后用debug模式进入游戏测试

可以看见我们成果创建界面了

但是里面元件却凌乱的一塌糊涂,用控制台指令gui,鼠标指针移动到元件上方,修改x,y值令它排布出我们需要的样子

最后进行文本内容的本地化并且为按钮加上一个文本

创建一个新的界面,大功告成

写在后面,UI的制作不是一件一蹴而就的事情,这需要你有足够的耐心和充足的代码积累,对你的美工也是一个不小的考验,希望我的教程能给予打算尝试或者正在制作的modder一点微不足道的帮助

同时鸣谢@CleverCrafty 大佬给予我的不小帮助让我可以开这个史诗级巨坑

希望能填完吧

X 关闭

推荐内容

最近更新

Copyright ©  2015-2022 起点服装网版权所有  备案号:皖ICP备2022009963号-12   联系邮箱: 39 60 29 14 2@qq.com