找回密码
 点一下
查看: 3287|回复: 15

SC2界面编辑器和对话框的长度单位和计算规则

[复制链接]
发表于 2012-9-30 21:19:55 | 显示全部楼层 |阅读模式
很多人问起SC2的界面编辑器和对话框使用的长宽数值到底是用什么做单位的。它和当前分辨率的关系又是什么。

鉴于SC2的界面控件的长宽分别只有2种选择(指定数值,或者最大化到父控件)。因此了解长度单位是很有必要的。而且在不同分辨率下界面元素的全屏长宽不同,因此不注重处理方法的话同样会导致在一个分辨率下显示正常的界面,到了另一个分辨率下就是一团乱。

很多人会先入为主地认为长度单位是像素,这当然是不对的。以下说明星际2自定义界面控件的长度计算方法:

为表述方便起见,我们今后就把SC2的界面元素长度单位起名为d,这样可以更明确地和像素进行区分。比如,我用触发器把一张图片的长度参数设为1,那么它的长度就是1d。

SC2界面长度的计算方法有点复杂,但是最简单的记忆方法是记住这一条:

1.不管采用何种分辨率,SC2界面高度总是1200d(除了一个例外)。也就是说,不管你SC2的窗口拉多大或者多小,一张高度设为1200d的图片总是能和它一样高。除了一个特殊的例外,而这个例外会在下文提到。

那么,界面宽度是否也是固定值呢?这是不对的。这也就是关键的地方,这个值和分辨率相关:


2.界面宽度与高度的数值比总是与分辨率宽高比相同。也就是说,如果你的SC2分辨率是4:3,那么界面宽度和高度数值比也是4:3,这很大程度上是为了保证每个界面元素不会因为宽屏分辨率而被拉的很扁。注意,这个值只和分辨率比值相关,在1024x768(4:3)分辨率下,那么整个界面的大小将是1600dx1200d。1280x960(4:3)分辨率下,界面大小还是1600dx1200d。而在1680x1050下(16:10),界面大小为1920dx1200d。因此,在任何分辨率下,SC2界面总宽度=1200d*分辨率宽高比。以下是几种常见宽高比下的SC2界面大小:

  • 4:3 - 1600dx1200d
  • 16:9 - 2133dx1200d
  • 16:10 - 1920dx1200d

要注意的是,以上仅仅是常见标准分辨率。由于SC2是可以窗口化的,因此你可以分辨拉伸长和宽以制造其它各种奇葩分辨率。但是以上规则依然有效。但并不是“任意”分辨率哦,且看下一条。


3.界面宽度数值永远不会小于1600d!这一条非常重要!无论你怎么拉伸界面长宽,你无法令界面宽度下降到1600d以下。这也就是为什么SC2在窗口化以后你可以拉伸窗口的长宽,但是这个窗口的长宽总是存在一个最小值,你无法再缩小它。

那么,有了这一点,再加上面上提到的1200d是界面固定高度,这是否意味着一点,SC2的界面高宽比最小值是4:3,也就是长至少是宽1.33倍呢?hmmm暴雪的设计人员显然是如此希望的,但是事实是世上还存在一种用于老旧显示器奇葩分辨率,而且是暴雪不得不去兼容的。也就是传说中的

  • 5:4分辨率

只要计算一下就知道,如果高度保持1200d,那么在5:4分辨率下宽度就要变成1500d,而这明显小于1600d这个最小值。因而这个分辨率造成了唯一一个例外:


4.当分辨率小于4:3时,界面高度数值是可以变化的。变化区间在1200d-1280d之间。这一例外完全是为了兼容奇葩的5:4分辨率。1200依然是界面高度的最小值。但是如果你进一步缩短窗口宽度,那么会使得分辨率宽高比进入介于4:3和5:4之间的区间。

这时候,由于第三条规则的影响,界面宽度将一直保持1600d。因而高度数值将等比例增长。要注意,无论你如何调整SC2窗口的长宽,5:4是你能达到的最小值。因此,这导致界面高度即使变化,也不会超过1280d。

为了方便大家记住,专门把这一条作为单独的规则列出:


5.5:4是SC2所允许的最小宽高比,而16:9是最大宽高比。5:4即宽度是高度1.25倍的情况。此时界面大小为1600dx1280d。16:9即1.77倍,此时界面大小为2133dx1200d。也就是说高不能超过1280d,宽不能超过2133d

目前常见的5:4分辨为1280x1024,但是上个世纪这种宽高比则更为常见。比如720×576,hmmm
 楼主| 发表于 2012-9-30 21:28:47 | 显示全部楼层
最近有不少人在问界面问题,所以这里专门开个帖子说明一下。

虽然规则有点复杂,但是主要就只需要记住两个关键数值:1600和1200。所以如果你的界面想要能够在所有分辨率下都能被完整显示,可以使用1600dx1200d制作界面,并居中显示。当然这是在你必须使用绝对长宽的前提下。大部分时候建议大家使用锚点来设置界面元素靠近左右上下的边界或者居中。
回复

使用道具 举报

发表于 2012-9-30 21:33:11 | 显示全部楼层
这个算沙发吧~
回复

使用道具 举报

发表于 2012-9-30 21:40:36 | 显示全部楼层
本帖最后由 四夕水草肃 于 2012-9-30 21:50 编辑


学到了新的知识呢……

总结一下就是:
以4:3屏为分界点,4:3时不论屏幕分辨率为多少界面尺寸一律为1600×1200。
如果屏幕更宽就增加宽度,屏幕更窄就增加高度。
不论屏幕多窄,5:4是最方的情况了,宽高比无法小于这个值。这时界面尺寸为1600×1280。

顺便头目,如果长度单位是d的话面积单位应该是d^2 ?

点评

总结得很好。  发表于 2012-9-30 21:53
回复

使用道具 举报

 楼主| 发表于 2012-9-30 21:54:08 | 显示全部楼层
总结的很好,顺便最宽的情况是16:9,此时界面尺寸为2133dx1200d
回复

使用道具 举报

发表于 2012-10-1 07:54:55 | 显示全部楼层
16:998=1600*99800
16:12.8=1600*1280
16:12=1600:1200
16:10=1920*1200
16:9=2133*1200
16:1=19200*1200

感觉就是这样了。
回复

使用道具 举报

发表于 2012-10-1 09:03:28 | 显示全部楼层
那么 有没有方法获得这个屏幕分辨率比值呢,
也就是说 我可以获得比值这个参数
然后根据这个参数来计算出对话框的绝对位置
来保证我的对话框可以符合我的位置要求。
回复

使用道具 举报

发表于 2012-10-1 11:44:37 | 显示全部楼层
本帖最后由 thewisp 于 2012-10-1 11:46 编辑

其实就是所谓的“虚拟像素”。。。对于横版屏幕的游戏来说,既然不可能为每个分辨率设计一套界面,那么最合理的方法显然是将屏幕的上下距离定为常数。
war3 UI也是基于相同原理的,左右是0.8,上下是0.6,相当于对应800 x 600 不过war3根本就没有对纵横比调节的能力。。。

ps. 看来sc2设计的时候就是拿16:10当原型的,换言之所有的效果都应该在16:10下达到最优

点评

游客
16:9?16:10?  发表于 2012-10-1 18:37
回复

使用道具 举报

 楼主| 发表于 2012-10-2 13:16:59 | 显示全部楼层
然后现在有一个问题留给大家考虑:

你是否有办法实现按照屏幕百分比设置控件长宽?误差控制在2%以内好了
回复

使用道具 举报

发表于 2012-10-2 14:09:07 | 显示全部楼层
能控制在2%就不错了,如何弄呢~~~
回复

使用道具 举报

发表于 2012-10-9 23:13:05 | 显示全部楼层
交作业!

简单做了个检测屏幕分辨率的地图,进入地图后按下Alt键不放,然后晃动下鼠标好了,分辨率会在屏幕下方显示的。

现在还是验证阶段,不确定这样的方法对还是不对,如果可行的话,我会尝试把这个方法完善下。

UI坐标检测.SC2Map

33 KB, 下载次数: 17

回复

使用道具 举报

发表于 2012-10-10 09:39:47 | 显示全部楼层
全屏UI的时候咋办~
回复

使用道具 举报

发表于 2012-10-10 09:41:54 | 显示全部楼层
全屏UI貌似也好用
回复

使用道具 举报

 楼主| 发表于 2012-10-10 15:13:46 | 显示全部楼层
准确率还算高嘛
回复

使用道具 举报

发表于 2012-10-15 16:13:38 | 显示全部楼层
本帖最后由 cccty1l 于 2012-10-15 16:15 编辑

ok,更新了下,现在加了几个图片,可以看一下调整了屏幕分辨率之后,这个图片的自适应效果。

使用方法还是按下Alt键不放,晃动鼠标即可。不过因为现在使用的是近似算法,所以在屏幕正中心晃动的话,检测的准确率会好一些。

UI坐标检测 v2.SC2Map

42.17 KB, 下载次数: 16

回复

使用道具 举报

发表于 2012-10-16 10:44:43 | 显示全部楼层
为什么还是零下载...

我还是附上几张图好了。


下面这张是在窗口模式下的截图
1.jpg

然后我把窗体最大化之后的截图
2.jpg

最好是控件自适应之后的截图
3.jpg

因为之前的试验,可以获得游戏的当前分辨率了。然后在结合头目在顶楼的原理,就可以计算出新的控件大小了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-4-27 19:43 , Processed in 0.290952 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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