Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
InputSystemことはじめ
Search
Naoya Kurihara
December 15, 2018
0
1.4k
InputSystemことはじめ
Unity お・と・な のLT大会 2018
InputSystemについてのLT
プレビュー機能についてのスライドなので最新の情報から差異がある場合があるのでご注意を。
Naoya Kurihara
December 15, 2018
Tweet
Share
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Building an army of robots
kneath
302
43k
Documentation Writing (for coders)
carmenintech
65
4.4k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Building Applications with DynamoDB
mza
90
6.1k
Code Review Best Practice
trishagee
64
17k
The Language of Interfaces
destraynor
154
24k
Thoughts on Productivity
jonyablonski
67
4.3k
Transcript
InputSystem ことはじめ Unity お・と・な のLT大会 2018 栗原 直哉 / @kuriharaan
InputSystem 新しいシステムが進行中 https://github.com/Unity-Technologies/I nputSystem
おことわり プレビュー版で変更の多い機能について話ます。 本資料もどんどん古い情報となって行きますので、 ご注意&ご容赦くださいませ
None
None
スケジュールとステータス https://forum.unity.com/threads/input-system-update. 508660/page-8#post-3870865 これから安定性にフォーカス ドキュメント、demo に取り掛かっていく
2019 1月 - 3月 ベータ
3月 2019.1で1.0-preview
2019.2 “Verified” 予定
None
今、使える? 基本の機能自体は動いてる
None
今、使える? 注意 まだ正式なプロダクトでの採用は慎重に
None
今、使える? ドキュメントはまだまだ Wikiの情報は古い
Tipsの一番上の項目がいきなり動かない Keyboard.current などない
今、使える? 機能を知るには パッケージの中のテストコードを見るのがおすすめ Packages/InputSystem/Test/
いままでのInputSystem UnityEngine.Input
いままでのInputSystem Input Manager ウィンドウで設定 ボタンとAxis、マウス Input.GetButton(“Jump”) Input.GetAxis(“Horizontal”) Input.GetKey(KeyCode.Space)とかも
いままでのInputSystem だいぶ古い ・設定項目がフラットで、構造体そのまま露出させたような ・ゲームプレイ側のアクションの定義として使いたい、 と思いきやユーティリティがここに定義を入れたり ・joystick button 2 とか毎度どれだったか
いままでのInputSystem ・ゲームプレイ側のアクションの定義として使いたい、 と思いきやユーティリティがここに定義を入れたりする
いままでのInputSystem https://blogs.unity3d.com/jp/2018/11/22/multi-platform-vr-features-in-2018-3/ 例えばUnityのマルチプラットフォームVRサンプル(画像はブログから)
いままでのInputSystem https://blogs.unity3d.com/jp/2018/11/22/multi-platform-vr-features-in-2018-3/ 例えばUnityのマルチプラットフォームVRサンプル(画像はブログから) 衝突しちゃう
レイヤーが足りてなかった たぶんレイヤーが足りてなかった。
抽象デバイス レイアウト作成 アクションのマッピング プレイヤーへのデバイスアサイン デバイス ゲームプレイ アクションのコンビネーション設定 ハイレベルでの欲求 欲しい要素
抽象デバイス レイアウト作成 アクションのマッピング プレイヤーへのデバイスアサイン デバイス ゲームプレイ アクションのコンビネーション設定 ハイレベルでの欲求 欲しい要素 new
InputSystemでは InputSystem だいたいこんな感じ
導入 unityバージョン 2018.2.5f1以降 (2018.3で問題がある?とかで2018.3以降対応にシフトしていくっぽい さっき見た情報)
導入 "com.unity.modules.xr":"1.0.0", "com.unity.inputsystem":"0.0.13-preview" // <= 追加 }, "registry": "https://staging-packages.unity.com" //
<= satging のレジストリを指定するため追加 } Packageのmanifest.jsonを書き換え
導入 もしくは githubから取得 clone or download https://github.com/Unity-Technologies/InputSystem 見てみるならそのまま使うでも。 Packageの中をコピーしてもよし。
導入 Player settings Bothにする(もしくはInputSystem(Preview))
Namespace クラスのネームスペースにはExperimental UnityEngine.Experimental.Input
Input Debugger エディタ上でデバイスの値をチェックできる
None
Input Action Maps
Input Action Maps
Input Action Maps Action Map 複数用意することも出来る (複数で実行すると今問題あるかんじ)
Input Action Maps Action jumpとかfireとか ゲームプレイっぽいこと定義するとこ
Input Action Maps BindingとかInteractionとか
Input Action Maps アクションの定義がアセットとして作れる SerializeFieldで受けて、任意のアセットを使用するように書ける (一つのActionMapsに複数のmapも書ける -> 今は問題あり) キーコンフィグのセットを切り替えるような実装が可能
コードからの参照 Generate C# Class にチェックを入れてApplyするとInputActionMap(例だとplayer)や それぞれのInputAction(例だとjumpなど)にアクセスしやすいクラスを作ってくれる
アクションイベント public class InputAction : ICloneable { … public event
Action<CallbackContext> performed; public event Action<CallbackContext> started; public event Action<CallbackContext> cancelled;
アクションイベント public void Awake() { controls.player.move.performed += ctx => m_Move
= ctx.ReadValue<Vector2>(); controls.player.jump.performed += ctx => { if (ctx.interaction is SlowTapInteraction) {
マルチ実装 現状、プレイヤーという概念はないぽい模様 (今後は不明) ActionMapの参照しているデバイスを指定することは可能なので、 いちおう出来る マルチのサンプルもこれから用意していくらしいので期待
マルチ実装 actionMap = controls.player.Clone(); InputSystem.onDeviceChange += (device, change) => {
switch (change) { case InputDeviceChange.Added: { switch(allowDeviceType) { if (device is Gamepad) { actionMap.devices = new InputDevice[] { device };
振動 gamepad.SetMotorSpeeds(0.1234f, 0.5678f);
組み合わせ action.AddBinding("/gamepad/leftTrigger").ChainedWith("/gamepad/buttonSouth"); 今は呼ぶと、あれかも
いままでのInputSystemで マルチなどに対応するアセット Rewired https://assetstore.unity.com/packages/tools/utilities/rewired-21676
いままでのInputSystem 新しいInputSystemが入っても、すぐに無くなるというわけではない (らしい?) 取り掛かりやすくて、 とりあえず入力とるのには手早く書ける 共存すると良いのでは もしくは同じ感じのstatic classとか