プレファブからインスタンスを作成し、そのタイミングでデータを渡す方法
様々な方法がありますが、ここでは、GameObject.FindメソッドやGetComponentを使わない方法を考えます
サンプル
Unity バージョン
2021.2.7f1
オブジェクトの構成
シーン
InspectorでSampleスクリプトにアウトレット接続するCubeScriptには、Cubeプレファブをドラッグ&ドロップします
型がCubeScript型のため、コンポーネント(今回はスクリプト)が自動で代入されます
プレファブ
コード
using UnityEngine;
public class CubeScript : MonoBehaviour
{
int data;
public void Initialize(int data)
{
this.data = data;
}
}
using UnityEngine;
public class Sample : MonoBehaviour
{
[SerializeField]
CubeScript cubeScript;
void Start()
{
Instantiate(cubeScript).Initialize(3);
}
}
解説
Instantiateメソッドでオブジェクト作成する際、引数としてプレファブオブジェクトではなく、コンポーネント(今回はスクリプト)を取リます。
作られたオブジェクトのInitializeメソッドを呼び出すとき引数付きで呼ぶことで、データを渡すことができます。
これは、C#でインスタンスを作るときの引数付きコンストラクタの機能に似たことをしていることになります。
ディスカッション
コメント一覧
まだ、コメントがありません