NGUIのUIGridの中で
repositionNow
という機能が気になってちょいと調べてみました。
(機能としてはチェックすると、中のUIパーツを綺麗に整列 してくれるってもの)
内のRePositionにプロジェクトを添付してあります。
中身は指定したターゲットの真ん中にポジションをセットする。というもの
ゲームを起動している状態でない(編集中)でもUpdate ()
が呼ばれるようになっています。
Xpos :そのボタンが左から何個目か
buttonNum :ゲーム上に存在するボタンの数
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 repositionNow = false;
bool mStarted = false;
// Use this for initialization
void Start ()
{
mStarted = true;
Reposition();
}
// Update is called once per frame
void Update ()
{
if (repositionNow)
{
repositionNow = false;
Reposition();
}
}
public void Reposition ()
{
if (!mStarted)
{
repositionNow = 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);
}
}
0 件のコメント :
コメントを投稿