[Unity 3D] Instantiate関数を使ってゲームオブジェクトを複製するときの注意点。

(2022/03/06)
の画像

Unityを使っている最中、ゲームオブジェクトを複製するためにInstantiate関数を使っていると、ゲームオブジェクトが複製され続けてしまって画面が固まってしまったのでその原因と対処法を書き残しておきます。

目次

  • 実現したいこと
  • コードを書いていざ実行!
  • 原因は?
  • 解決策
  • 実現したいこと

    下の画像みたいに、Cubeを複製して並べたい。

    Cubeが並んでいる画像

    コードを書いていざ実行!

    複製する元となるCubeを用意して、そのCubeにスクリプトをアタッチして実行したところ、画面が固まってしまいました。仕方がないので強制終了してもう一度Unityを起動しました。

    原因は?

    画面が固まってしまったのは、複製するCubeにスクリプトをアタッチしてしまったことが原因でした。

    つまり、元となるCubeが4つCubeを複製 → 複製された4つのCubeがさらにそれぞれ4つずつCubeを複製・・・というような複製ループの入ってしまっていたわけです。

    解決策

    スクリプトをアタッチする場所が原因だったので、空のオブジェクトを用意して、そのオブジェクトにスクリプトをアタッチすれば良いです。

    使用したコード
    public GameObject original;
    int count = 1;
      // Start is called before the first frame update
      void Start()
      {
        while(count < 5){
          Instantiate(original, new Vector3(3f * count, 0, 0), Quaternion.identity);
          count++;
        }
      }
    
      // Update is called once per frame
      void Update()
      {
    
      }
    
     
    他の記事も見る
     
  • プライバシーポリシー