回答編集履歴

2

解法を見つけました。

2024/06/27 11:26

投稿

GamePlayer1
GamePlayer1

スコア1

test CHANGED
@@ -1,13 +1,40 @@
1
- 以下の様に .SetParent() で後から親指定したら見かけは上手くいきましたが、
1
+ GameObjectを`public`ではなく`static`宣言したに間接的にプレファブ参照する方法でも上手くいきました
2
- 内部で別のオブジェクトを試しに生成したら増殖するバグが治ってなかったので
3
- 前の生成物の内容を引き継いだ hueru が生成されてる様です。
2
+ `static`だと前の状態を引き継がな状態で新規に複製できる様です。
3
+ ※以下、ループを抜ける処理は記載していません。
4
+
4
5
 
5
6
  ```ここに言語を入力
7
+ // GameDirector.cs
8
+
9
+ using System.Collections;
10
+ using System.Collections.Generic;
6
- void Start()
11
+ using UnityEngine;
12
+
13
+ public class GameDirector : MonoBehaviour
7
14
  {
8
-  GameObject obj1 = Instantiate(hueru);
15
+ public static GameObject hueru; // staticで宣言
16
+ public GameObject hueruTemp; // インスペクタービューでプレファブを参照
17
+ void Start()
18
+ {
9
-  GameObject obj2 = Instantiate(hueru);
19
+ hueru = hueruTemp; // staticゲームオブジェクトに代入
10
-  obj1.transform.SetParent(transform);
20
+ Instantiate(hueru, transform); // 複製
11
-  obj2.transform.SetParent(transform);
21
+ }
12
22
  }
13
23
  ```
24
+ ```ここに言語を入力
25
+  // Hueru.cs
26
+
27
+ using System.Collections;
28
+ using System.Collections.Generic;
29
+ using UnityEngine;
30
+
31
+ public class Hueru : MonoBehaviour
32
+ {
33
+ GameObject hueru = GameDirector.hueru; // GameDirectorのstaticゲームオブジェクトを参照
34
+ void Start()
35
+ {
36
+ Instantiate(hueru, transform); // 2つに複製
37
+ Instantiate(hueru, transform);
38
+ }
39
+ }
40
+ ```

1

勘違いによる記載を修正しました。

2024/06/23 09:33

投稿

GamePlayer1
GamePlayer1

スコア1

test CHANGED
@@ -1,11 +1,13 @@
1
- 以下の様に .SetParent() で後から親を指定したら一応解決しました
1
+ 以下の様に .SetParent() で後から親を指定したら見かけ上は上手くいきましたが、
2
+ 内部で別のオブジェクトを試しに生成したら増殖するバグが治ってなかったので
2
- でも、Instantiate(hueru, transform); のな1回の記述いければ良いのに
3
+ 前の生成物の内容を引き継いだ hueru が生成されてる様です。
3
- モヤモヤが残ります。
4
4
 
5
+ ```ここに言語を入力
5
6
  void Start()
6
7
  {
7
- GameObject obj1 = Instantiate(hueru);
8
+  GameObject obj1 = Instantiate(hueru);
8
- GameObject obj2 = Instantiate(hueru);
9
+  GameObject obj2 = Instantiate(hueru);
9
- obj1.transform.SetParent(transform);
10
+  obj1.transform.SetParent(transform);
10
- obj2.transform.SetParent(transform);
11
+  obj2.transform.SetParent(transform);
11
12
  }
13
+ ```