2017-07-15 6 views
0

多くのスクリプトで私はplayerObjectを処理する必要があります。私は各スクリプトでそれを検索したくありません。ユニティはゲームオブジェクトへの常時アクセスを作成します

スタティッククラスを作成してプレーヤに永久にアクセスすることを考えました。

これは私が

public class Globals 
{ 
    public static GameObject playerObject = GameObject.FindGameObjectWithTag(StringCollection.PLAYER); // The playerObject 

    public static Rigidbody playerRigid = GameObject.FindGameObjectWithTag(StringCollection.PLAYER).GetComponent<Rigidbody>(); 
} // The rigidbody of the player 

それを行う方法だから私は、私は何回も必要とするすべての変数を格納したいです。新しいシーンをロードするとき、剛体が先に破壊されたオブジェクトにアクセスしようとしていると言います。

どうすれば修正できますか?

ユニティのUnityEngine.Objectが行われた場合にも破壊されているから継承

+0

シングルトンを調べることをお勧めします。 – oxrock

答えて

1

何..私は破壊されません取得しますMonobehaviourから継承するオブジェクトを作成する方法について考えたが、その後私はすべてのスクリプトで、それへの参照を作成する必要がありますstatic

ご希望の場合はDontDestroyOnLoadに電話する必要があります。この場合の呼び出しで:

DontDestroyOnLoad(Globals.playerObject); 

これは、次のシーンを通じて滞在し、それに接続されplayerObjectおよびすべてのコンポーネントを作成する必要があります。

+0

しかし、これをStartメソッドで呼び出す必要はありませんか?したがって、静的クラスはMonobから継承しないため、Startメソッドを呼び出すことはできません。右? – Question3r

+0

どこに電話しても問題ありません。限り、次のシーンをロードする前にそれを呼び出す限り、それは正常でなければなりません。 – Programmer

関連する問題