勉強会のレポート(メモ)です。
参加したのはこちら「Unity道場11月〜新機能・UIElementsと新しいInputSystem〜」
会場はユニティ・テクノロジーズ・ジャパンさんです。
動画はこちら
スライドなどは後日Learning Materialsで公開されます。
- 1. UIElements+UI BuilderでEditor拡張を作ろう
- 2. 新しいインプットシステムの使い方
- 懇親会
- 告知タイム
- ユニティちゃんクラウドファンディング
- タイムライン
1. UIElements+UI BuilderでEditor拡張を作ろう
https://t.co/eeRJJjw4XQ
— 黒河優介(YusukeKurokawa) (@wotakuro) November 26, 2019
本日のスライド資料兼サンプル集です。
サンプルと資料がセットになるから完璧や…
って3ページ目位まではそう思っていたんです…
まさかこんなにツラい事になるとは…#Unity道場
エディター拡張はかつてはC#で書いていましたがこれには問題点があった。
・レイアウトの調整が複雑
・ちょっとした変更でも毎回コンパイルがはいる
なのでUI Elementsができました
UI Elements
新しいUIシステムです。2019.1からExperimentalが外れました。
Editor拡張とランタイムでも動くことを予定しています。(ランタイムではまだ動かない)
Webに近い設計でパフォーマンスもよい
3つの要素
3つの要素で構成されています
・構造を表すUXML
HTMLのタグうちに近い
・スタイルを表すUSS
スタイルシートです
それぞれの関係性関連性
UXMLはボタンやラベルを定義します。
USSはボタンやラベルの細かいスタイル(フォントサイズなど)を記述。
C#はデータを読み込んで配置します。
UI Builder
UXMLやUSSを手打ちしなくてもUIを作れるツールです
現在はPackage Managerからprevireで使えます
ここでデモタイム(動画を見てね)
これからのEditor拡張はレイアウト・スタイル・ロジックが分離する。
レイアウト・スタイルはUI Builderで。
UI Elementsの応用編
いろいろな機能があります
UI Elements Debugger
デバッグするためのツール
実行中のUIの構造を見ることができます
簡単な編集ができます
IMGUI Conteiner
昔作ったプログラムを動かしたり、
従来のエディター拡張を併用して使うことができます。
Unity Editorでも使われています。
Custom Property
USS側に独自の要素を置ける機能
UXMLに直接書くのではなく、USSに埋め込む
ただしこれは少し複雑、これ以外にも下記の方法もあります。
独自のElementを作る
VisualElementを継承したClassを用意して、
独自のProperyを追加してどのように解釈するかをC#コードで書いてあげる方法
ここで作ったパーツはUI Builderでも認識されます
一度作ってしまえば他のプロジェクトに持っていくこともできます
まとめ
・UI ElementsをもってEditor拡張できる
・Webに近い形でできる
・IMGUI Conteinerで古いやり方を使うこともできる
・独自のものを作ることができる
・UIElements Debuggerとても便利
質疑応答
データバインディング機能は将来できますか?
特に聞いてないです。エディター専用ですがバインディング機能はあります。
9 silceをはじめ、表示できるコンポーネントは増えていく?
全部搭載されるかはわからないが、増えていきます。
Graph Viewはランタイムでも動く?
わからない
現状UIを作るベストプラクティスは?
できるならUI Builderでやったほうがいい、ただしXMLじゃないとできないこともある
2. 新しいインプットシステムの使い方
事前アンケートではほとんど誰も使用していない
Input Systenとはなんぞや
2019.3でpreviewが外れた新しい入力システム
Packageから導入します。
キーを押してログを出すくらいなら簡単です。
しかし複雑になるとつらい、キーコンフィグもめんどくさくなります。
Input System的な入力制御
現状使う場合はC#で使いますが、デバイス側の入力はC#で知っておく必要はありません。
設定は設定ファイルで行います。用語がややこしいの解説します。
Control
デバイスの入力の値。
Input Action
プレイヤーのやりたいこと。移動や攻撃など。
Input Action Map
Input Actionをまとめて管理するもの
このMap自体をオンオフすることで、メインシステム戦闘モードまたは通常モードに移行しますといったふうに操作形態を切り替えることができます。
使う流れ(準備)
Input Action Mapを用意、プレイヤーのアクションごとにInput Actionを用意します。
InputとControlをバインドします。
使う流れ(使う側)
InputActionから入力情報を取得するだけ
ここでデモ(動画を見てね)
フレームレートとのギャップをなんとかする
コントローラーはゲームと比べフレームレートが高い。
そのため、入力をが落ちることがある
(これに対処するにはゲーム側のフレームレートを上げるしかない)
そこでInput Systemは中間バッファを持っています。
入力情報を格納してフレームレートの最後に渡します。
ちなみに、このバッファはクリアしなければ残るため、フレームをまたいで取得することもできる。
モバイルのInput System
Input Systemは多くのデバイスに対応していますが、タッチパネルには問題があります。
バーチャルパッドを使ったりする場合、TouchScreenPosotionからしか入力が取れない。
OnScreenControlというUIの入力とInput Systemをバインドする仕組みがあります。
uGUIで入力を取得して、InputSystem用にそれを上書きすることができます。
ここでデモ(動画を見てね)
ローカルマルチプレイ
今までのUnityとは違い、Input Systemなら大分楽にできます。
Player Indexを割り当てればよい。
ここでデモ(動画を見てね)
分割も楽にできるが問題もある。
PlayerInputが初期化した順番でindexが割り当てられるため、コントローラーと一致しない場合がある。
これに対しては、playerindex とキャラクターを一致させましょう。
キャラクター自身にPlayer Indexを取得させるなどの処理が必要です。
本日のおさらい
・キーボードからの取得は簡単にできる。
・入力のInputActionにControlをバインドさせ取得する。
・バッファを使用してフレームレートのギャップを踏めることができる。
・uGUIなどの入力をInput System用に上書きできる。
・PlayerInputを使えばローカルマルチプレイも簡単。
質疑応答
Unityアプリ起動時のキーコンフィグはどうなったの?
なくなりました。ランタイムで読み込むことができるのでキーコンフィグは自分で頑張ってください。
Action Mapは階層構造を持たせたり、一部を変えたりできる?
階層構造はないが、自由に変更することはできます。
GravityやThresholdの設定はできますか?
ThresholdやDead Zoneは設定であります。
プレイヤーが奇数人の場合、画面分割はどうなる?自由に変更できる?
現状その機能はない、今後追加されるかはわからない、自分で頑張ればなんとかなる。
VRの対応もしてますか?
してます。いろいろ対応していますし、自分でコントローラーを作ることができます。
ここも全部拡張可能です。
コントローラーを複数つないだ時にJoin Numberを取得したり設定することはできますか?
わからない、できるかもしれないしできないかもしれない。
懇親会
告知タイム
prodevelopers-gamejam.connpass.com
ユニティちゃんクラウドファンディング
ユニティちゃんフィギュア化プロジェクトのクラウドファンディングを記念したパネルが設置してありました。
こちらのクラウドファンディング、来年の1月までやっているので興味のある方はどうぞ。
#Unity道場 pic.twitter.com/8SP7A9fobh
— とりすーぷ (@toRisouP) November 26, 2019
#unity道場 pic.twitter.com/Trj045MTnR
— 齋藤あきこ (@akiko_saito) November 26, 2019
タイムライン
明日の #Unity道場 では、こんなフォトスポットがありますので、ご自由に撮影してくださいませ。また、この花輪は2週間ほど設置してますので、Unity Japanオフィスにご来訪の際も是非どうぞ。 pic.twitter.com/KtXiBjbDUp
— tamtam (@kouic_t) November 25, 2019
エディタ拡張の作成がhtmlのように作成できる。
— 仁志野六八@VR大和 (@hurounin) November 26, 2019
XML、CSS、JavaScriptのような構造になる。
#Unity道場
UIElementsのRuntime版の完成は2020.3予定らしい、当分は使えなさそうだが対応アセットが売られる時代になったらUI Elements Debuggerで学習がめっちゃ捗りそう #Unity道場
— クロノス (@khronos2510) November 26, 2019
Enter PlayModeはいいぞ (2019.3)#Unity道場
— mao (@TEST_H_) November 26, 2019
キーコンフィグだけじゃなくて、解像度選択画面毎2019.3か2020.1辺りでなくなってしまいます…#Unity道場
— 黒河優介(YusukeKurokawa) (@wotakuro) November 26, 2019
質問した。ActionMapの階層構造はないそうなので、スクリプトで一部ボタンの設定を入れ替えてねというお話でした。 #Unity道場
— ichijo (@Takaaki_Ichijo) November 26, 2019
Input SystemはVRのコントローラーも対応!結構な数のテンプレートがある
— クロノス (@khronos2510) November 26, 2019
XR HMDも対応してるらしい!?#Unity道場
間違っている箇所、消してほしいツイートがありましたらコメントにお願いします。