2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity uGUIs -ウグイス- 1人でがんばりますカレンダー Advent Calendar 2015

この記事はUnity uGUIs -ウグイス- 1人でがんばりますカレンダー Advent Calendar 2015の3日目の記事です。

カレンダーの購読をしてくださる方がちょいちょい出てきてくれていて本当にありがたい限りです。
すでにネタ切れが見えていて辛い部分しかないんですが、書ける限りはがんばりますのでよろしくお願いします。

それでは、本編へ

基本機能というかおさらい的なお話

2日目の記事及び、その中にあるサンプルプロジェクトをご覧になった方にはおわかり頂けるのかなと思うのですが、
例えばボタンを利用するためには"対象のボタンオブジェクトの名前"と"uGUIs.UI.Buttonクラスの継承"の二点をクリアすれば利用できます。
単純に押さえておいて欲しい点はそれだけですね。

あ、後この機能ですがボタンだけに限らずUIコンポーネント色々準備をしています!ToggleだったりSliderだったり!
他のUIコンポーネントであってもあまり書き方は変わらずです。

とりあえずボタンではこのような感じになります↓

SampleButton.cs
public class SampleButton : uGUIs.UI.Button<SampleButton> {
  public void OnClick(){
    Debug.Log( "ボタンがクリックされたよ!" );
  }
}

上記ようなコードを書いて、空っぽでも既存のでも良いですがGameObjectへアタッチ。
後はCanvas内に"SampleButton"があれば自動的に紐付けされます。
その結果、細かい事に意識をすることなくボタンというUIを利用することが出来るようになります。

という部分までは前回お話しした内容と同じ部分です。

Attributeによる対象の変更

さて、みなさん心の中で思うことがあると思います。

対象のボタンの名前と同じクラス名じゃないとダメなのか?
コールバックはOnClickじゃないとダメなのか?

もちろん変更できるような仕組みにしてあります。
その際には対象のクラス及び関数に対して必要なAttributeを設定することで変更できるようになっています。
例えばこんな感じです

SampleButton2.cs

[uGUIs.Attribute.TargetBind( "紐付けたいボタンの名前" )]
public class SampleButton2 : uGUIs.UI.Button<SampleButton2> {

  [uGUIs.Attribute.CallbackBind( "OnClick" )]
  public void DoSomething(){
    Debug.Log( "何かする" );
  }
}

TargetBindとCallbackBindというAttributeを用いることで上記のように任意の設定を行うことが出来ます。
まあ、自分で付けておいてこの機能ってさほど重要ではないだろうなという感じです。

終わりに

今回もかるーくかるーくな説明で終わってしまいましたが、実装とかどうやってるのみたいな話は後日出来たらなーという感じで。
まだまだAuto Bindingも足りない機能というのがあるのでそれも追加していかないとですね・・・。

明日はコンポーネント装飾関連の説明記事を書いていきます!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?