UGUI使用遇到问题总结
Image组件:动态改变Source Image.
1.gameObject.GetComponent().p_w_picpath.sprite = YourSprite; (YourSPrite的获取方法有我是在前面定义Spites数组,拉图片入去的.有更好的方法请告诉我..)
2.gameObject.GetComponent.
Resources.Load是读取Resources文件夹里的文件
真心好麻烦,求unity出方便点的方法....
我相信刚开始大家都会遇到这个[color=rgb(85, 85, 85) !important]问题....
任务系统点击Button按钮,角色执行了移动命令.解决方法如下
if (EventSystem.current.IsPointerOverGameObject())
Debug.Log("当前触摸在UI上");
else Debug.Log("当前没有触摸在UI上");
安卓手机以上方法无效,详细方法
http://forum.[color=rgb(85, 85, 85) !important]unity3d.com/threads/ispointerovereventsystemobject-always-returns-false-on-mobile.265372/
我复制了过来:
void Update ()
{
if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Began) {
if (IsPointerOverGameObject (Input.GetTouch (0).fingerId)) {
Debug.Log("Hit UI, Ignore Touch");
} else {
Debug.Log("Handle Touch");
}
}
}
bool IsPointerOverGameObject( int fingerId )
{
EventSystem eventSystem = EventSystem.current;
return ( eventSystem.IsPointerOverGameObject( fingerId )
&& eventSystem.currentSelectedGameObject != null );
}
Event Trigger处理各种点击拖拽事件
Canvas处理层级
Graphic Raycaster处理事件响应先后,2个canvas组件时候必须要用,否则一个canvas不响应鼠标事件
渲染层级顺序:
Camera
softing Layer
softing order
ugui背包系统
射线检测:物品本身需要添加的组件:Graphic Raycaster , Canvas Group, Canvas ,移动物品的代码
Graphic Raycaster用来检测鼠标射线,判断是否点击了物品
Canvas Group 在移动物品的代码中设置其中参数Blocks Raycasts的值.让event trigger忽略自身,这样才可以让event trigger检测到它下面一层的对象,如包裹或物品格子等
Canvas 你不加这个用不了Canvas Group
public void OnBeginDrag(PointerEventData eventData) eventData即为射线检测碰到的东西
layermask使只有某层能接收.
在两个图之间插一个图
GameObject button = GameObject.Instantiate(Resources.Load
button.transform.parent = transform;
button.transform.localPosition = Vector3.zero;
button.transform.localScale = Vector3.one;
GameObject AObj = transform.Find("A").gameObject;
GameObject BObj = transform.Find("B").gameObject;
button.transform.SetSiblingIndex(AObj.transform.GetSiblingIndex());
间接实现双击使用物品
前面2个方法是必须使用的,否则第3个方法无法正常使用.OnPointerEnter是在鼠标进入一瞬间执行代码,这得什么手速啊..设置blocksRaycasts变为false的时候鼠标射线穿透,再变了true即为鼠标射线再次碰到物品,此时再点击一下物品即可.
public void OnPointerDown(PointerEventData eventData)
{
canvasGroup.blocksRaycasts = false;
}
public void OnPointerUp(PointerEventData eventData)
{
canvasGroup.blocksRaycasts = true;
}
public void OnPointerEnter(PointerEventData eventData){
if (Input.GetMouseButtonDown(1))
{
使用的代码
}
}
当然,这个方法有点奇怪,我也是偶然发现的..还是自己乖乖写一个吧.提供下思路,用bool判断是否点击第1次,弄一个delay参数作为第1次点击到第2次点击的间隔.
滑动框
1.建一个Image命名Mask,在Mask里添加ScrollRect和Mask这2个组件.
2.在Mask里创建一个空的GameObject命名ScrollContent,拉进ScrollRect的Content中.添加控件Vertical Layout Group(垂直分布,自动处理).但ScrollContent并不会自动扩大.在代码中调用GetComponent
3.创建一个Prefab通过代码动态添加进ScrollDetails中.
p_w_picpath中的九宫格sliced边框在原图SpriteEditor中设置.
为黄山等地区用户提供了全套网页设计制作服务,及黄山网站建设行业解决方案。主营业务为成都网站制作、网站设计、外贸网站建设、黄山网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
分享名称:UGUI使用遇到问题总结
网站路径:http://azwzsj.com/article/gpjgps.html