私の知る限り、グローバル変数を使用する唯一の可能性は、それらを静的(C#ではconst)として定義することです。両方のスクリプトが同じ変数にアクセスしているときに、別のスクリプトから変数にアクセスして変更する方法はありますか?
2 に答える
それは状況とあなたの要件に依存します。ほとんどの場合、いくつかの方法があります。
両方のスクリプトが派生しMonoBehaviour
ていてアクティブな場合は、非静的パブリックメンバーを取得してGameObject.Findを使用できます(頻繁に必要な場合は参照として保存するか、Unityエディターでドラッグアンドドロップを使用します)。
これは、両方のオブジェクトが同じシーン内でアクティブであるか、DontDestroyOnLoadを呼び出してライフサイクルを延長しているオブジェクトに依存している場合にのみ機能します。
プレーンオブジェクトがある場合public static
は、最も便利なアプローチですが、シングルトンパターンと組み合わせることができます。public const
プリミティブ型でのみ機能することに注意してください。構造体またはオブジェクトへの読み取り専用アクセスを許可する場合は、を使用できますpublic static readonly
。
Unityをご覧ください。あるスクリプトから別のスクリプトに値を渡すにはどうすればよいですか?コーディング例とUnity3Dシングルトンマネージャークラスについては、インスタンスのシングルトンについて深く考えていMonoBehaviour
ます。
値がサポートされているタイプであり、頻繁にアクセスされず、アプリケーションの実行間の永続性の恩恵を受ける場合、PlayerPrefsは一部のグローバルを保持するのに適した場所である場合があります:)