最近開發(fā)項目使用自定義NGUI組件控件的功能比較多,對NGUI系統(tǒng) 內(nèi)的坐標(biāo)系統(tǒng)和錨點做個總結(jié)
NGUI坐標(biāo)系統(tǒng)及錨點
坐標(biāo)系統(tǒng)圖解
-
NGUI
插件默認(rèn)以父節(jié)點
的中心點(0,0)
為原點 -
NGUI
插件默認(rèn)以父節(jié)點
的右側(cè)為x軸
正向 -
NGUI
插件默認(rèn)以父節(jié)點
的上側(cè)為y軸
正向
框架類結(jié)構(gòu)
在腳本代碼中修改游戲?qū)ο蟮木匦挝恢?code>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; } //根據(jù)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); //防止中心位置不發(fā)生改變 rect.transform.localPosition = center; }
錨點圖解
框架類結(jié)構(gòu)
在腳本代碼中修改游戲?qū)ο蟮木匦挝恢?code>Anchor
-
使用默認(rèn)的
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
內(nèi)的Set
的三個參數(shù)的作用-
target:Transform
- 指定某個方向的相對于的
Transform
組件
- 指定某個方向的相對于的
-
relative:float
-
如果是水平方向的約束錨點:
leftAnchor
、rightAnchor
Target
游戲?qū)ο?code>Transform組件的左邊的relative
的值是0;Target
游戲?qū)ο?code>Transform組件的中心的relative
的值是0.5;Target
游戲?qū)ο?code>Transform組件的右邊的relative
的值是1;其他的
relative
值是自定義位置;
-
如果是垂直方向的約束錨點:
topAnchor
、bottomAnchor
Target
游戲?qū)ο?code>Transform組件的下邊的relative
的值是0;Target
游戲?qū)ο?code>Transform組件的中心的relative
的值是0;Target
游戲?qū)ο?code>Transform組件的上邊的relative
的值是0;其他的
relative
值是自定義位置;
-
-
absolute:float
- 偏移量的值;
-
-
如若有無,請聯(lián)系我