[NGUI]UIGrid.cs内のrepositionNow
更新: 2013年2月7日
NGUIのUIGridの中で
repositionNow
という機能が気になってちょいと調べてみました。
(機能としてはチェックすると、中のUIパーツを綺麗に整列 してくれるってもの)
Sample Project
https://github.com/mogeta/UnityUtil
内のRePositionにプロジェクトを添付してあります。
中身は指定したターゲットの真ん中にポジションをセットする。というもの
解説
UIGridは[ExecuteInEditMode]を宣言しており、
ゲームを起動している状態でない(編集中)でもUpdate ()
が呼ばれるようになっています。
Sample Code
NGUIのボタン等につける
Xpos :そのボタンが左から何個目か
buttonNum :ゲーム上に存在するボタンの数
using UnityEngine; using System.Collections;
[ExecuteInEditMode] public class BottomButtonPosition : MonoBehaviour {
public int XPos;
public int buttonNum;
public bool repositi false;
bool mStarted = false;
// Use this for initialization
void Start ()
{
mStarted = true;
Reposition();
}
// Update is called once per frame
void Update ()
{
if (repositionNow)
{
repositi false;
Reposition();
}
}
public void Reposition ()
{
if (!mStarted)
{
repositi true;
return;
}
Transform child = transform.Find("Background");
child.localScale = new Vector3(Screen.width / buttonNum, child.localScale.y, 0);
transform.localPosition = new Vector3(Screen.width / buttonNum \* XPos + child.localScale.x / 2, child.localScale.y / 2, 0);
}
}