LoginSignup
6
6

More than 5 years have passed since last update.

[Unity] 複数の端末の解像度に対応させる2 - GUITexutreの表示を解像度と非依存にする

Last updated at Posted at 2014-12-13

前回の記事では、Unity内のSceneに表示される解像度を固定化する方法を紹介しました。
今回はさらに進んで、GUITextureの表示を解像度と非依存にしてみます。
解像度と非依存にするためには、前回の記事で紹介したスクリプトが必要になります。

なおここで紹介しているのは、Unityのバージョンが4.3くらいのときに作成したスクリプトです。
記事を書いている時の最新版(Unity 4.6)では新しいUIが採用され、そちらを使えばもっと楽に解像度非依存の環境で製作できそうです。
ただし、GUITextureを今後も使っていきたい方は参考になるかもしれません。
( 元記事:http://d.hatena.ne.jp/nuttinutti/20141213

サンプルスクリプト

GUITextureを用いた場合に、解像度に応じて自動的に位置や拡大率を変更してくれるサンプルを以下に示します。

Fixed_GUI_Layout.js
#pragma strict

var aspectRatioCtrl : Fixed_Aspect_Ratio = null;    // 解像度固定スクリプト
var x : float = 0.0f;                               // 表示位置(X座標)
var y : float = 0.0f;                               // 表示位置(Y座標)
var width : float = 1.0f;                           // 横幅
var height : float = 1.0f;                          // 縦幅

function Update()
{
    var texture : GUITexture;

    texture = GetComponent(GUITexture);

    // GUITextureと同じGameObjectに本コンポーネントが存在している必要がある
    if (!texture)   { return; }

    // 解像度固定スクリプトにより制御された解像度
    if (aspectRatioCtrl) {
        var rect : Rect;
        rect = aspectRatioCtrl.camRect;
        texture.pixelInset.x = (x * rect.width) * Screen.width;
        texture.pixelInset.y = (y * rect.height) * Screen.height;
        texture.pixelInset.width = width * rect.width * Screen.width;
        texture.pixelInset.height = height * rect.height * Screen.height;
    }
    // デフォルトの解像度
    else{
        texture.pixelInset.x = x * Screen.width;
        texture.pixelInset.y = y * Screen.height;
        texture.pixelInset.width = width * Screen.width;
        texture.pixelInset.height = height * Screen.height;
    }
}

パラメータ

サンプルスクリプトでは、以下のパラメータを指定することが出来ます。

項目名 説明
Aspect Ratio Ctrl 解像度固定スクリプト(前回の記事で紹介したスクリプトをFixed_Aspect_Ratio.jsとして保存する必要がある)
X 表示位置(X座標)
Y 表示位置(Y座標)
Width 横幅
Height 縦幅

使用例

上記サンプルスクリプトを実際にUnityに導入してみます。
静止画なので分かりづらいと思いますが、実際にこのプラグインを導入しUnityのウィンドウの大きさを変更してみると、画像の位置と大きさが画面サイズに応じて変更されることが分かります。
20141213224809.jpg

機能追加版のスクリプト

前回の記事にて紹介した機能追加版のスクリプトを利用する場合は、ここから機能追加版へ対応したスクリプトをダウンロードして使ってください。
なお、解像度非依存の有効/無効を選ぶためのEnableというパラメータが追加されています。

関連記事

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6