LoginSignup
10
13

More than 5 years have passed since last update.

Canvas内でImageをInstantiateする備忘録(自動生成)

Posted at

前回グダグダ書きすぎたので今回は簡潔に。

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

10
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13