What are we, in the end?|

蒟蒻丁

园龄:4年7个月粉丝:3关注:4

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 的大小,是一个 vector2 类型,一个将 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 函数,csharp 对于逐字符阅读并不友好,所以最好直接读入大字符串再用 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 中国大陆许可协议进行许可。

posted @   蒟蒻丁  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起