赞
踩
1、场景一:要进行交互的UGUI,前面有一个UGUI挡住了要进行交互的UGUI,使之要进行交互的游戏物体不能与射线进行交互,这时候要在挡住的那个UGUI物体身上添加Canvas Group组件,取消勾选被挡住物体身上Canvas Group组件的Blocks Raycast,这时候要交互的游戏物体就能正常的进行交互。用代码进行表示的话就是:
gameObject.GetComponent<CanvasGroup>().blocksRaycasts = false;
2、场景二:用代码动态的改变UGUI的图片或文字的宽度以及高度:
/// <summary>
/// 改变UGUI图片或文字的宽度以及高度
/// </summary>
/// <param name="rectTransform">要改变宽度或高度的UGUI游戏物体</param>
/// <param name="width">传递进来的宽度</param>
/// <param name="height">传递进来的高度</param>
private void ResetSpriteSize(RectTransform rectTransform, float width, float height)
{
//改变UGUI图片的宽度
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, width);
//改变UGUI图片的高度
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);
}
3、场景三:使要被拖拽的游戏物体能跟鼠标进行跟随移动
/// <summary>
/// 拖拽进行中
/// </summary>
/// <param name="eventData"></param>
void IDragHandler.OnDrag(PointerEventData eventData)
{
Vector3 pos;
//m_RectTransform指的是被拖拽的游戏物体
RectTransformUtility.ScreenPointToWorldPointInRectangle(m_RectTransform, eventData.position, eventData.enterEventCamera, out pos);
m_RectTransform.position = pos;
}
4、场景四:当把一个UGUI游戏物体拖拽到某一个位置的时候,也就是拖拽结束的时候,判断物体最后是在哪个地方:
void IEndDragHandler.OnEndDrag(PointerEventData eventData)
{
//获得拖拽结束点时候的位置点
GameObject target = eventData.pointerEnter;
Debug.Log("拖拽结束点后面的物体:"+target.name);
}
5、强制刷新HorizontalLayoutGroup布局组件中的元素排列以及各个元素的大小,可以通过以下方法:
LayoutRebuilder.ForceRebuildLayoutImmediate(transform as RectTransform);
上面的transform就代表着拥有HorizontalLayoutGroup布局组件的游戏物体,一定要转化成RectTransform类型才能作为上述方法中的参数。
以下是AI的回答:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。