実現したいこと
Instantiateでprefabを生成した際に画面内に生成されているのにそのprefabが「見えない」という症状がよく出ます
原因を調べてみるとcanvasの外に生成されてしまっているせいでcanvasより後ろ?に生成されている為、生成されているけど画面上では見えない、という事のようです?
Instantiate(itemA, transform.position, Quaternion.identity);
これだけしか書かないと生成はされるが、canvasの外に生成されてしまうせいで画面上では見えない?
・・・という事で意味はわからないけどお手本の通りに↓書いてみるとたしかに見えるようになります。
GameObject prefab = (GameObject)Instantiate(itemA, transform.position, Quaternion.identity);
prefab.transform.SetParent(canvas.transform, false);
canvasの子になり、canvasの中に生成されるようになったから、らしいです。
※canvasはインスペクターで指定してます
ここから本題なのですがcanvasのようにヒエラルキー上にある物が指定できれば問題は無いのですが
prefabから生成されるオブジェクトだった場合、親になるcanvasをインスペクター上では設定できなくなってしまうので、先ほどと同じように書いても親として指定しているはずのcanvasが無いのでエラー、となります。
もうInstantiateで生成する度に親子関係の指定をして実際に生成された場所が思ってるとのは全然違う所でそれを直す為にうんたらかんたらの設定があまりにも煩雑でうざったいです。
単純に
画面のここに生成!そしてcanvasよりも前に表示!
どこにあっても表示されるように最前面に生成!
…するような方法は無いのでしょうか?
Instantiateで生成する際にワールド座標を指定、なども調べてやり方もわかったのですが
結局生成した後、canvasの子になっていないと生成したオブジェクトは画面内に有るのに「見えない」
そしてprefabなのでcanvas(に限らずヒエラルキーに有る物全て)がインスペクター上では親に指定できない。
・・・という、状態です。何時間も詰まってます。
発生している問題・分からないこと
Instantiateで生成されているprefabが生成されているのに画面では「見えない」という状態を改善したいです
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
prefabを使わなかった時は出来ていた事がprefabを使った途端に出来なくなる
有る有る過ぎると思います!
補足
特になし

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/06/25 11:21
2025/06/25 11:41
2025/06/26 19:13