最近开发项目使用自定义NGUI组件控件的功能比较多,对NGUI系统 内的坐标系统和锚点做个总结
NGUI坐标系统及锚点
坐标系统图解
-
NGUI
插件默认以父节点
的中心点(0,0)
为原点 -
NGUI
插件默认以父节点
的右侧为x轴
正向 -
NGUI
插件默认以父节点
的上侧为y轴
正向
框架类结构
在脚本代码中修改游戏对象的矩形位置Rect
-
NGUIRects.cs
修改UIRect
脚本的位置Position
using System; using UnityEngine; public sealed class NGUIRects { private NGUIRects () { } //重置UIRect组件对象的位置 public static void CenterByPosition(UIRect rect,Vector2 center) { if (rect == null) { return; } Vector3 v = new Vector3 (center.x, center.y); rect.transform.localPosition = v; } //根据Vector2增量改变UIRect组件对象的位置 public static void CenterByIncrement(UIRect rect,Vector2 vector) { if (rect == null) { return; } if (vector.Equals(Vector2.zero)) { return; } Vector3 v = new Vector3 (vector.x, vector.y); rect.transform.localPosition += v; } }
-
NGUIRects.cs
修改UIRect
脚本的位置Size
public static void SizeBySize(UIRect rect,Vector2 size) { if (rect == null) { return; } if (size.Equals(Vector2.zero)) { return; } Vector3 center = rect.transform.localPosition; //首先修改物体的大小 rect.SetRect (0f, 0f, size.x, size.y); //防止中心位置不发生改变 rect.transform.localPosition = center; }
锚点图解
框架类结构
在脚本代码中修改游戏对象的矩形位置Anchor
-
使用默认的
leftAnchor
、rightAnchor
、bottomAnchor
、topAnchor
(即4个方向同时相对于同一个Transform)public UISprite test_sprite; ... if (test_sprite.isFullyAnchored) { test_sprite.SetAnchor (anchor_sprite.gameObject, 1, 2, 3, 4); }
-
使用自定义的
leftAnchor
、rightAnchor
、bottomAnchor
、topAnchor
(即4个方向可以相对于自定义的Transform)public UISprite test_sprite; public Transform leftAnchorTarget; public Transform rightAnchorTarget; public Transform topAnchorTarget; public Transform bottomAnchorTarget; ... test_sprite.leftAnchor.Set (leftAnchorTarget, 0f, 20f); test_sprite.rightAnchor.Set (rightAnchorTarget, 0.5f, -30f); test_sprite.topAnchor.Set (topAnchorTarget, 0.5f, 20f); test_sprite.bottomAnchor.Set (bottomAnchorTarget, 1f, 20f);
-
解释一下
AnchorPoint
内的Set
的三个参数的作用-
target:Transform
- 指定某个方向的相对于的
Transform
组件
- 指定某个方向的相对于的
-
relative:float
-
如果是水平方向的约束锚点:
leftAnchor
、rightAnchor
Target
游戏对象Transform
组件的左边的relative
的值是0;Target
游戏对象Transform
组件的中心的relative
的值是0.5;Target
游戏对象Transform
组件的右边的relative
的值是1;其他的
relative
值是自定义位置;
-
如果是垂直方向的约束锚点:
topAnchor
、bottomAnchor
Target
游戏对象Transform
组件的下边的relative
的值是0;Target
游戏对象Transform
组件的中心的relative
的值是0;Target
游戏对象Transform
组件的上边的relative
的值是0;其他的
relative
值是自定义位置;
-
-
absolute:float
- 偏移量的值;
-
-
如若有无,请联系我