2017-03-02 15 views
1

Gear VRを使用してプロジェクトを作成しています。オブジェクトを回転し、ヘッドセットの側面のスワイプとタップコントロールに基づいて情報を表示できます。Unity3D - Gear VR入力がシーン間で動作しない

ギアのVR側でタッチパッドを使用すると、回転や選択が可能ですが、シーンを変更してメインメニューに戻り、直前のシーンに戻ると機能が停止します。私は私が作ったこのスクリプトを使用しています

using UnityEngine; 
using UnityEngine.SceneManagement; 
using System.Collections; 
using System; 

public class GearVRTouchpad : MonoBehaviour 
{ 
    public GameObject heart; 

    public float speed; 

    Rigidbody heartRb; 

    void Start() 
    { 
     OVRTouchpad.Create(); 
     OVRTouchpad.TouchHandler += Touchpad; 

     heartRb = heart.GetComponent<Rigidbody>(); 
    } 

    void Update() 
    { 
     if (Input.GetKeyDown(KeyCode.W)) 
     { 
      SceneManager.LoadScene("Main Menu"); 
     } 
    } 


    void Touchpad(object sender, EventArgs e) 
    { 
     var touches = (OVRTouchpad.TouchArgs)e; 

     switch (touches.TouchType) 
     { 
      case OVRTouchpad.TouchEvent.SingleTap:     
       // Do some stuff  
       break;  

      case OVRTouchpad.TouchEvent.Up: 
       // Do some stuff 
       break; 
       //etc for other directions 

     } 
    } 
} 

私は私が私のゲームを起動すると、OVRTouchpadHelperが作成されたことに気付きました。それが私の問題と関係があるかどうかは分かりません。

私は取得していますエラーは次のとおりです。

MissingReferenceException: The object of type 'GearVRTouchpad' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object.

しかし、私はどこにもこのスクリプトが参照されていません

再生モードでシーンをチェックすると、変数割り当てがまだ残っていますが、スクリプトはまだそこにあります。

助けがあれば助かります。

+0

GearVRTouchpadを使用するクラス内のGearVRTouchpadクラスにエラーがありません。この例外をスローするものを提供できればいいと思います。 –

+0

私はそれが事実かもしれないと思ったが、私は他のスクリプトやファイルでこのスクリプトを使用していないのですか? – Tom

答えて

2

OVRTouchpad.TouchHandlerstatic EventHandlerです(これはゲームの存続期間中存続します)。スクリプトは作成時に購読していますが、破棄された時点では購読を取り消していません。シーンをリロードすると、古いサブスクリプションはまだイベントに残っていますが、古いGearVRTouchpadインスタンスはなくなります。これにより、次回にTouchHandlerイベントが発生し、MissingReferenceExceptionが発生します。あなたのクラスにこれを追加します。GearVRTouchpad動作とGameObjectが破壊されるたびに

void OnDestroy() { 
    OVRTouchpad.TouchHandler -= Touchpad; 
} 

は今、OVRTouchpadstaticイベントは、もはやそれへの参照を持っていません。

+1

華麗で完璧に動作します。ありがとう! – Tom

+0

@Tomお手伝いします! – Foggzie

関連する問題