Unityで開発する過程で、実行する C# スクリプトの変数を別のスクリプトからアクセスしたい場合の手順について備忘録的に投稿します。
インスタンス化したクラスから使う場合
簡単なのは別のクラスで利用するクラスをインスタンス化して、アクセスする方法
例えば、アクセスする側は[Public]で変数を宣言しておく
using UnityEngine;
public class WorldData : MonoBehaviour
{
public int Width = 100;
}
一度、WorldDataクラスをインスタンス化しておいて、公開[Public]変数にアクセスして取得する。
private void Start()
{
var worldData = GetComponent<WorldData>();
if(worldData != null)
{
int worldWidth = worldData.Width;
}
}
クラスの変数に直接アクセスする場合
アクセスされる側のクラスに少し仕込みが必要ですが、次のコードのようにしておくと、クラスの Instance 変数経由で別の変数にアクセスができます。
using UnityEngine;
public class WorldData : MonoBehaviour
{
public static WorldData Instance;
public int Width = 100;
void Awake()
{
if (Instance == null)
{
Instance = this;
}
else
{
Destroy(gameObject);
}
}
}
別のクラスから変数にアクセスする場合は、インスタンス化なしで直接取得が可能。
int WorldWidth = WorldData.Instance.Width;
まとめ
今回は短い記事ですが、Unityで実行する C# スクリプトの変数を別のスクリプトからアクセスしたい場合の手順について書きました。
インスタンス化したクラスから公開で宣言した変数にアクセスする方法と、インスタンスとして宣言した変数経由でアクセスする方法があります。
Unityで別のクラスで宣言した変数にアクセスしたい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。
