Pages

2012年7月29日日曜日

NGUIでスクロールを実現するには

1 Panelを別に用意する

NGUIメニューのAddPanelで追加できます。

2 1にUIPanelのclippingを設定する

SoftClipにしてsizeを設定
ここが、ドラッグさせるアイテムを表示できる大きさの限界を指定するところ。
ここで指定した大きさの窓からアイテムをのぞく感じになるイメージ。

3 UIPanelにUIDraggablePanelスクリプトをつける

scaleにはドラッグさせる方向を設定する。
横のみなら x=1 y=0 z=0

4  ドラッグさせるアイテムをつける

ここではアイテムを等間隔で配置するため、UIGridを作成します。

子要素に、UIGridをつけwidthとHeightを設定する。

UIDragPanelContentスクリプトをつける。

5 UIGridにアイテムを子要素で設定する

すべてにUIDragPanelContentスクリプトをつける。

プレイボタンを押すと等間隔で配置されます。

***問題***
1 スクロール実現方法

NGUIでのスクロールには2つの方法があります。(もうひとつはカメラを別に用意する方法)
こちらのほうが直感的なのでメインに利用しています。


Androidで利用する場合のハマるポイントとして、OpenGL2.0でないと正しく表示されません。
そこで、PlayerSettings→Other settings→Graphic levelでOpenGL2.0を選びましょう。




NGUIの多言語対応でコードからテキストを変更するには

以下、UILabelにUILocalizeをつけているものとする。


まずはキーを変更
uiLocalize.key="newTextKey";


これだけではテキストは変化しません。NGUIのローカライズは、OnEnabledで行われるからです。
そこで、自力でテキストの値をローカライズして取得する処理を書き足します。
uiLabel.text = Localization.Get( newTextKey );

Unity3Dで現在のシーンを判別するには


Application.loadedLevelName=="シーンの名前"

これだけ!

NGUIでUNITY3Dの多言語対応を実現する


1 Localizationフォルダを作成 その中にテキストファイルを入れる

キー=値のペアで改行する

tittle=たいとる
sub=さぶたいとる

対応する言語分のテキストを用意して名前をつける

English.txt
Japanese.txt


2 Localizationのプレハブをシーンにコピペ

NGUI→Example→Otherにある

3 UILabelのついたオブジェクトにUILocalizeスクリプトをつける


UILocalizeコンポーネントの
Keyプロパティに1の言語テキスト名をつける(ここではEnglish or Japanese)


言語の切り替えは、Localizationコンポーネントの値をいじって行う。

これはまた今度

2012年7月26日木曜日

Unityでメニューをアニメーションさせるには


アニメーションを呼び出場合。
例:メニューパネルをサイドからシュッと出すとき

public GameObject Panel;//animationコンポーネントをつけたパネル

呼び出すとき
Panel.animation["PanelAnimation"].speed=1.0f;
Panel.animation["PanelAnimation"].time=Panel.animation["PanelAnimation"].length;
Panel.animation.Play("PanelAnimation");

アニメーションを逆転させるにはspeedを反転します

Panel.animation["PanelAnimation"].speed=-1.0f;

2012年7月12日木曜日

UnityAndroidで端末の言語設定を取得する

Application.systemLanguage

戻り値は以下のページにリストあり
http://docs.unity3d.com/Documentation/ScriptReference/SystemLanguage.html


NGUIでは、こんなかんじ


if(Application.systemLanguage.ToString()=="Japanese"){

           //ローカライズの現在の言語を変更する
Localization.instance.currentLanguage="Japanese";


}


IPhoneではバグがあるみたいで、報告済みとのこと。
Unityフォーラムからの情報。