• QQ21031394

    工作时间

    周一至周五:9:30-18:30

    周末及节日:根据情况调休

  • 手机版二维码

    随时手机查素材

  • 扫描二维码

    加入官方QQ群

站长推荐
Seago 一级会员
  • 未知地域
  • 84发帖数
  • 20主题数
  • 0关注数
  • 23粉丝

[Seago教程] 【Seago.】UI系列教程(三)——简单的复合UI制作

  [复制链接]
Seago 发表于 2020-11-28 02:25:21 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
提莫作坊QQ群:提莫作坊www.tbwlm.cn

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这一篇主要是上一篇的应用,我们以一个带使用次数的按钮为例,类似于物品栏中的药水。
还是老规矩,本系列教程主要讨论触发中的处理,fdf的使用不作讨论。

btn.png

首先我们分析一下这个UI大致有哪些组成:
1、背景图片
2、次数
3、用于响应的按钮

背景图片
这点不用多说,一个backdrop即可,大小、图片路径按需求设置。

次数
text表示即可,数量变更时重新设置文本内容。需要注意,数量通常是用整数记录,而text的文本需要使用字符串,这就需要将数字转换成字符串,也就有可能产生新的字符串(这里的新指的是字符串内容,而非其引用或是地址)。在《浅析异步与分车中》有提过,涉及新字符串的操作最好保持同步。
为了视觉效果,也可以增加一个背景边框,backdrop即可,背景边框的图片可以使用魔兽自带的贴图。
将次数的右下角锚定背景的右下角。
特别地:我们可以将次数这部分UI单独看作一个整体,而这个整体再作为整个按钮的儿子。因为“次数”这个部分是个整体,不光是按钮,其他的功能UI也可能会用涉及到“次数”这个部分。

按钮
即Button,大小通常和背景保持一致,按钮中心锚定背景中心。主要用于事件的响应。

这里给出简单的j代码示例,T类似。
//边长0.04
local real w = 0.04
//j中ui的类型就是integer,即整数,记录的是UI的内存地址。
//创建一个空frame,作为按钮整体的父节点。名称根据自己需要,父节点使用游戏UI,模板不需要,id通常也用不到。
//UI的类型要大写
local integer frame = DzCreateFrameByTagName("FRAME", fname, GameUI, "", 0)
//按钮的背景
local integer bd = DzCreateFrameByTagName("BACKDROP", bdname, frame, "", 0)

//次数部分。可以提取出来单独封装一个方法。
//空Frame作为父节点。并以按钮的根节点作为父节点
local integer countFrame = DzCreateFrameByTagName("FRAME", cfname, frame, "", 0)
//次数背景
local integer countBd = DzCreateFrameByTagName("BACKDROP", cbdname, countFrame, "", 0)
//次数文本
local integer countText = DzCreateFrameByTagName("TEXT", ctname, countFrame, "", 0)

//按钮
local integer btn = DzCreateFrameByTagName("BUTTON", btnname, frame, "", 0)

以上创建语句可以看到,frame是作为整个按钮的根UI,背景、按钮、次数UI的整体是他的儿子,次数UI的背景、文本是次数UI根节点的儿子,也就是他的孙子。
在不需要展示次数的按钮则不需要创建次数UI,或者对次数UI的根节点设置隐藏即可。
tt.png
就如上一篇教程所言,一个合理设计的复合UI整体应该是一个树形结构,而不是单薄的平面结构。当然如果功能十分简单那么也没必要刻意地设计,这里只是为了尽可能规范的示例以为复杂的情况作准备。

设置大小,可以使用变量记录。
//按钮、背景的大小保持一致。
call DzFrameSetSize(frame, w, w)
call DzFrameSetSize(bd, w, w)
call DzFrameSetSize(btn, w, w)
//次数部分的大小
call DzFrameSetSize(countFrame, 0.02, 0.01)
call DzFrameSetSize(countBd, 0.02, 0.01)
//特别的,文本UI通常不用设置大小,默认会自适应,除非有特殊需求。
//这里对字体及字号进行设置。使用的是默认的字体。
call DzFrameSetFont(f, "fonts\\dfst-m3u.ttf", 0.009, 0)

锚点相关
//按钮背景,中心锚点根节点中心,无偏移。锚点位置的本质是整数,0-8,对应从左上角一直到右下角,4即中心。
call DzFrameSetPoint(bd, 4, frame, 4, 0.0, 0.0)
//按钮同理
call DzFrameSetPoint(btn, 4, bd, 4, 0.0, 0.0)
//次数部分
call DzFrameSetPoint(countBd, 4, countFrame, 4, 0.0, 0.0)
call DzFrameSetPoint(countText, 4, countBd, 4, 0.0, 0.0)
//次数的整体绑定给按钮的根节点或者背景。8表示右下角
call DzFrameSetPoint(countFrame, 8, frame, 8, 0.0, 0.0)

//设置背景图片。没什么特别的,就不作展示了。

如果需要添加提示信息、高亮等,可以给BUTTON注册进入、离开事件。注意,是BUTTON,给背景注册是没用的。
后面的教程会逐步介绍注册事件相关。

游客,如果您要查看本帖隐藏内容请回复


楼主热帖
免责条款:本站仅提供学习的平台,所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,并不承担任何法律责任,如果对您的版权或者利益造成损害,请提供相应的资质证明,我们将于3个工作日内予以删除。

本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

本网站所提供的信息,只供参考之用。本网站不保证信息的准确性、有效性、及时性和完整性。本网站及其雇员一概毋须以任何方式就任何信息传递或传送的失误、不准确或错误,对用户或任何其他人士负任何直接或间接责任。在法律允许的范围内,本网站在此声明,不承担用户或任何人士就使用或未能使用本网站所提供的信息或任何链接所引致的任何直接、间接、附带、从属、特殊、惩罚性或惩戒性的损害赔偿。

精彩评论74

牧少皇 发表于 2020-11-28 02:31:34 | 显示全部楼层
感谢大佬教程
琉璃之梦 发表于 2020-11-28 12:30:38 | 显示全部楼层
感谢分享
东皇大帝 发表于 2020-11-28 15:26:41 | 显示全部楼层
瞅瞅看看想
tancy 发表于 2020-11-28 16:56:23 | 显示全部楼层
谢谢楼主分享
[发帖际遇]: tancy 在论坛发帖时没有注意,被老提莫摸去了 12 枚 绿钻. 幸运榜 / 衰神榜
来看看 发表于 2020-11-28 18:04:38 | 显示全部楼层
谢谢大佬最近在研究ui
yishiwangxi 发表于 2020-11-29 12:07:44 | 显示全部楼层
感谢分享
Secret放肆 发表于 2020-11-30 21:47:35 | 显示全部楼层
学习了,感谢分享。
SkyNoTree 发表于 2020-12-1 10:45:08 | 显示全部楼层
为什么我设置了两个UI,一个是背景,一个是按钮,注册事件是触发另一个触发器,然后我进游戏测试时一点击UI游戏就直接崩溃
 楼主| Seago 发表于 2020-12-1 17:20:25 | 显示全部楼层
SkyNoTree 发表于 2020-12-1 10:45
为什么我设置了两个UI,一个是背景,一个是按钮,注册事件是触发另一个触发器,然后我进游戏测试时一点击UI ...

注册事件涉及到同步和异步的问题,你留意下T上面的注释。建议学习一点简单的Jass,能看懂T转J就行,UI的注册事件T确实很不方便,用J会简单很多。

强调下版规的规定,如有恶意灌水从重处罚:
=====发表主题规则=======
1.主题内容请一定要附带预览图片,谢谢;
2.搬运来的东西请尽量不要卖钱!;
3.发帖有任何疑问请联系QQ21031394;
=====发表回复规则=======
1.禁止直接复制标题内容的;
2.禁止纯数字或者纯字母的;
3.禁止乱打一通文不对题;
4.禁止屠版和刷分行为;
第一次扣分处理,第二次扣分+警告,警告三次禁言三天,绝不手软,情况严重的直接封号,请大家珍惜自己的账号!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
天工维度唯一QQ群
786014245

欢迎进群交流,入群答案:编辑器

  • 官方在线客服

    QQ客服:小雪

    点击交谈

    QQ客服:砂糖

    点击交谈

    团队老大:荀公子

    商务合作
  • 上海市静安区共和新路4718号宏慧新汇园6号楼603室

  • 手机扫码查看手机版

    手机查找资源更方便

  • 扫一扫关注官方微信

    加入官方QQ群

Powered by 天天RPG&DZX3.4 ©2020-2021 Comsenz Inc.提百万设计( 沪ICP备18032615号-1 )营业执照