原文:http://www.tasharen.com/forum/index.php?topic=6712.0
概覽
UIAnchor讓你可以固定game objects在螢幕或者其他widgets的某一邊或者某一個角。這是一個關鍵的組件,用來在NGUI中建立模組化的UI。
是否想讓你的一部分UI粘在螢幕的角落或者邊緣上。比如魔獸世界。在這個遊戲中,遊戲地圖永遠在螢幕的右上方,熱鍵一直在螢幕的下方,不管你用的是多大的螢幕解析度。你如何做到類似的東西呢。用anchors。
NGUI的預設UI布局會給你提供一個anchor——一個置中的anchor。以魔獸世界的UI為例子,你需要增加額外的兩個anchor。一個設定成 TopRight ,另一個則為 Bottom 。之後你給這兩個anchor增加一些子節點,然後修改螢幕的尺寸,你會發現UI會一直在你想要的地方(右上方或者下面)。
通過設定anchor的 Container 讓一個UI附著在另一個UI上。如果Container是UIWidget,那麼會用widget的dimesions來代替螢幕矩形(就是TopRight將將是相對與這個widget,而不是螢幕)。如果是game object,那麼這個矩形就是game object下的 所有 節點widget的bounds。因為這個原因,當你用父節點當做Container的時候一定要 注意 ,因為父節點的Container大小會包含這個你要anchor的widget,這可能不是你要的效果(比如你要放在父節點的左上方,但是當這個widget到了左上方後,父節點的左上方由於這個widget的到來可能就變了,之後再次移動widget,周而復始……)。
調整 Relative Offset 來用相對值來改變位置。 如果X是1就是100%的container寬度. Y是1就是100%的container高度。 0.5 = 50%,等等。也可以是負數。
上面的調整也可以通過用 Pixel Offset 來實現。就和你想的差不多……通過給定的X、Y的值來 以像素為單位 調整anchor的位移。
預設情況下anchor只會執行一次。如果要在每個update裡面都執行,那勾選掉 Run Only Once 選項。
小貼士
你可以通過使用anchor和stretch來建立模組化的UI:
http://www.youtube.com/watch?v=q1C5NwZasGs
類文檔
http://tasharen.com/ngui/docs/class_u_i_anchor.html