2016.02.22uGUIでのボタンの配置は大きく2通りありますが、どちらもそこまで難しくありません。クリックの定義Buttonコンポーネントを利用するButtonコンポーネントはAddComponentから設定できます。Buttonが追加されます。Buttonの利用にはこのパラメータを環境に合わせて適切に設定するだけで利用可能です。判定範囲クリック判定の範囲はButtonコンポーネントが付いているGameObjectのRectTransformの矩形、もしくはPhysx2DのColliderの範囲です。このあたりは以下の記事も参考にしてください。自分で作ったuGUI用メッシュのクリック判定対応uGUIで自由なメッシュを表示するでuGUI用のメッシュの作り方をざっくり解説しました。これにIPointerClickHandler等を利用してクリック(タッチ)判定をつけてもイマイチ思った動作をしません。前の記事でuGUIの自分で作ったクリック判定の調整作業をざっくり書きました。これには課題点がありました。クリ...cfm-art.sakura.ne.jp2019.06.13各パラメータInteractableボタンが反応するかどうかの指定です。false(チェック外す)の場合は押すことができなくなり、Disabled状態になります。Transitionボタンを押下した時等のボタンの反応の設定です。Graphicには反応させるImage等を指定します。デフォルトはButtonコンポーネントが付いているGameObjectです。Buttonの判定と画像を分けたい時は別のGameObjectを指定できます。Transitionの指定は以下のようになっています。Swap画像を差し替えるAnimation設定されているAnimationのTriggerを起動するTransitionに指定されたものを以下の各状態ごとで設定できます。Duration秒かけて色が変化します。NavigationこれはButtonに限らずユーザーが選択できるもののつながりを設定するものです。キーボードの上下左右を押した時にフォーカスがどのように移り変わるか、と言ったものを指定できます。Clickここにボタンがクリック(タップ)された時の関数を指定します。右下の+を押すことで、ヒエラルキー上のGameObjectとその中のコンポーネント(MonoBehaviour)に定義されている関数を指定できます。上記画像のだと以下のような感じです。}}このスクリプトを適当なGameObjectに設定し、そのGameObjectをドラッグ&ドロップすると関数が選択できます。この関数にはいくつか制限があります。アクセス指定子はpublic返り値はvoid引数の数は0か1つ引数の型はbool、int、float、string、Object(UnityEngineの)、Obejctを継承したもの引数に渡すパラメータはEditor上で設定できるもの(可変しないもので設定する必要があり、例えばGameObjectのnameを設定といった使い方はできません)staticでも良いsetプロパティでも良いこの場合でも上記引数の型でなければいけませんという感じです。イベントハンドラの実装イベントハンドラを自分で実装する事もできます。この際はボタンの見た目の変更といったButtonが提供していたクリック以外の部分は(必要なら)自分で実装する必要があります。判定範囲Buttonと同様にクリック判定の範囲はコンポーネントが付いているGameObjectのRectTransformの矩形、もしくはPhysx2DのColliderの範囲です。いうのもButtonはこのイベントハンドラを利用して作られているようです。実装にはMonoBehaivourを継承したクラスにUnityEngine.EventSystemsの中にある各イベントハンドラインターフェースを実装します。クリックに反応するサンプルです。}}このコンポーネントを設定すると、設定されたGameObjectがクリックされるとログが表示されます。※その他の設定は基本的には必要ありませんが、EventSystemやRaycasterが存在しないとイベントが発生しません。これらは自分で消さなければ無いことは無いと思われます。IPointerClickHandlerというのがイベントハンドラインターフェースの1つです。この他にもイベントハンドラインターフェースには以下のものがあります。IBeginDragHandlerIDragHandlerと一緒に利用します。IEndDragHandlerIDragHandlerと一緒に利用します。IDragHandlerドラッグの開始(OnBeginDrag)、ドラッグ中(OnDrag)、ドラッグの終了(OnEndDrag)を検知します。ICancelHandlerなんらかの入力のキャンセルを検知します。ISelectHandler選択されたのを検知します。IDeselectHandler選択されていたが、別のオブジェクトに選択が移ったのを検知します。IDropHandlerドラッグ&ドロップされたのを検知します。IInitializePotentialDragHandlerドラッグ&ドロップの対象が発見された場合に呼ばれます。(よくわからない)IMoveHandlerフォーカスの移動を検知します。(Deselectとの違いはあまり良くわかりません。)IPointerClickHandlerクリック(押下して離した)を検知します。IPointerDownHandler押下されたのを検知します。IPointerEnterHandlerマウスオーバー(ホバー)を検知します。IPointerExitHandlerマウスオーバー状態から外れたのを検知します。IPointerUpHandler離されたのを検知します。IScrollHandlerScrollView等でスクロールされたのを検知します。ISubmitHandlerEnterキーを押す等何かが決定されたのを検知します。IUpdateSelectedHandler選択中を検知します。とたくさん用意されています。これらのうち必要なものを実装することで、自由にイベント制御することができます。クリックの定義Unityでのクリックは「あるオブジェクトを押し(クリックし)、同じオブジェクト上で指が離されたら」となっているようです。押した後オブジェクトからカーソルが上からずれた状態で離してもクリックイベントは発火しません。押した後一度カーソルが上からずれた後、再度上に戻ってきて離すとイベントは発火します。まとめると以下はクリック判定です。オブジェクト上で押下し、そのまま離されるオブジェクト上で押下し、一度ドラッグ(スワイプ)でオブジェクトの外に出るが、再度オブジェクト上に戻ってきて離される以下はクリック判定ではありません。続きこの記事の続きです。最後に課題として投げていたものを順次実装してみます。毎度同じようにはねて面白味もなにもないので、バーの当たる場所で跳ね返る角度を若干変えるようにします。ボールに角度を変える...C#Unityのコルーチン機能を使うUnityにはコルーチンという便利な機能があります。コルーチン自体はUnity特有のものではありません。マイクロスレッドやフ...ASP.NetEntityFrameworkのMigrationを試してみる以前ASP.Netで超簡単な掲示板を作りました。これのDBの処理はEntityFrameworkと呼ばれるO/Rマッパーを利用しています。作っていて不便な点が出てきます。それが、テーブル情報の変更時です...C#Unityのシステムフォントの注意点Unity4.5やらの時代で開発していたときの話なので、もしかしたら事情が変わってるかもしれません。Unityではフォントを指定する際にArialを指定する事でシステムフォントを利用できます。Positionという仕組みになっています。これは3DやUnity2D(旧UI)時のTransformの座標指定とは毛色が違います。アンカー...C#uGUIで台形を表示するuGUI...というか3Dで2Dの描画するときの鬼門の一つに台形があります。表示してみればわかりますがテクスチャが変になります。この記事では上底と下底が並行な台形(平行四辺形含む)に絞った描画方法を模索しています。ツイートタイトルとURLをコピーしました。