中国虚拟军事网(VME)- 专注于武装突袭系列虚拟军事游戏

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
查看: 1778|回复: 6

[教程] 【UI制作入门教程】翻译搬运KK的GUI教程

[复制链接]
发表于 2015-6-18 15:53:35 | 显示全部楼层 |阅读模式
本帖最后由 中国梦强军梦 于 2015-6-18 16:06 编辑

第一章 Hello World

你可能已经知道如何输出一个消息在屏幕上。你可以用hintcommand做,cuttext还有sidechat命令。
但是这些命令都有固定的显示位置。但如果你想输出你想要的文字效果,你需要做一个自定义的GUI(图形用户界面)。
不要害怕它实际上比听起来更容易。我会用ARMA 3为例,由于它具有很好的内置调试控制台,这里感谢卡雷尔moricky的指导。
(这里需要一些基础知识,请看我的入门教程)
•进入AA3打开编辑器,在地图上防止主角,然后保存任务
•打开任务文件夹,找到你刚才保存的任务,并创建一个空文本文件,重命名itdescription.ext
•现在复制并粘贴以下代码到description.ext中然后保存:


  1. class RscTitles
  2. {
  3.         class ExampleTitle
  4.         {   
  5.                 idd = -1;
  6.                 duration = 1;
  7.                 class controls
  8.                 {
  9.                         class ExampleControl
  10.                         {   
  11.                                 idc = -1;
  12.                                 type = 0;
  13.                                 style = 0;
  14.                                 x = 0;
  15.                                 y = 0;
  16.                                 w = 1;
  17.                                 h = 1;
  18.                                 font = "EtelkaNarrowMediumPro";
  19.                                 sizeEx = 0.1;
  20.                                 colorBackground[] = {0,0,0,1};
  21.                                 colorText[] = {1,1,1,1};
  22.                                 text = "Example Text";
  23.                         };  
  24.                 };       
  25.         };
  26. };
复制代码

•进入编辑器打开这个任务
•点击预览,按ESC键打开调试控制台
•复制粘贴下面的代码,单击“本地执行:
cutRsc ["ExampleTitle","PLAIN"];
步骤正确的话,你将看到如下画面。


很简单吧,我将在下面几章详细讲解。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入VME

x
 楼主| 发表于 2015-6-18 15:56:56 | 显示全部楼层
本帖最后由 中国梦强军梦 于 2015-6-18 16:07 编辑

第二章 文件及命令

        description.ext
description.ext功能是一个精简版的config.cpp任务配置文件,在一定程度上代替插件。
你可以像在config.cpp中那样在description.ext定义类,但是它的功能相对有限。
例如,你不能定义一个Cfgvehicles类,但是构建GUI使用description.ext却很方便,比
如更容易将他集成进插件,用重新加载任务也更方便看到任何改变。每次更改别忘了
保存与备份哟。从description.ext读取类需要用usemissionconfigfile命令与配置文件命
令读取类,这是用config.cpp
        RscTitles
有2种方法可以显示你的GUI或让我们称它为“资源”。用createDialog命令,会显示为对
话框,或用cutRsc / titleRsc命令(RSC代表资源),在这种情况下,它将被视为显示。
不同的是,在对话模式下你能用鼠标控制。我将主要集中讲解cutRsc。
GUI制作中rsctitle类是特殊的和必要的,它作为一个资源容器。cutRsc命令将看看rsctitles类资源,
如果不存在,你会得到一个错误信息。如果你使用的是createDialog你不应该把你的对话框资源放在rsctitles中。
        cutrRsc命令的格式:(第一章例子详解)
layerNumber cutRsc [resourceClass, behaviour, durationMultiplier, showOverMap];

layerNumber 层数取值0-1000000用于决定堆叠次序,相同层数后者将覆盖前者
resourceClass这个是你在RscTitles中的资源类名称在我们的例子中是“ExampleTitle”。

Behaviour表现方式:"PLAIN" – 默认效果,出现
        "PLAIN DOWN" – 和上面差不多
        "BLACK" –黑入
        "BLACK FADED" – 黑出
        "BLACK OUT" – 好像是黑入,自己试试吧
        "BLACK IN" – 黑出
        "WHITE OUT" – 淡出
          "WHITE IN" – 淡入

durationMultiplier显示速度0.5将减少一半2将延长2倍。0将被忽略。默认值是1
showOverMap覆盖地图,不知道是用0、1,还是写上就行。仅支持AA3.

ExampleTitle这是我们的资源类。名称可以是任何东西,只要它不冲突与现有的类。这是我们的画布。
你在这个类放的所有资源都会被cutRsc命令显示出来。
类2个必要参数:
idd显示ID,别重复。
duration持续显示时间。
controls类:实际显示的东西,,,后台对象。

ExampleControl类,这是是真正显示的元素,类名字随便起,可以当做文本框。
文本参数:
idc控制id,别重复。
type文本框类型,好像有滚动功能,0代表单行文本
style对齐,0代表左对齐
•X–控件的左上角相对X
•Y–控件的左上角相对Y
•W–相对宽度的控制
•H–相对高度的控制
font字体
sizeEx字号
colorBackground背景颜色RGB
colorText字颜色RGB
text终于到文字内容了。
 楼主| 发表于 2015-6-18 16:01:04 | 显示全部楼层
本帖最后由 中国梦强军梦 于 2015-6-18 16:02 编辑

第三章  屏幕定位
正如我已经提到的,在ARMA任何对话框是一个组合的风格和类型。类型定义了对话框的基本功能,
无论是一个简单的框或列表或一个按钮或者一个滑块。甚至有一种游戏地图以及。样式定义对话框的外观或
其他变化的基本功能。有些人可能需要额外的参数。
各种type参数实在太多了,所以我只用type=0默认参数,具体参数定义请看BI WIKI。


对话框的大小和定位

中间那个蓝色框框的坐标在不同分辨率的显示器上都是一样的。


这就是为什么当你建立你的GUI元素,你的定位和大小都需要计算这个框框。例如,W = 0.5他就是蓝框框
一半宽度。这里要注意,蓝框框是4:3比例,方块数据就是这样:

//square box the size of h
h = 0.7;
w = 0.7 * 3 / 4;

//square box the size of w
h = 0.7 * 4 / 3;
w = 0.7;


获取屏幕宽度,有两个命令将返回屏幕的相对宽度和高度:safezonewsafezoneh。如果蓝盒子的宽度为W = 1
你的整个屏幕的宽度为W = safezonew;屏幕宽度还有另一个命令, safezonewabs多显示器连屏时的总宽度。
所以,如果你想让你的盒子覆盖整个屏幕:




//with normal setup
h = safeZoneH;
w = safeZoneW;

//counting in multi-monitor setup
h = safeZoneH;
w = safeZoneWAbs;

屏幕的左上角是:
//with normal setup
x = safeZoneX;
y = safeZoneY;

//counting in multi-monitor setup
x = safeZoneXAbs;
y = safeZoneY;


  1. class RscTitles
  2. {
  3.         class ExampleTitle
  4.         {   
  5.                 idd = -1;
  6.                 duration = 10; //show for 10 seconds
  7.                 class controls
  8.                 {
  9.                         class ExampleControl
  10.                         {   
  11.                                 idc = -1;
  12.                                 type = 0;
  13.                                 style = 2; //centre text
  14.                                 x = safeZoneX + safeZoneW - 0.6 * 3 / 4;
  15.                                 y = safeZoneY + safeZoneH - 0.6;
  16.                                 h = 0.6;
  17.                                 w = 0.6 * 3 / 4; //w == h
  18.                                 font = "EtelkaNarrowMediumPro";
  19.                                 sizeEx = 0.03;
  20.                                 colorBackground[] = {1,1,0,1}; //yellow background
  21.                                 colorText[] = {0,0,1,1}; //blue text
  22.                                 text = "Bottom Right Corner Square Box";
  23.                         };  
  24.                 };       
  25.         };
  26. };
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入VME

x

点评

给楼主点赞,坐等更新。  发表于 2015-6-18 17:57
发表于 2015-6-18 20:54:05 | 显示全部楼层
lu guo bang ding !
发表于 2015-6-18 21:49:44 | 显示全部楼层
楼主辛苦了
很好的教程,以前有很多不明白现在明白了很多
 楼主| 发表于 2015-6-18 22:01:01 | 显示全部楼层
啤酒冲米二 发表于 2015-6-18 21:49
楼主辛苦了
很好的教程,以前有很多不明白现在明白了很多

不会这么快就有作品了吧。。。。。

后面不翻译了,下面一章是介绍各种type的效果的,图太多没法发。
然后讲了和SQF交互,有一些视频看不了,就不翻了
http://killzonekid.com/arma-scripting-tutorials-gui-part-3/
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-3-29 08:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表