oniyarai’s tech memo

oniyarai’s tech memo

すぐ忘れる自分に捧げるメモ

オブジェクトの動的生成 Scriptから

Resources.Load

前準備

  1. 動的生成を行いたいオブジェクトのプレハブを作成。
  2. Assets直下にResourcesフォルダを作成
  3. 1で作成したプレハブを2に配置

ここからScriptでの動的なオブジェクト生成処理。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using PlayerControl;

namespace PlayerControl {
    public class BulletController : MonoBehaviour {

        private void DeactivateSelf()
        {
            // 爆発エフェクトオブジェクトを表示
            GameObject explosiveCircleObj = (GameObject)Resources.Load("ExplosiveCircle");
            Instantiate(explosiveCircleObj, 
                        transform.position, 
                        Quaternion.identity);

        }

上記のScriptでResouces配下においたプレハブ"ExplosiveCircle"のオブジェクトを取得し、そのオブジェクトをtransform.positionで指定した位置に生成できます。 上記は、オブジェクトの取得からScriptで行っているが、Unityの方でプレハブのオブジェクトを設定しておきそれをInstantinateするという方法でも実行可能。(この辺どっちが良いのか場合によるのだろう) 以下のような感じ。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using PlayerControl;

namespace PlayerControl {
    public class BulletController : MonoBehaviour {

        // 爆発エフェクトのオブジェクト
        [SerializeField] private GameObject ExplosiveObj;

        private void DeactivateSelf()
        {
            Instantiate(explosiveCircleObj, 
                        transform.position, 
                        Quaternion.identity);