惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
有赞技术团队
有赞技术团队
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
B
Blog RSS Feed
博客园_首页
Y
Y Combinator Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
雷峰网
雷峰网
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
H
Help Net Security
P
Proofpoint News Feed
B
Blog
云风的 BLOG
云风的 BLOG
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 毛尹航

GAMES202课程资源 游戏设计制作配置表原则 Unity中文字和图片混合 遇到大段ifelse不要慌,先分层让条件正交 NGUI文字破碎 一个可以用的Lua的Class函数 写一个可以用的Lua打印Table的函数 关于C#的接口的碎碎念 C#中接口是值类型还是引用类型? Unity3d笔试题大全 FPSCalc——简单FPS观测类 GameObjectPool——Unity中的对象池 MonoSingleton——Unity中的单例模式 用非递归、不用栈的方法,实现原位(in-place)的快速排序 一道有序洗牌的笔试题,阿里\UC等都用过 - 毛尹航 - 博客园 MFC中显示图像的放大、缩小、移动功能 MFC中设置对话框/窗体大小固定 MFC【5】MFC集合类 MFC【6】文件I/O和串行化
UI仔需要了解的坑
毛尹航 · 2021-07-08 · via 博客园 - 毛尹航

不要写UI。

不要写UI。

不要写UI。

……

好吧,如果你和我一样日常工作就是写UI,那么有一些坑是须要了解的。它并不能帮你在简历里增添一笔,也无法让你在面试的时候理直气壮拍着胸脯说,老子写UI的。但它可以让你在写日常繁琐的焦头烂额的UI逻辑时,额……心里有个准备。

1.脚本顺序

首先所有的UI都有它的布局更新机制,比方说NGUI的脚本顺序如下:

NGUI的UIRect的锚点更新逻辑发生在Update中,在上图也就是Default Time内。

假设如果你的更新UI数据的逻辑发生在Default Time中或Default Time之后,那么,因为你更新UI数据而没有对应更新布局的情况就时有发生。

如果你写UI的逻辑在Default Time之前,那么脚本中已某个UI元素布局为参考的逻辑就要非常小心,因为你代码里所以依赖的位置信息很可能并不准确。

这里其实并没有一劳永逸的方法,比如如果我们调整了代码顺序之后就怎样怎样,问题就解决了如何如何的。不会的,骚操作是永远存在的。能怎么办?人类就是这么富有想象力。

2. ScrollView

另外的坑是ScrolView组件,当它和UIPanel以及UITable(UGUI或其他UI也都有类似的组件,可以对号入座)配合的时候能出现各种奇奇怪怪的Bug。这里最常见的现象是相对位置总算不对,显示出来了为什么界面要动一下?我想给它拉到这个位置它为什么到那个位置去了?咦,它怎么拽不动了?咦它怎么看不到了?

总之这里常见的问题是:1.UI元素摆放时位置不对,或UI选项不对,拼错了等等。2.刷新该初始化位置的时候没初始化。3.布局在期望更新的地方没有更新。通常需要代码里硬调一下。4.其他组件的逻辑对ScrolView进行了操作。比如像NGUI的SpringPanel。

3. 循环列表

在你的项目里它可能有其他名字,我就遵循我的第一个项目的命名了,它在NGUI里长这样:

上百个格子的背包,各种成就列表,任务列表,商店列表,和ScrollView相似,ScrollView遇到的写循环列表时都能遇到。而且还会遇到实例化速度慢,同一元素复用越高越臃肿,越低越费劲。动态初始化组件怎么能变快。变高怎么样?变宽怎模样?额,这俩好像是一个问题。总之,这是一个项目初期就需要去解决的问题。当你像我一样打开项目发现有三种不同写法的循环列表的时候,嗯,脑瓜子嗡嗡的。

结语:不要写UI。不要写UI。不要写UI……