• QQ21031394

    工作时间

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

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

  • 手机版二维码

    随时手机查素材

  • 扫描二维码

    加入官方QQ群

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

[Seago教程] 【Seago.】UI系列教程(四)——初期总结

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

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

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

x
本篇是对前几篇的内容进行总结与一定的补充扩展。主要还是针对Jass方向的作者,T不便于设计,但也可参考思想。

前几篇算是比较基础的认知,主要解决了UI的创建问题。核心思想就是“树形的层次结构”,即一组基本的UI控件,应该搞清楚他们内在的关系与联系,而不是简单的只当作孤立的个体拿去拼凑。
为什么一定要强调这一点,最基本的目的就是为方便封装
封装并不是表面看上去那么简单,把一堆操作都放在一个函数里,这种观点太狭隘了。就像做菜一样,正经做菜不同的菜有不同的做法,放什么材料都是有讲究的。去饭店里点菜,都是一份一份分开上的,哪有所有菜都混在一起一锅上的?
就如讲相对位置时的一句话,一定要弄清楚其中的因果关系——因为这些操作之间彼此有关联,他们共同在干一件事情,所以我们把他们放在一起,封装成了统一的函数,这样的操作恰好也可以为我们提供便利。而不是为了省事,所以不经分析就把所有的东西都放在一起。这也就体现了软件工程中常说的一句话“高内聚,低耦合”。通俗点来理解,就是功能是否便于移植和维护。我们有逻辑地将相关联的操作封装在一起,他们共同为一件事而工作,则我们的修改也将是纯粹的,因为产生的影响也始终是必要、可控的。而如果只是笼统地把所有东西都混合在一起,那么极有可能他们之间本没有任何联系,一旦发生修改则容易导致不必要的bug。
当我们将一套复杂的UI设计成一个层次分明的树结构时,则很容易理清他们之间的关联关系,从而方便我们进行不同程度的封装。而如果只是停留在单薄的平面结构,那么所有的UI都是孤立的,则很难去划分他们之间的关系。
当然,理论都是趋近完美的,实际操作总有不可预计的意外。我们不可能完全按照理论的假设去设计出一套万能的系统,难免有一些不得已得取舍,这是必然。在需要取舍时,具体孰轻孰重则需要作者结合实际情况以及自己的能力再进行抉择了。

UI的存取
这也是一个比较常见的问题,也是强调上一点的另一个原因
一旦开始使用UI,通常都会创建大量的UI,而不是简单的只是一两个,这时存取问题就很重要。见过比较多的是使用数组进行存取。数组的好处是不需要创建太多的全局变量,不至于看起来很乱。当然坏处也很明显,数组的索引都是整数,后期很容易忘记哪个整数代表哪个UI,或者因为自己的计算失误,导致取错了UI,排查起来也很麻烦。
我的解决措施是结合设计的树形层次结构进行UI的关系记录
前面的教程有提过,UI在代码中的本质其实是以整数的形式存在的,记录的是其在内存中的地址。而只要是整数,我们都可以结合哈希表来进行操作(可见哈希表实在是个好东西)。对于每一个UI,都可以作为哈希表的主索引,而次索引可以用来表示他与目标UI之间的关联关系,值则记录目标UI。这样,对于每一个功能模块而言,我们只需要专门记录一个UI即可,其余的所有UI都可以通过关联关系进行查找获取,这就和我们的树形结构对应上了。而关联关系虽然也是整数记录的,但通常不会太多,因为大部分复合UI,他们控件之间的关系都具有相似性,完全可以加以总结并进行设计,限制在有限的范围内。而不会像数组的索引那样,随着UI数量的增加而不断膨胀最终不可控。并且数组的上限只有8000多,而哈希表的索引空间理论上对于一场游戏而言是根本用不完的,用于记录每个UI之间的关系绰绰有余。

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


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

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

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

精彩评论47

牧少皇 发表于 2020-12-6 22:21:06 来自手机 | 显示全部楼层
感谢大佬分享
yishiwangxi 发表于 2020-12-7 11:53:56 | 显示全部楼层
感谢分享
hoyure 发表于 2020-12-7 16:18:07 | 显示全部楼层
谢谢大佬
thk1992 发表于 2020-12-10 00:10:00 | 显示全部楼层
好东西 支持
z409733721 发表于 2020-12-12 01:46:14 | 显示全部楼层
感谢分享
[发帖际遇]: 一个蘑菇砸在了 z409733721 头上,z409733721 赚了 3 枚 绿钻. 幸运榜 / 衰神榜
guisheng123 发表于 2020-12-13 11:39:51 | 显示全部楼层

感谢大佬教程
[发帖际遇]: guisheng123 乐于助人,奖励 1 枚 绿钻. 幸运榜 / 衰神榜
gandi2019 发表于 2020-12-15 10:00:36 | 显示全部楼层

感谢大佬分享
Sun丶包子 发表于 2021-1-4 11:48:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
yangxinlin 发表于 2021-1-4 15:48:24 | 显示全部楼层
感谢大佬分享

强调下版规的规定,如有恶意灌水从重处罚:
=====发表主题规则=======
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 )营业执照