Unity + NGUI の 「UI Button」のOnClickイベントをスクリプトで登録する方法

タイトルの通り、UnityのNGUIで、「UI Button」のOnClickイベントをスクリプトで登録する方法について

NGUIの便利なUIButtonですが、
スクリプトでOnClickのイベントを登録した事がなかったですが、
色々しらべたところやり方が分かったのでメモします!

下記がそのソース。

GameManager.cs


// イベントを登録したいボタンのオブジェクト GameObject btnObj; // NGUIのUI Button UIButton btn = btnObj.GetComponent<UIButton>(); // イベントデリゲートを用意 EventDelegate btnEvent = new EventDelegate(); // このクラスのOnClickというメソッド btnEvent.Set(this,"OnClick"); // 同じイベントが複数入ってしまうことを避けるため一旦イベントをクリア btn.onClick.Clear(); // イベントを追加 btn.onClick.Add(btnEvent); // NGUIのオブジェクトに子として追加 NGUITools.AddChild (nguiParentObj, btnObj);

以上です!

また、

btn.onClick.Clear();

は、Unityエディタ上で何回も実行などしていると、
イベントがどんどん増えてしまうので、念のためリセットします。
ここらへんは環境にあわせて適宜調整してください。

ググったんですが、日本語の情報がなかったので、
備忘録のためメモ。

UnityのNGUIで「ArgumentException: Input Axis Mouse ScrollWheel is not setup.〜」と出たら

Unity5.x + NGUIを使っている環境で、別でキーボードの操作ロジックを追加していたら下記のエラーに遭遇!


ArgumentException: Input Axis Mouse ScrollWheel is not setup. To change the input settings use: Edit -> Project Settings -> Input UICamera.<GetAxis>m__24 (System.String axis) (at Assets/NGUI/Scripts/UI/UICamera.cs:172) UICamera.ProcessEvents () (at Assets/NGUI/Scripts/UI/UICamera.cs:1960) UICamera.Update () (at Assets/NGUI/Scripts/UI/UICamera.cs:1907)

というエラーがNGUIのUICameraででたら、

下記Scrollの項目を空にすると消えます!

参考サイト:(http://www.tasharen.com/forum/index.php?topic=8064.0)[http://www.tasharen.com/forum/index.php?topic=8064.0]


ArgumentException: Input Axis Vertical is not setup. To change the input settings use: Edit -> Project Settings -> Input UICamera.<GetAxis>m__24 (System.String axis) (at Assets/NGUI/Scripts/UI/UICamera.cs:172) UICamera.GetDirection (System.String axis) (at Assets/NGUI/Scripts/UI/UICamera.cs:1733) UICamera.ProcessOthers () (at Assets/NGUI/Scripts/UI/UICamera.cs:2352) UICamera.ProcessEvents () (at Assets/NGUI/Scripts/UI/UICamera.cs:1955) UICamera.Update () (at Assets/NGUI/Scripts/UI/UICamera.cs:1907)

の場合も、同様に、
Verticalの項目を空にすると、消えました!

Unity5でアイコンフォントをNGUIで使ってみる。

UILabel、ペースト

Unityでボタン等のアイコン画像をフォントでまかないたいなと思って、

NGUI「UI Label」に入れようとおもったけど、どうやっていれていいかわからなかったのでメモ

1. アイコンフォントで有名らしい「http://fontawesome.io/」を、Unityで入れてみたいと思い入れてみた

※ライセンスにはご注意を!

2. まずダウンロードし、UnityのAssets/Fonts/**.ttfにドラッグ。

※拡張子がttfのものを使おう!

3. でこのあとどうしてよいのかわからくなった、textにいれたらいいんだろう。

サイト内に各アイコンに紐づく、unicodeというもので指定ができる。。

iconfont unicode
iconfont unicode

が、実際にはそれをUI Labelのテキスト内にいれてもアイコン画像は表示されません。

そう、通常unicodeはそのままでは入力できないんです。ただ、実はクリップボードコピーはできちゃいます。

iconfont
iconfont

この画面でコピーw

4. ダウンロードしたフォントデータを開き、使うアイコンテキストをコピーし、UI Label内にペーストする。

UILabel、ペースト
UILabel、ペースト

text内は何の文字も見えない状態ですが、ペーストされていれば、アイコン画像が表示されているはず!

5. これで表示されると思います!

6. 一応上記でも対応できますが、ちゃんとunicodeを入力できるようにする方法がありました。先人の知恵

参考サイトさま:http://nekobata.blog.jp/archives/1032788479.html

Unity NGUI UILabel周りをスクリプトを扱う方法一覧

Unityの便利なasset NGUI。
そのNGUIの「UI Label」をスクリプトから扱う方法

テキストの基準位置の変更(左寄せや、下寄せ等)

GetComponent<UIWidget>().pivot = UIWidget.Pivot.Center; //センタリング

または

GetComponent<UILabel>().pivot = UIWidget.Pivot.Center; 

でもOK

テキストの表示領域のサイズ変更

GetComponent<UIWidget>().width = 60; //幅
GetComponent<UIWidget>().height = 60; //高さ