忍者ブログ
2017.06 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

プロフィール

HN:
kamera25
職業:
電気工事
趣味:
ゲーム制作

一言

仕事で失敗し、丸坊主になった人のイラストです。 (プロフィール画像変わりました。)

フリーエリア



カテゴリー

最新CM

[10/03 ora exacta]
[09/22 F19]
[03/24 F19]
[01/29 森下 拓]
[11/14 F19]

Unity

[1]  [2]  [3]  [4]  [5

UGUIでのRepeatButton(押しっぱなしボタン)の作り方

(余談 : 広島Unity勉強会やってる時に、keeyssoftさんから受けた質問です。)

Unity4.6がリリースされてしばらく経ちますが、みなさんUGUIを使いこなしてますかー?

さて今回紹介するのは、UGUIでのボタンの押しっぱなしを検知する方法です。旧OnGUIでは RepeatButtonと呼ばれていました。

それではどうぞー



1.まず普通にUGUIのボタンを作りましょう。


2.ボタンのオブジェクトの「Add Component」を押して、「Event Trigger」を押してください。


3.新規に「RepeatButton」スクリプトを作ります。


スクリプトの中身は以下のように書きます。(今回はC#を使います。)



4.さっき追加した「EventTrigger」の「Add New Event Type」を押して「PointerDown」と「PointerUp」を追加してください。
※PointerDownはボタン押下時、PointerUpはボタン離す時にスクリプトのメソッドを呼び出します。



5.EventTrigerの「PointerDown」に「RepeatButtonのStartPush()」を選択してください。また「PointerUp」に「RepeatButtonのStopPush()」を選択してください。
※PointerDownはボタン押下時、PointerUpはボタン離す時にスクリプトを呼び出します。


6.以上で完了です。押しっぱなしで反応するボタンになりました。





OnGUIに比べるとすこし手間はかかりますが、UGUIのボタン装飾とかが使えるのでこっちをなるべく使っていきたいですね。
PR
2015/01/29 (Thu) Unity CM(2)

Export Package にレイヤー、タグ、インプットを含める際にやる事。

備忘録。UnityでExport Packageを作ると、アセットのデータをパッケージ化することが出来ます。しかしながら、タグ、レイヤー、インプットの情報を含める事は通常は出来ません

探してみるとこちらのサイトの方法で、アセットにタグ、レイヤー等を含める事が出来ると書いてありました。しかしながらこれを実行すると、「test.unitypackage」は出力されますが、タグとレイヤーだけしか含まれないパッケージが生成されました。

調べてみるとこちらの方法でデータ、タグ、レイヤー、インプットを含めたパッケージが出力できる事が分かりました。先ほどのサイトのコードを変えると、以下のようになります。


これを「/Assets/Editor」以下に入れて、プロジェクトのウィンドウで右クリックして「ExportWithSettings」を押せば、そのUnityプロジェクトがある場所にパッケージが出来ます。

Unitypackageをアセットストアに出すときぐらいにしか使わないと思いますが、機会があれば是非使ってみてください。

2015/01/19 (Mon) Unity CM(0)

UGUIでボタンが働かない事があった

uGUIでボタンを作ってると、表示はうまくいってるのに、ボタンが押下できませんでした。

自分が遭遇したのは、下の画像の「名前の変更」が押せませんでした。(右上の「X」ボタンは押せます。)


原因は、オレンジ部分にCanvasと、赤部分「名前の変更」ボタンがあるCanvasのGraphic Raycaster が同じPriority(優先度)になっていました。

Priority は数が多いほど、優先度が低くなります。なので今回の場合、オレンジCanvasは「Priority=100」にして、赤Canvasは「Priority=4」にしました。

画像のレイヤー表示が正しいのに…と詰まる人がいると思うので、メモ。




12月25日追記 : Unity4.6.1でこの Priotiry の項目が削除されました。なぜかというと、4.6.1 以降は自動的に優先度を作るように変更されたからです。

しかしながら、Unity4.6.1では優先度を決めるアルゴリズムにバグがあったそうで、キャンバス奥のUIしか押せない等の誤作動する事があるみたいです。(私の方でも誤作動しました。)

http://forum.unity3d.com/threads/graphic-raycaster-used-to-have-a-priority.283851/

1月30日追記 : この修正が入った、Unity4.6.2リリースされました。



2014/11/13 (Thu) Unity CM(0)

UGUIのアニメ付ボタン、Time.TimeScale=0でアニメーションが再生されない

Unity 4.6 Beta 21 を絶賛使ってます。UGUI超楽しいです(不具合多くて)。

さてUGUIのButtonで、Transition を Animation にするとアニメ付ボタンを使えます。便利便利…と思って次のやつでハマりました。

メニューの表示の前に、Time.TimeScale = 0 をしてゲーム全体の処理を止める事が多いと思います。(参考 : http://hideapp.cocolog-nifty.com/blog/2013/06/unity-action-ti.html)

その時にデフォルトだと、アニメ付ボタンのアニメーションが再生されなくなるんですね。

解決方法ですが、Animatorの「Update Mode」 を Normal から Unscaled Time にしてください。これで Time.TimeScaleを無視してアニメーションを再生できます


2014/11/02 (Sun) Unity CM(0)

MMD4Mecanim で クォーターニオン エラーが出る件。

Religion では MMD4Mecanim という MMD のデータをコンバートするツールを使っています。先日古いバージョンから MMD4Mecanim 20141020 に更新した時にこんなエラーが出ました。

Quaternion To Matrix conversion failed because input Quaternion is invalid.

「クォーターニオンから行列へ直せんぜ!」とエラーが出ました。これはコンバートしたモーションを再生しているときに、ずっと出ていました。また何度MMDモデルのデータのコンバートをしても同じエラーが出てしまいました。

対処方法ですが、「一旦、MMD4Mecanimからコンバートされた既存の FBX ファイルを削除して、それからMMDモデルをコンバート」する事で直りました。

なんか大きく仕様が変わっておかしくなっていたのかなと思います。あんまり役に立ちそうにないですが、お気をつけて。
2014/10/23 (Thu) Unity CM(0)