最近開發(fā)項(xiàng)目使用自定義NGUI組件控件的功能比較多,對(duì)NGUI系統(tǒng) 內(nèi)的坐標(biāo)系統(tǒng)和錨點(diǎn)做個(gè)總結(jié)
NGUI坐標(biāo)系統(tǒng)及錨點(diǎn)
坐標(biāo)系統(tǒng)圖解
-
NGUI插件默認(rèn)以父節(jié)點(diǎn)的中心點(diǎn)(0,0)為原點(diǎn) -
NGUI插件默認(rèn)以父節(jié)點(diǎn)的右側(cè)為x軸正向 -
NGUI插件默認(rèn)以父節(jié)點(diǎn)的上側(cè)為y軸正向
框架類結(jié)構(gòu)
在腳本代碼中修改游戲?qū)ο蟮木匦挝恢?code>Rect
-
NGUIRects.cs修改UIRect腳本的位置Positionusing System; using UnityEngine; public sealed class NGUIRects { private NGUIRects () { } //重置UIRect組件對(duì)象的位置 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組件對(duì)象的位置 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腳本的位置Sizepublic 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; }
錨點(diǎn)圖解
框架類結(jié)構(gòu)
在腳本代碼中修改游戲?qū)ο蟮木匦挝恢?code>Anchor
-
使用默認(rèn)的
leftAnchor、rightAnchor、bottomAnchor、topAnchor(即4個(gè)方向同時(shí)相對(duì)于同一個(gè)Transform)public UISprite test_sprite; ... if (test_sprite.isFullyAnchored) { test_sprite.SetAnchor (anchor_sprite.gameObject, 1, 2, 3, 4); }
-
使用自定義的
leftAnchor、rightAnchor、bottomAnchor、topAnchor(即4個(gè)方向可以相對(duì)于自定義的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的三個(gè)參數(shù)的作用-
target:Transform- 指定某個(gè)方向的相對(duì)于的
Transform組件
- 指定某個(gè)方向的相對(duì)于的
-
relative:float-
如果是水平方向的約束錨點(diǎn):
leftAnchor、rightAnchorTarget游戲?qū)ο?code>Transform組件的左邊的relative的值是0;Target游戲?qū)ο?code>Transform組件的中心的relative的值是0.5;Target游戲?qū)ο?code>Transform組件的右邊的relative的值是1;其他的
relative值是自定義位置;
-
如果是垂直方向的約束錨點(diǎn):
topAnchor、bottomAnchorTarget游戲?qū)ο?code>Transform組件的下邊的relative的值是0;Target游戲?qū)ο?code>Transform組件的中心的relative的值是0;Target游戲?qū)ο?code>Transform組件的上邊的relative的值是0;其他的
relative值是自定義位置;
-
-
absolute:float- 偏移量的值;
-
-
如若有無,請聯(lián)系我