どうも、大石です。
あなたはunityでprefabをスクリプトで複製
したいですか?
この記事を読めば、あなたはprefabをスクリプトで
複製できるようになります。
なので複製したいなら読んでみてください。
スポンサードサーチ
目次
unityでprefabを複製する方法(スクリプトで)
ということで結論です。
unityでprefabを複製したいなら、
1
public GameObject 変数名;
Instantiate(変数名);
スクリプトにこの2つを書きましょう。
2
そしてインスペクター上でprefabを
変数名のとこに登録しましょう。
最低限この2つの記述とprefabの登録をすれば
unityでprefabをスクリプトで複製できます。
ちなみにスクリプト例的には以下の感じです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Duplicate : MonoBehaviour
{
public GameObject test;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Instantiate(test);
}
}
なぜこれで動くのか?と思ったかと思うので、
ご説明させてください。
Instantiateとは?
わかりやすくするために、
まずInstantiate();から説明させてください。
Instantiate();とは、
任意のオブジェクトを複製することが
できるunityで用意されてる関数です。
なのでこのInstantiate();という関数を
スクリプトに書けば、好きなオブジェクトを複製できます。
prefabもしっかり複製できます。
prefabをinstantiateで複製するには
でこのInstantiate();複製するためには、
「何を」複製するかを指定してあげなければ
いけないのですが、
それをInstantiateの()の引数に書きます。
例を出すと Intantiate(test);のようにです。
この場合testという変数に登録したオブジェクトが
複製されます。
で冒頭で、
public GameObject 変数名;
Instantiate(変数名);
をスクリプトに書けばいいとご説明しましたが、
GameObject変数名のとこに、
スクリプトで複製したいprefabを、
インスペクター上で登録すればいいわけです。
するとスクリプトからprefabが複製されます。
こんな風に
すごい勢いでcubeのprefabが複製されてますね。笑
複製の動作を制御したい場合
ただ動画の通りUpdateの中に、
Instantiate()をそのまま書くと
すごい勢いで複製されます。
⇩これですね。
// Update is called once per frame
void Update()
{
Instantiate(test);
}
}
そうしたくない場合はif文などを前に
つけてあげて、マウスがクリックされたらなど
条件をつけて制御してあげましょう。
スポンサードサーチ
まとめ
はい、ということでまとめに入ります。
unityでprefabをスクリプトで複製したいならば、
public GameObject 変数名;
Instantiate(変数名);
そしてインスペクター上でprefabを
変数名のとこに登録しましょう。
これらを行いましょう。
するとprefabをスクリプトで複製
することができます。
それでは読んでもらってありがとうございました。
大石