前提・実現したいこと
Input Systemのコードを組んで、下記コードは正常に実行されることが確認できたのですが、
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; public class MyInput : MonoBehaviour { MyControls _input; [SerializeField] GameObject cube; void Awake() { _input = new MyControls(); // コールバック登録 _input.Player.Fire.performed += _ => cube.transform.localScale *= 1.2f; } (質問と関係ないので、OnEnable、OnDisable、OnDestroyのコードは省略) }
質問1。
このラムダ式を普通のメソッドに置き換える方法をご教示お願いします。
質問2。
また、ラムダ式の_ (アンダースコア)は何なのでしょうか。
調べてみると、値の破棄かと思うのですが、
「利用しない変数」であることを明示した書き方みたいですが、
利用しないのであれば → 引数なし、つまり、()に書き換えることはできないのでしょうか。
下記のようにカッコに書き換えたらエラーになってしまいました。
_input.Player.Fire.performed += () => cube.transform.localScale *= 1.2f;
試したこと
質問1に関して。
下記のように書き換えてみましたが、エラーになってしまいました。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.InputSystem; // 追記 5 6 7public class MyInput : MonoBehaviour 8{ 9 10 MyControls _input; 11 12 [SerializeField] 13 GameObject cube; 14 15 void Awake() 16 { 17 _input = new MyControls(); 18 // コールバック登録 19 _input.Player.Fire.performed += Fire; 20 } 21 22 void Fire(){ 23 cube.transform.localScale *= 1.2f; 24 } 25}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/09/06 07:53