Unity UI制作心得记录
也是玩上 unity 了家人们。
记录一下与 ui 界面斗智斗勇的半个月。
TextMeshPro
textMeshProUGUI.preferredHeight
获取文本长度,便于修改滚动条长度或文本物体长度。
TextMeshPro 中的使用的文本 asset 可以在导入字体 font.ttf 文件之后右键 -> create -> TextMeshPro -> font asset -> SDF 这样创造可以被 text 使用的 font asset
在 TextMeshPro 的 text 中加入文本可以使用以下代码。
textMeshProUGUI.text = textMeshProUGUI.text + str + '\n' + '\n';
Scroll Rect
一个滚动条组件,在 content 中填入子对象就可以让子对象进行滚动。
一般来说,还要再在添加了 scroll rect 组件的对象上再添加一个 rect mask2D 这样就能让滚动的对象只显示一部分。
滚动条的位置由一个小数表示,这个小数记录了滚动条滚动到的位置在整个滚动条中的比例,如 sr.verticalNormalizedPosition = 0;
rectTransform.sizeDelta
是 scroll rect 的大小,是一个 类型,一个将 sr 长度调整为 text 长度的标准代码如下。
tmp = textMeshProUGUI.preferredHeight + 10f; rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, tmp);
文件读取
想要读取一个文件,就需要这个文件的相对地址,可以参考以下代码,“文件”文件夹就在 Asset 文件夹中。
public string FPath = "文本"; public string fullPath; public void Read() { string filePath = num.ToString() + ".txt"; fullPath = Path.Combine(Application.dataPath, Path.Combine(FPath, filePath)); }
接着是读取文件,使用 File.ReadAllText
函数, 对于逐字符阅读并不友好,所以最好直接读入大字符串再用 Split
函数切割。
这个函数的括号中填入切割指示符,在文本末尾不要加入指示符,否则会单独切割出一个换行符。
if (File.Exists(fullPath)) { Debug.Log(num.ToString()); string TMP = File.ReadAllText(fullPath); text = TMP.Split('>'); }
菜单
下面给出一个切换菜单的样例。
public void SwitchTo(GameObject _menu) { for(int i = 0; i < transform.childCount; i++) transform.GetChild(i).gameObject.SetActive(false); if(_menu != null) { //Time.timeScale = 0f; _menu.gameObject.SetActive(true); UIManager.instance.isInCanvas = true; } }
自动排列和自动缩放
可用组件:
· grid layout group 适合于制作物品栏,但无法实现自动拉伸。
· vertical layout group / horizontal layout group 适合制作文本框,可实现所有子元素的自动拉伸。
· content size fitter 可根据子元素长宽自动拉伸带有组件的 ui ,非常方便,此外该组件可以实现根据 textmeshpro.text 文本长度自动调整 ui 长度。
· layout element 可以实现脱离 layout 组件的自动排列。
Trivia
所有的 GetComponent
操作一定要在 Awake
中完成,并且在 inspector 中完成所有赋值。
不然很容易导致 Object reference not set to an instance of an object
的报错。
本文作者:蒟蒻丁
本文链接:https://www.cnblogs.com/caijiLYC/p/18423413
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!