文系忘備録

どこにでもいる文系大学生の忘備録です

MENU

【Unity】シーン遷移後のEnhancedTouchのイベントエラーの解消法【C#】【input system】

今回はシーン遷移したあとに同じシーンを読み込むとEnhancedTouchがヌルポを吐いてきたので、その対処法について忘備録として書いていこうと思います。

ありがちなパターンとしては、
バトルシーン(EnhancedTouch初期化)

タイトルシーン

バトルシーン(ここでエラー(Null Refference))

対処法(おそらく正しい書き方)

private void Start(){
    // イベントを登録
    Touch.onFingerDown += OnFingerDown;
    Touch.onFingerMove += OnFingerMove;
    Touch.onFingerUp += OnFingerUp;
}

private void OnDisable(){
    // イベント登録解除 (これを書かないと参照エラー)
    Touch.onFingerDown -= OnFingerDown;
    Touch.onFingerMove -= OnFingerMove;
    Touch.onFingerUp -= OnFingerUp;
    EnhancedTouchSupport.Disable();
}

private void OnEnable(){
    EnhancedTouchSupport.Enable();
}

一度解除しないと同じシーンを読み込みなおした時に前のシーンを参照しようとしてエラーになるみたいです。
本当はEnhanced touchはゲーム起動時に読み込んで使いまわすのがいい感じみたいです。