InputSystemことはじめ
by
Naoya Kurihara
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
InputSystem ことはじめ Unity お・と・な のLT大会 2018 栗原 直哉 / @kuriharaan
Slide 2
Slide 2 text
InputSystem 新しいシステムが進行中 https://github.com/Unity-Technologies/I nputSystem
Slide 3
Slide 3 text
おことわり プレビュー版で変更の多い機能について話ます。 本資料もどんどん古い情報となって行きますので、 ご注意&ご容赦くださいませ
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
スケジュールとステータス https://forum.unity.com/threads/input-system-update. 508660/page-8#post-3870865 これから安定性にフォーカス ドキュメント、demo に取り掛かっていく
Slide 7
Slide 7 text
2019 1月 - 3月 ベータ
Slide 8
Slide 8 text
3月 2019.1で1.0-preview
Slide 9
Slide 9 text
2019.2 “Verified” 予定
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
今、使える? 基本の機能自体は動いてる
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
今、使える? 注意 まだ正式なプロダクトでの採用は慎重に
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
今、使える? ドキュメントはまだまだ Wikiの情報は古い
Slide 16
Slide 16 text
Tipsの一番上の項目がいきなり動かない Keyboard.current などない
Slide 17
Slide 17 text
今、使える? 機能を知るには パッケージの中のテストコードを見るのがおすすめ Packages/InputSystem/Test/
Slide 18
Slide 18 text
いままでのInputSystem UnityEngine.Input
Slide 19
Slide 19 text
いままでのInputSystem Input Manager ウィンドウで設定 ボタンとAxis、マウス Input.GetButton(“Jump”) Input.GetAxis(“Horizontal”) Input.GetKey(KeyCode.Space)とかも
Slide 20
Slide 20 text
いままでのInputSystem だいぶ古い ・設定項目がフラットで、構造体そのまま露出させたような ・ゲームプレイ側のアクションの定義として使いたい、 と思いきやユーティリティがここに定義を入れたり ・joystick button 2 とか毎度どれだったか
Slide 21
Slide 21 text
いままでのInputSystem ・ゲームプレイ側のアクションの定義として使いたい、 と思いきやユーティリティがここに定義を入れたりする
Slide 22
Slide 22 text
いままでのInputSystem https://blogs.unity3d.com/jp/2018/11/22/multi-platform-vr-features-in-2018-3/ 例えばUnityのマルチプラットフォームVRサンプル(画像はブログから)
Slide 23
Slide 23 text
いままでのInputSystem https://blogs.unity3d.com/jp/2018/11/22/multi-platform-vr-features-in-2018-3/ 例えばUnityのマルチプラットフォームVRサンプル(画像はブログから) 衝突しちゃう
Slide 24
Slide 24 text
レイヤーが足りてなかった たぶんレイヤーが足りてなかった。
Slide 25
Slide 25 text
抽象デバイス レイアウト作成 アクションのマッピング プレイヤーへのデバイスアサイン デバイス ゲームプレイ アクションのコンビネーション設定 ハイレベルでの欲求 欲しい要素
Slide 26
Slide 26 text
抽象デバイス レイアウト作成 アクションのマッピング プレイヤーへのデバイスアサイン デバイス ゲームプレイ アクションのコンビネーション設定 ハイレベルでの欲求 欲しい要素 new InputSystemでは InputSystem だいたいこんな感じ
Slide 27
Slide 27 text
導入 unityバージョン 2018.2.5f1以降 (2018.3で問題がある?とかで2018.3以降対応にシフトしていくっぽい さっき見た情報)
Slide 28
Slide 28 text
導入 "com.unity.modules.xr":"1.0.0", "com.unity.inputsystem":"0.0.13-preview" // <= 追加 }, "registry": "https://staging-packages.unity.com" // <= satging のレジストリを指定するため追加 } Packageのmanifest.jsonを書き換え
Slide 29
Slide 29 text
導入 もしくは githubから取得 clone or download https://github.com/Unity-Technologies/InputSystem 見てみるならそのまま使うでも。 Packageの中をコピーしてもよし。
Slide 30
Slide 30 text
導入 Player settings Bothにする(もしくはInputSystem(Preview))
Slide 31
Slide 31 text
Namespace クラスのネームスペースにはExperimental UnityEngine.Experimental.Input
Slide 32
Slide 32 text
Input Debugger エディタ上でデバイスの値をチェックできる
Slide 33
Slide 33 text
No content
Slide 34
Slide 34 text
Input Action Maps
Slide 35
Slide 35 text
Input Action Maps
Slide 36
Slide 36 text
Input Action Maps Action Map 複数用意することも出来る (複数で実行すると今問題あるかんじ)
Slide 37
Slide 37 text
Input Action Maps Action jumpとかfireとか ゲームプレイっぽいこと定義するとこ
Slide 38
Slide 38 text
Input Action Maps BindingとかInteractionとか
Slide 39
Slide 39 text
Input Action Maps アクションの定義がアセットとして作れる SerializeFieldで受けて、任意のアセットを使用するように書ける (一つのActionMapsに複数のmapも書ける -> 今は問題あり) キーコンフィグのセットを切り替えるような実装が可能
Slide 40
Slide 40 text
コードからの参照 Generate C# Class にチェックを入れてApplyするとInputActionMap(例だとplayer)や それぞれのInputAction(例だとjumpなど)にアクセスしやすいクラスを作ってくれる
Slide 41
Slide 41 text
アクションイベント public class InputAction : ICloneable { … public event Action performed; public event Action started; public event Action cancelled;
Slide 42
Slide 42 text
アクションイベント public void Awake() { controls.player.move.performed += ctx => m_Move = ctx.ReadValue(); controls.player.jump.performed += ctx => { if (ctx.interaction is SlowTapInteraction) {
Slide 43
Slide 43 text
マルチ実装 現状、プレイヤーという概念はないぽい模様 (今後は不明) ActionMapの参照しているデバイスを指定することは可能なので、 いちおう出来る マルチのサンプルもこれから用意していくらしいので期待
Slide 44
Slide 44 text
マルチ実装 actionMap = controls.player.Clone(); InputSystem.onDeviceChange += (device, change) => { switch (change) { case InputDeviceChange.Added: { switch(allowDeviceType) { if (device is Gamepad) { actionMap.devices = new InputDevice[] { device };
Slide 45
Slide 45 text
振動 gamepad.SetMotorSpeeds(0.1234f, 0.5678f);
Slide 46
Slide 46 text
組み合わせ action.AddBinding("/gamepad/leftTrigger").ChainedWith("/gamepad/buttonSouth"); 今は呼ぶと、あれかも
Slide 47
Slide 47 text
いままでのInputSystemで マルチなどに対応するアセット Rewired https://assetstore.unity.com/packages/tools/utilities/rewired-21676
Slide 48
Slide 48 text
いままでのInputSystem 新しいInputSystemが入っても、すぐに無くなるというわけではない (らしい?) 取り掛かりやすくて、 とりあえず入力とるのには手早く書ける 共存すると良いのでは もしくは同じ感じのstatic classとか