Unity-UGUI

1. 基本内容
  1. UGUI部分控件支持检测控件值改变,入参Singlefloat类型,选择最上方Dynamic中的方法
  2. 按下ALT键再选择适配UI方式,即可将子物体适应到父物体对应合适位置与大小
  3. 拖动子物体四花瓣位置直到容纳该物体,即可实现子物体大小与父物体位置、大小保持相对比例
    拉伸自适应
  4. 在检查器右方 : 处切换DEBUG模式,可以查看物体相对坐标,锚点坐标。
    相对坐标:物体相对于锚点的坐标
    锚点坐标:锚点相对于父物体的坐标
    因此修改UI位置时,相对坐标修改尽量使用锚点坐标进行修改。
  5. 获取UI组件宽高:transform.GetComponent<RectTransform>().rect.width
  6. 左为蓝图模式:物体操纵大小不会受到缩放影响
    右为原始编辑模式:改变物体轴心点时,不再修改轴心点而是改为修改物体位置代替
    在这里插入图片描述
2. 基本内容
  1. Canvas三种类型:界面顶部、摄像机指定位置、世界空间显示(需指定渲染它的摄像机)
  2. Canvas Scaler:
    恒定像素大小时,缩放系数表示画布的整体缩放大小
    屏幕大小缩放时,根据参考分辨率配置屏幕。屏幕匹配:依赖宽高、向外扩展,向内收缩。
    每单位参考像素越小,UI设置成原生大小时渲染的大小越小
  3. GraphicRaycaster用于UI层的射线检测。
    忽略保留图形启用时,如果UI图像已经正反翻转了,那么它将不再射线检测。
    阻塞对象选定时,决定UI在 摄像机指定位置、世界空间显示 情况下,当2D、3D有碰撞体的物体在UI层之上时,哪种不允许射线穿透点击。
    阻塞遮罩决定了阻塞对象发生时,阻塞物体的条件层级。
  4. CanvasGroup组件功能分别为:透明度、按钮可用性、射线检测、忽略父级的CanvasGroup组件
3. 功能控件
  1. Button控件
    Unity的按钮获取焦点后,点击空格或回车键,也可以调用按钮监控事件,这是因为Button组件的navigation被默认为Automatic,若改成None可禁止该行为。
    Navigation(按钮导航):

在EventSystem中,存在一个当前被选中按钮,我们可以通过代码按下的上下左右,使被选中按钮进行更改。

方法描述
None(关闭)关闭导航。
Automatic(自动导航)自动识别最近的一个控件并导航到下一个控件。
Horizontal(水平导航)水平方向导航到下一个控件。
Vertical(垂直导航)垂直方向导航到下一个控件。
Explicit(指定导航)特别指定在按下特定方向键时从此按钮导航到哪一个控件。
方法描述
onClick.AddListener()添加监听点击的事件
  1. Slider控件
方法描述
onValueChanged.AddListener(float)添加监听值改变的事件

minvalue、maxvalue 设置最大、最小值
整数决定是否仅限整数

  1. Dropdown控件
方法描述
onValueChanged.AddListener(int)添加监听值改变的事件

Dropdown的选项列表中可以设置每个选项的对应的图像。
需在Dropdown子对象中新建一个image放在标题图像上,再在Template对象中新建一个image放在项图像上
在这里插入图片描述

  1. Toggle控件
方法描述
onValueChanged.AddListener(bool)添加监听值改变的事件

ToggleGroup组件
Allow Switch Off:允许管理的开关列表中一个也未被点击。

  1. RawImage控件
    允许图像局部显示,即只显示图像的一小部分。
    UV矩形:x,y偏移比,wh宽高显示比
    资源中右键新建渲染器纹理,在摄像机中赋值该纹理,再为 RawImage 也赋值该纹理,即可实现在UI面板中显示摄像机画面的效果。该功能可用于实现在UI面板中显示3D模型

  2. InputField控件
    内容自定义时的验证:
    直线类型:单行、回车键提交、回车键换行
    输入类型:主要区分是否为密码
    键盘类型:用于移动端提示系统这里输入的类型来弹出输入框
    角色验证:输入规则限制

  3. 布局组件
    子力扩展会在空间内自动平分内部元素
    控制子对象大小会令子对象充满内容,必须与子力扩展共同使用
    为子对象添加LayoutElement,这样就可让子对象不在受控于父对象的布局组件
    LayoutElement(依赖于布局组件):最小宽高(底线,优先于父组件的宽高布局)、优先选择的宽高(次级)、扩展倍率(最低级)

  4. AspectRatioFitter 宽高比适配器
    控制图像宽高比为固定值
    纵横模式:通过宽、高度控制高宽度、在父物体内、外部的宽高比

  5. Selectable 选择(聚焦)控件
    可实现接口ISelectHandler, IDeselectHandler, IUpdateSelectedHandlerI,IScrollHandler, ISubmitHandler, ICancelHandler, IMoveHandler 完成对选择控件的使用
    IScrollHandler 滚轮
    ISubmitHandler 提交
    ICancelHandler 取消
    IMoveHandler 移动

  6. LayoutRebuilder.ForceRebuildLayoutImmediate 重新计算布局

4. 事件系统
  1. 若要使用此系统,需先引用:using UnityEngine.EventSystems;,并继承接口。
    IPointerEnterHandler:指针进入
    IPointerExitHandler:指针离开
    IDragHandler:拖拽中
    IInitializePotentialDragHandler:开始拖拽(点击时)
    IBeginDragHandler:开始拖拽(拖动时)

  2. 若想非UI也可以使用这些系统,那么需要给摄像机挂载Physics RaycasterPhysics 2D Raycaster

  3. EventSystem.current.IsPointerOverGameObject() 当鼠标在UGUI上时,该数值为True,如果取消射线勾选,那么该UI不会被判定,

  4. EventSystem.current.SetSelectedGameObject() 设置选中的对象

方法描述需要继承类
OnPointerDown(PointerEventData)鼠标落下事件IPointerDownHandler
OnPointerUp(PointerEventData)鼠标抬起事件IPointerUpHandler
OnPointerEnter(PointerEventData)鼠标进入事件IPointerEnterHandler
OnPointerExit(PointerEventData)鼠标离开事件IPointerExitHandler
OnPointerClick(PointerEventData)鼠标点击事件IPointerClickHandler

注:如果父物体实现了Up、Down接口,而子物体没有实现。点击子物体时会调用父物体的Up、Down函数

  1. 代码添加事件
// 初始化列表
EventTrigger trigger = gameObject.AddComponent<EventTrigger>();
trigger.triggers = new List<EventTrigger.Entry>();
// 新建一个点击事件,并添加callback
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerClick;
entry.callback = new EventTrigger.TriggerEvent();
entry.callback.AddListener((data) => Debug.Log("点击了"));
// 添加到列表
trigger.triggers.Add(entry);
  1. 通过点击的位置获取世界坐标
public void OnPointerClick(PointerEventData eventData)
{
    var rect = GetComponent<RectTransform>();
    Vector3 v3;
    RectTransformUtility.ScreenPointToWorldPointInRectangle(rect, eventData.position, eventData.enterEventCamera, out v3);
    Debug.Log(v3);
}
5. 决定UI渲染层级的四种因素
  1. Camera层级
  2. 排序图层
  3. 图层顺序
  4. 自然层级

注意,如果为子对象添加Canvas组件,并添加GraphicRaycaster,即可覆盖原本排序图层逻辑,当想要对象无视自然层级排列时,可采用此方法解决。

Unity-UGUIUnity游戏引擎中的一个UI系统,可以用来创建和管理用户界面。它提供了丰富的功能和工具,使得开发者能够轻松地制作各种表格。 使用Unity-UGUI制作表格的步骤如下: 1. 创建Canvas对象:在Unity中,首先需要创建一个Canvas对象,作为UI渲染的容器。选择GameObject -> UI -> Canvas,即可创建一个Canvas对象。 2. 添加Table组件:选择Canvas对象,在Inspector面板中点击"Add Component"按钮,然后在搜索栏中输入"Table",选择适合的Table组件,点击添加。 3. 设置表格的行列数:在Table组件的Inspector面板中,设置表格所需的行数和列数。 4. 设置表格样式:可以在Inspector面板中设置表格的颜色、大小等属性,以满足具体需求。 5. 添加表格内容:可以通过代码或者拖拽方式,向表格中添加所需的文本或图片。可以通过操作表格的行列索引,将内容放置在特定的位置。 6. 设置表格的交互性:可以为表格中的每个单元格添加点击事件或其他交互效果,提升用户体验。 7. 调整表格布局:可以通过调整Canvas的大小、位置,或者改变组件之间的层次关系,来调整表格的布局。 8. 完善表格功能:可以根据具体需求,添加更多表格的功能,比如排序、过滤、搜索等。 9. 测试和优化:在表格制作完成后,可以进行测试,查看表格的显示效果和交互效果,并进行优化。 总之,使用Unity-UGUI制作表格,只需简单的操作和设置,就能够创建出各种样式、功能丰富的表格,满足游戏或应用程序的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莉萝爱萝莉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值