uGUI备忘

醉酒当歌 提交于 2019-12-22 01:31:49

ContentSizeFitter:

该组件可以帮我们在空间内容发生变化导致空间尺寸改变时,重新计算RectTransform。

但在复杂的UI应用中,可能我们给文本赋值后,没有正确地计算RectTransform,那么我们需要手动触发计算:

ContentSizeFitter csf;
csf.enable = false;
csf.enable = true;

如果这时空间本身地activeSelf=false,那么上面地调用也不会触发计算,我们需要在activeSelf=true的下一帧执行触发计算。

更新RectTransform

改变RectTransform的top

GetComponent<RectTransform>().offsetMax = new Vector2(GetComponent<RectTransform>().offsetMax.x, top);

改变RectTransform的bottom

GetComponent().offsetMin = new Vector2(GetComponent().offsetMin.x, bottom);

改变RectTransform的width,height

GetComponent<RectTransform>().sizeDelta = new Vector2(width, height);

改变RectTransform的pos

GetComponent<RectTransform>().anchoredPosition3D = new Vector3(posx,posy,posz);

GetComponent<RectTransform>().anchoredPosition = new Vector2(posx,posy);

Text

获取文本显示的宽高

Text txtObject;

String str;

TextGenerationSetting settings = txtObject.GetGenerationSettings(Vector2.zero);

Vector2 sz = Vector2.zero;

sz.x = txtObject.cachedTextGeneratorForLayout.GetPreferedWidth(str, settings);

sz.y = txtObject.cachedTextGeneratorForLayout.GetPreferedHeight(str, settings);

获取文本mesh构造信息

Text txtObject;
String str;
TextGenerationSetting settings = txtObject.GetGenerationSettings(Vector2.zero);
UICharInfo[] arrCh = txtObject.cachedGeneratorForLayout.Populate(str, settings);

UICharInfo存储了构造Mesh需要的数据

获取文本在RectTransform内显示的行数(宽度固定)

遍历UICharInfo,累计UICharInfo.charWidth,如果宽度超过RectTransform.sizeDelta.x,则换行。

Sprite 及图集

打包设置

  1. 在Project窗口内,右键鼠标->Create->Sprite Atlast,创建Atlas
  2. 选中创建的Atlas,在Objects For Packing列表,点+号,添加,并将图标目录拖上来
  3. 在Project Settings->Editor的Sprite Packer的Mode,选择always enabled

加载图集

SpriteAtlas spriteAtlas = Resources.Load<SpriteAtlas>("SpriteAtlas");
transform.Find("icon").GetComponent<Image>().sprite = spriteAtlas.GetSprite("ToolTip_Bg_0");
//sprite 
Sprite[] spriteArray = new Sprite[spriteAtlas.spriteCount];
//spriteArray得到数组
spriteAtlas.GetSprites(spriteArray);

ScrollRect

如果控件没有Image组件,则Mask不起作用

重新打开时,滚动到顶端:scrollRect.content.localPosition = Vector2.zero;

更详细的解析

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!