nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, Unity などに興味があります。

Unity 2D と NGUI で横幅を固定する

はじめに

  • Unity の 2D 表示と NGUI では、ともに画面の縦幅を固定するオプションはあるが、横幅を固定することができないので、スクリプトで対応したメモ。

バージョン

  • Unity 4.3.4
  • NGUI 3.5.6

Unity 2D で横幅を固定する

  • 以下のスクリプトをシーン上の任意のオブジェクトにアタッチする
sing UnityEngine;
using System.Collections;

public class MainCameraAdjustScript : MonoBehaviour {

	// 横幅を 6.5m で固定する
	float FixedWidth = 6.5f;

	void Start () {
		// メインカメラの Projection は Orthographic にしておく
		// orthographicSize は縦幅(m)を 2 で割ったもの
		// 画面サイズと固定したい横幅から orthographicSize を計算してセットする
		Camera.main.orthographicSize = ((FixedWidth * Screen.height) / Screen.width) / 2;
	}
}

NGUI で横幅を固定する

using UnityEngine;
using System.Collections;

public class UIRootAdjustScript : MonoBehaviour {

	// 横幅を 640 px で固定
	int FixedWidth = 640;

	// Use this for initialization
	void Awake () {
		// UI Root の取得
		UIRoot root = GetComponent<UIRoot> ();
		// 高さ固定モードに
		root.scalingStyle = UIRoot.Scaling.FixedSize;
		// 画面サイズから、横幅を固定した場合の縦幅を計算して設定する
		root.manualHeight = Mathf.FloorToInt ((Screen.height * FixedWidth) / Screen.width);
	}
}