Pages

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日木曜日

DrawCallMinimizerでエラーが起きたとき


前回の手順で、再生を押すとドローコールがうまい具合に激減しているハズ。


なのですが、以下のエラーが出るときがあります。
Unsupported texture format - needs to be ARGB32, RGBA32, BGRA32, RGB24, Alpha8 or DXT


解決策は以下


1 テクスチャのインスペクタからAdvancedを選択し、read/write Enabledにチェックをつけてあることを確認

2 一番下にあるフォーマットんも覧でフォーマットを変更する
ARGB32, RGBA32, BGRA32, RGB24, Alpha8 or DXTのどれか。端末に応じて。

3 applyボタンを押す

これで上記エラーは解消しました。

NGUIのスクロール(クリッピング)その2


非常に便利なNGUIのクリッピングスクロールですが

ドローコールを減らせるUnityAsset「DrawCallMinimizer」の使い方



*概説*
まとめたいオブジェクトをすべて一つのオブジェクトの子にして、親オブジェクトにスクリプトをつけるだけ。これだけでテクスチャ・マテリアル・シェーダーをひとつにまとめてくれます。


*注意*
すべてのテクスチャはRead/Write Enabledにチェックすること
Unity defaultシェーダーはエラーになるので使わない


*解説訳*
以下が解説に載っていたステップ全訳です。

1 GameObject > Create Empty でGameObjectを作る

2 1にすべてのオブジェクトを子化する

3 occlusion cullingを使うなら、一つにまとめるのではダメ
なぜなら可視境界判定に使うボックスでは巨大なメッシュは妨げに

4  Optimized Combine Childrenスクリプトを親につける

5 設定を行う=スクリプトの各変数
  Aniso Level
 高くすればするほどぼやけずに遠くから綺麗に見える
  Compress Textures In Memory
 圧縮するか。メモリ消費量はが増えるが、綺麗になりパフォーマンスが良くなる。オフにする。
  Filter Mode
 ミップマップ (Point, Bilinear, Trilinear) ブレンド用
  Ignore Alpha
 アルファがなければ、チェックしてパフォーマンスを改善
  Wrap Mode
  テクスチャのラップモード。変更してもあまり違いはありません。
  Shader Properties to Look For
カスタムを含めて、すべてのシェーダーが利用できる。
テクスチャ変数にどんなものを不化したのかをシェーダーに伝える。


*リファレンス*
DrawCallMinimizerのブログはここから

2012年9月8日土曜日

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


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

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

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

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

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






2012年9月4日火曜日

Unityでオブジェクトが静止しているかを判定するには


Rigidbodyがついているオブジェクトでは以下で判定できる。

GameObject.rigidbody.velocity.magnitude == 0