Pages

ラベル NGUI の投稿を表示しています。 すべての投稿を表示
ラベル NGUI の投稿を表示しています。 すべての投稿を表示

2012年11月19日月曜日

NGUI:UILabel.textをコードで設定後、文字のY軸が変わる問題



 どうやら、コードでUILabel.textを設定する場合で、以前の文字列長以上の文字を設定する場合で、PivotがCenterなどの場合に発生するよう。

対策としては、TopLeftかTopRightのPivotを設定する。以上。

結構はまってしまうかも。


2012年11月4日日曜日

NGUIでイベントを取得する


NGUIでは、ボタンタップ時やドラッグ時の挙動を独自に実装できます。

ものすごくカンタン。
スクリプトを用意し、以下のメソッドを実装します。
そして、GameObjectやNGUIのウィジェットにコライダをつけてから、スクリプトを付加してやれば完成!

以下は取得できるイベントの種類です。

  • void OnHover (bool isOver) – マウスポインタが重なったときに呼ばれます。タップは×。
  • void OnPress (bool isDown) – マウスによりクリック(押下時と離脱時の2回)が発生したときによばれます。タップも○。
  • void OnClick() — 上と同じですが、離脱時の1回だけ呼ばれるパターン。
  • void OnDoubleClick () — ダブルクリックされたとき。
  • void OnSelect (bool selected) –選択メニューで便利?OnClickと同じだけど、こっちは他のものが選択されるまでは2度目の選択時には呼ばれません。
  • void OnDrag (Vector2 delta) – OnPress(true) と OnPress(false)の間に起きた移動を取得。タップ○。
  • void OnDrop (GameObject drag) – ドロップ時(OnPress(false)のタイミング)にドロップされた(下にある)オブジェクト側で呼ばれる。引数には、ドロップした(上にある)オブジェクトが渡される。
  • void OnTooltip (bool show) – Sent after the mouse hovers over a collider without moving for longer thantooltipDelay, and when the tooltip should be hidden. Not sent on touch-based devices.
  • void OnScroll (float delta) マウスのホイールが動いた時によばれる
  • void OnKey (KeyCode key) キーボードが押されたときによばれる

2012年9月13日木曜日

2012年9月8日土曜日

NGUIでメニューを重ねて表示したい時


 例えば、メニューの上にダイアログを重ねて表示したい時などがあります。

 この場合、NGUIではパネルを重ねます。重ねるといっても、単に新しいパネルを作り、そのパネルのpositionのzを-1してやればいいだけ。

 NGUIでパネル同士の前後関係はz軸で設定します。(-になるほど手前です)

 
 しかし、これだけではだめで、重ねた下パネルのボタン類を無効化しないといけません。

 その時は、手前のパネルを覆うように適当なウィジェットを追加し、コライダを追加します。
下パネルのボタンは、このコライダに遮られて無効になります。






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 );

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月6日金曜日

ex2DとNGUIを端末ごとの解像度に対応させる


解像度に合わせて、オブジェクトのサイズを変えるようにするには

【 ex2Dの場合】

EX Pixel Perfect Cameraスクリプトをカメラに設定する
CustomResolutionにチェックを入れる
Width(幅)とHeight(高さ)を設定する

 【NGUIの場合】

UIRootで、Automaticを外して、Heightを設定する