最近開發(fā)項目使用自定義NGUI組件控件的功能比較多类茂,對NGUI系統(tǒng) 內的坐標系統(tǒng)和錨點做個總結
NGUI坐標系統(tǒng)及錨點
坐標系統(tǒng)圖解
坐標.jpg
操作圖
-
NGUI
插件默認以父節(jié)點
的中心點(0,0)
為原點 -
NGUI
插件默認以父節(jié)點
的右側為x軸
正向 -
NGUI
插件默認以父節(jié)點
的上側為y軸
正向
框架類結構
NGUI框架內支持SetRect函數(shù)的類結構
在腳本代碼中修改游戲對象的矩形位置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; }
錨點圖解
錨點操作圖
框架類結構
UIAnchor
AnchorPoint
在腳本代碼中修改游戲對象的矩形位置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); }
實現(xiàn)在Inspector中的效果
-
使用自定義的
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
的三個參數(shù)的作用-
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
- 偏移量的值;
-
-
如若有無,請聯(lián)系我