前回グダグダ書きすぎたので今回は簡潔に。
Canvas内でimageを自動生成させようと試みるもオブジェクトは生成されるのにimageが表示されない!ということがありました。
今回はCanvas内でInstantiateする方法の備忘録。
#Canvasの親要素、子要素
Canvas内でimageを表示させるにはCanvasを親要素として配置しないといけないんですね。
hoge.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class hoge : MonoBehaviour
{
[SerializeField]
GameObject hogehoge;
[SerializeField]
GameObject canvas;
// Use this for initialization
void Start()
{
GameObject prefab = (GameObject)Instantiate(hogehoge);
prefab.transform.SetParent(canvas.transform, false);
}
// Update is called once per frame
void Update()
{
}
}
上記が参考にしたサイトをちょこっといじったコードです。
ネットで調べると同じようなコードがわんさか出てきましたw
これだとhogeがCanvasの子要素になるのでちゃんと表示されるようになります・・・が、今回やりたいのが「◯秒おきに自動生成」です。
#自動生成する
上記のコードをまたちょこっといじって自動生成できるように編集します。
hoge.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class hoge : MonoBehaviour
{
[SerializeField]
GameObject hogehoge;
[SerializeField]
GameObject canvas;
// Use this for initialization
void Start()
{
StartCoroutine("Hoge");
}
// Update is called once per frame
void Update()
{
}
IEnumerator Hoge()
{
while (true)
{
GameObject prefab = (GameObject)Instantiate(hogehoge);
prefab.transform.SetParent(canvas.transform, false);
yield return new WaitForSeconds(10f);
}
}
}
これで10秒おきに自動生成されるようになりました。
##まとめ
上記コードだと自動生成はされるようになりますが、座標がずっと一緒。。。
まだまだUnity初心者なので忘れないうちに備忘録として書きました。
次は座標!
参考にさせていただいたサイト↓
http://mhgames.blog.fc2.com/blog-entry-14.html