赞
踩
transform.GetComponent<RectTransform>().rect.width
在EventSystem中,存在一个当前被选中按钮,我们可以通过代码按下的上下左右,使被选中按钮进行更改。
方法 | 描述 |
---|---|
None(关闭) | 关闭导航。 |
Automatic(自动导航) | 自动识别最近的一个控件并导航到下一个控件。 |
Horizontal(水平导航) | 水平方向导航到下一个控件。 |
Vertical(垂直导航) | 垂直方向导航到下一个控件。 |
Explicit(指定导航) | 特别指定在按下特定方向键时从此按钮导航到哪一个控件。 |
方法 | 描述 |
---|---|
onClick.AddListener() | 添加监听点击的事件 |
方法 | 描述 |
---|---|
onValueChanged.AddListener(float) | 添加监听值改变的事件 |
minvalue、maxvalue 设置最大、最小值
整数决定是否仅限整数
方法 | 描述 |
---|---|
onValueChanged.AddListener(int) | 添加监听值改变的事件 |
Dropdown的选项列表中可以设置每个选项的对应的图像。
需在Dropdown子对象中新建一个image放在标题图像上,再在Template对象中新建一个image放在项图像上
方法 | 描述 |
---|---|
onValueChanged.AddListener(bool) | 添加监听值改变的事件 |
ToggleGroup组件
Allow Switch Off:允许管理的开关列表中一个也未被点击。
RawImage控件
允许图像局部显示,即只显示图像的一小部分。
UV矩形:x,y偏移比,wh宽高显示比
资源中右键新建渲染器纹理,在摄像机中赋值该纹理,再为 RawImage 也赋值该纹理,即可实现在UI面板中显示摄像机画面的效果。该功能可用于实现在UI面板中显示3D模型
InputField控件
内容自定义时的验证:
直线类型:单行、回车键提交、回车键换行
输入类型:主要区分是否为密码
键盘类型:用于移动端提示系统这里输入的类型来弹出输入框
角色验证:输入规则限制
布局组件
子力扩展会在空间内自动平分内部元素
控制子对象大小会令子对象充满内容,必须与子力扩展共同使用
为子对象添加LayoutElement,这样就可让子对象不在受控于父对象的布局组件
LayoutElement(依赖于布局组件):最小宽高(底线,优先于父组件的宽高布局)、优先选择的宽高(次级)、扩展倍率(最低级)
AspectRatioFitter 宽高比适配器
控制图像宽高比为固定值
纵横模式:通过宽、高度控制高宽度、在父物体内、外部的宽高比
Selectable 选择(聚焦)控件
可实现接口ISelectHandler, IDeselectHandler, IUpdateSelectedHandlerI,IScrollHandler, ISubmitHandler, ICancelHandler, IMoveHandler
完成对选择控件的使用
IScrollHandler 滚轮
ISubmitHandler 提交
ICancelHandler 取消
IMoveHandler 移动
LayoutRebuilder.ForceRebuildLayoutImmediate
重新计算布局
若要使用此系统,需先引用:using UnityEngine.EventSystems;
,并继承接口。
IPointerEnterHandler:指针进入
IPointerExitHandler:指针离开
IDragHandler:拖拽中
IInitializePotentialDragHandler:开始拖拽(点击时)
IBeginDragHandler:开始拖拽(拖动时)
若想非UI也可以使用这些系统,那么需要给摄像机挂载Physics Raycaster或Physics 2D Raycaster
EventSystem.current.IsPointerOverGameObject() 当鼠标在UGUI上时,该数值为True,如果取消射线勾选,那么该UI不会被判定,
EventSystem.current.SetSelectedGameObject()
设置选中的对象
方法 | 描述 | 需要继承类 |
---|---|---|
OnPointerDown(PointerEventData) | 鼠标落下事件 | IPointerDownHandler |
OnPointerUp(PointerEventData) | 鼠标抬起事件 | IPointerUpHandler |
OnPointerEnter(PointerEventData) | 鼠标进入事件 | IPointerEnterHandler |
OnPointerExit(PointerEventData) | 鼠标离开事件 | IPointerExitHandler |
OnPointerClick(PointerEventData) | 鼠标点击事件 | IPointerClickHandler |
注:如果父物体实现了Up、Down接口,而子物体没有实现。点击子物体时会调用父物体的Up、Down函数
// 初始化列表
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);
public void OnPointerClick(PointerEventData eventData)
{
var rect = GetComponent<RectTransform>();
Vector3 v3;
RectTransformUtility.ScreenPointToWorldPointInRectangle(rect, eventData.position, eventData.enterEventCamera, out v3);
Debug.Log(v3);
}
注意,如果为子对象添加Canvas组件,并添加GraphicRaycaster,即可覆盖原本排序图层逻辑,当想要对象无视自然层级排列时,可采用此方法解决。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。