nirasan's tech blog

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

NGUI

NGUI の UITweener の Animation Curve に任意の曲線を設定する

はじめに Unity + NGUI で TweenPosition や TweenAlpha などの UITweener を継承したコンポーネントで Animation Curve の曲線をプログラムから設定する方法についてメモ。 バージョン Unity 4.6.1f1 NGUI 3.7.6 設定方法 Animation Curve の曲線は Animati…

NGUI で UILabel の文字量に従って縦幅だけ変動させるスクリプト

using UnityEngine; using System.Collections; /// <summary> /// UILabel の横幅を固定して text に従った縦幅に設定するスクリプト /// </summary> public class UILabelHeightFitter : MonoBehaviour { /// <summary> /// リサイズ対象の UILabel /// </summary> public UILabel label; private…

NGUI の ScrollView で気持ちのいいスクロールを実装する

気持ちが良いスクロールとは? 今回は「ちょっとスワイプするだけで次の要素にスッと切り替わる」ものを実装する。 バージョン情報 Unity 4.6.1f NGUI 3.7.6 ヒエラルキー UI Root ScrollView Grid ScrollView の作成 メニューの [NGUI] > [Create] > [Scrol…

NGUI でインターネット上の画像を表示するには

WWW で画像を読み込み、UITexture で表示する。 サンプル 以下のスクリプトを任意のオブジェクトにアタッチして実行する。 using UnityEngine; using System.Collections; [RequireComponent(typeof (UITexture))] public class LoadTextureFromWWWSample : …

NGUI で ScrollView の描画順を調整する

NGUI で ScrollView の描画順を調整するには ScrollView オブジェクトに UIScrollView と一緒にアタッチされている UIPanel の SortOrder と Depth の値を変更する。 SortOrder はおおもとの描画順で、Depth は同一 SortOrder の要素同士の描画順を指定する…

Unity + NGUI + Android で Atlas のテクスチャサイズが大きすぎると死ぬ問題

はじめに Unity + NGUI の環境で Android 実機で起動したとき、4096x4096 のテクスチャを使った Atlas を2枚使おうとすると再起動がかかる。 エラーメッセージ 以下のような感じで android.os.DeadObjectException とかいうのが出る。 W/InputMethodManagerS…

NGUI の UIScrollView で1要素分スクロールさせるスクリプト

はじめに Unity の NGUI で UIScrollView を使うと、要素を列挙してスクロールして表示させるようなパーツが簡単に実装できます。 列挙する要素に UIDragScrollView コンポーネントをアタッチすると、ドラッグでスクロール可能ですが、今回は1要素分だけ進…

Unity + NGUI でスワイプをしたときに処理を実行するスクリプト

はじめに Unity + NGUI でスワイプしたときに処理を実行するスクリプトを実装したメモ。 スワイプ終了時と、上下左右のスワイプにそれぞれひもづけて、実行するメソッドを登録できる。 スワイプしたときに処理を実行するスクリプト Collider のアタッチされ…

NGUI の UIGrid で Sort をカスタマイズする - 名前の降順・名前を数字で評価して降順

はじめに Unity の NGUI でリストを表示するとき、UIGrid を利用すると簡単に実装できる。 Sort 順を既存の "追加順の昇順(None)"、"名前の昇順(Alphabetic)" 意外にしたい場合に対応したメモ。 並び替え評価用の関数を宣言する UIGrid.cs にある既存の並び…

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

はじめに Unity の 2D 表示と NGUI では、ともに画面の縦幅を固定するオプションはあるが、横幅を固定することができないので、スクリプトで対応したメモ。 バージョン Unity 4.3.4 NGUI 3.5.6 Unity 2D で横幅を固定する 以下のスクリプトをシーン上の任意…

Unity & NGUI でセレクトボックス的なあれ

はじめに Unity の GUI 拡張 Asset の NGUI を使って、HTML のセレクトボックス的なものを作るには、UIPopup List というコンポーネントを使います。 NGUI v3.5.6 だと、"NGUI/Examples/Scenes/Example 10 - Localization" というシーンで使い方を確認できま…

Unity + NGUI + FacebookSDK + JSONObject で Facebook のフレンドのプロフィール画像を表示する

はじめに Unity, NGUI(v3.5.6), FacebookSDK, JSONObject がインストールされている環境で、Facebook のフレンドのプロフィール画像をダウンロードして表示したメモ コード /** * Facebook のフレンドのプロフィール画像を表示する * 任意のボタンのOnClick…

Unity の NGUI でボタン押下時に HTTP 通信をする

はじめに Unity で NGUI(v3.5.6) と WWW を使って、ボタン押下時に HTTP 通信をする 準備 [NGUI] > [Create] > [2D UI] で NGUI の準備 アセットから "simple button" でボタンのプレハブを検索し、ヒエラルキーにドラッグアンドドロップ スクリプト作成 usi…

Unity の NGUI で画像を実行時に変更する

画像を変更する UISprite のアタッチされたオブジェクトの画像を変更する UISprite.spriteName に Atlas の Sprite 名を文字列で指定すると画像を変更することができます。 obj.GetComponent<UISprite> ().spriteName = "new_sprite_name"; ボタン画像を変更する UIBut</uisprite>…

Unity の NGUI v3.5.6 で Atlas を新規作成する

2014/11/18 追記 NGUI v3.7.4 では(もっと前からかもですが) Atlas Maker にある New ボタンから新規作成できるようになっていたので、以下の手順は古いです。 はじめに Unity のGUI作成ツールアセットの NGUI v3.5.6 を使って、Atlas(複数の画像を1枚の…

Unity で NGUI を使ってポップアップウィンドウを作る

はじめに Unity の GUI 作成ツール NGUI を使って、下からぴょこんと出てくるポップアップウィンドウを作ります。 Unity のバージョンは 4.3.4 で、NGUI は 3.5.6 を対象とします。 所要時間は10分程度です。 準備 NGUI をアセットストアから購入します。 プ…

Unity の NGUI で子要素の表示位置がおかしくなる件

// プレハブのUIオブジェクトをUIRootの子要素に追加して、、 GameObject label = NGUITools.AddChild (UIRoot, UILabelPrefab); // 表示位置を変更しようとすると、(19400, 19400, 0) とかになってびっくりした。 label.transform.position += new Vector3 …

Unity で NGUI v3.5.6 を使ってボタンを作る

はじめに Unity の GUI 作成ツール NGUI の v3.5.6 を使ってボタンを作ったメモ。 NGUI はバージョンによってUIとかが結構違ったりしているので、How to 記事を参照する際には注意が必要です。 購入 Unity のメニュー [Window] > [Asset Store] でアセットス…