[NGUI]UIGrid.cs内のrepositionNow

[NGUI]UIGrid.cs内のrepositionNow

更新: 2013年2月7日

NGUIのUIGridの中で
repositionNow
スクリーンショット 13 01 25 17 58 という機能が気になってちょいと調べてみました。
(機能としてはチェックすると、中の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);
}

}

最新記事をフォロー

RSS Feed