本記事の目的
インスタンス化を理解して、Unityで実際に動かすとこまで行う。
動作イメージ↓
インスタンス化とは?
なぜインスタンス化が必要なのか?
こちらがとってもわかりやすいです↓
https://qiita.com/kn2018/items/f99f62cabfd31667b055
実装例
スクリプトは以下の通り
instance_cube.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class instance_cube : MonoBehaviour
{
public float timeOut=1.0f;
private float timeElapsed;
public GameObject cube;
void Update()
{
//timeElapsedに経過時間(Time.deltaTime)を加算
timeElapsed += Time.deltaTime;
if (timeElapsed >= timeOut)
{
//InstantiateでGameObject生成
//Instantiate(複製するGameObject,位置,回転)の順番で記載
Instantiate(cube, new Vector3(Random.Range(-5.0f, 5.0f), Random.Range(-5.0f, 5.0f), Random.Range(-5.0f, 5.0f)), Quaternion.identity);
//timeElapsedを0.0fに戻す
timeElapsed = 0.0f;
}
}
}
親オブジェクトの下にインスタンス化する
instance_cube_under_parent.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class instance_cube_under_parent : MonoBehaviour
{
public float timeOut=1.0f;
private float timeElapsed;
public GameObject cube;
public GameObject parent;
void Update()
{
//timeElapsedに経過時間(Time.deltaTime)を加算
timeElapsed += Time.deltaTime;
if (timeElapsed >= timeOut)
{
//InstantiateでGameObject生成
//Instantiate(複製するGameObject,位置,回転)の順番で記載
Instantiate(cube, new Vector3(Random.Range(-5.0f, 5.0f), Random.Range(-5.0f, 5.0f), Random.Range(-5.0f, 5.0f)), Quaternion.identity, parent.transform);
//timeElapsedを0.0fに戻す
timeElapsed = 0.0f;
}
}
}
最後に
これでインスタンス化ができましたね。