質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

2995閲覧

UnityのPrefab化について、ワンクッションがめんどうすぎる件を改善したい

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/12/12 09:34

編集2018/12/12 09:34

こちらの件、わたしの知識不足かもしれないのですが質問させてください。

いくつかのチュートリアルをやっていくなかでPrefab化する際は一旦シーンビューに配置してそこからPrefabsフォルダかなにかに移してPrefabを作ります。

このワンクッションが以上にめんどくさくてイライラしてきます。なぜ直接Prefabsフォルダにドラッグできないんですか?createから直接Prefabを作れるっぽいですけど、使い方がよくわかりません。projectの画像からPrefabsフォルダに直接移動しようとしたら、元ファイルがコピーされずに移動したので往生しました。

ヒントとか指摘とかなにかあればよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

補足

  • Prefabでの操作はhierarkhyにあるオブジェクトに反映される。
  • hierarkhyにあるオブジェクトに行った操作はPrefabには反映されない

投稿2018/12/12 13:09

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

そもそも「画像」は「GameObject」ではないのでプレハブにはなりません。
プレハブとして保存出来るのはGameObjectだけです。

画像をシーン上にドラッグ&ドロップすると、画像ではなく「その画像がSpriteにセットされた状態のSpriteRendererが付いたGameObject」になっているはずです。
こいつをプレハブにしているのであって、画像をプレハブにしている訳ではありません。

あと、Prefabフォルダに入れたからプレハブになっている訳でもありません。
画像ファイルはどのフォルダにあろうが画像ファイルです。


以下推測を交えた余談。
(書いてる途中で質問の本筋ではないと気付いたのですがせっかくなので投稿)

じゃあプレハブってGameObjectなの?となりますが実は違って、
**「GameObjectという実体(インスタンス)の器」**なんじゃないかなーと思います。

まず、プロジェクトビュー内のアセットは全て「実体(インスタンス)」を持ちません。
スクリプトならスクリプト、3Dモデルなら3Dモデル、画像なら画像という「概念(元データ/設計図)」だと思ってください。
(画像は画像ファイルじゃねーかと思うかもしれませんが、Unityのプロジェクトビューの中では概念だと思ってください)

アセットが(ドラッグ&ドロップやInstantiate等によって)シーンビューに置かれると「実体(インスタンス)」を持つようになります。
Transformやオブジェクトに付けたコンポーネントはGameObjectコンポーネントを基準に動作します。
(インスタンスって何やねん、という状態だとこの先の話もよく分からないと思うので、「unity インスタンス」とか「インスタンスとは」でググってください)


で、プレハブはこの実体となったGameObjectの「器」です。(実体そのものではない)
以下の特徴はプレハブの「器としての機能・特徴・権能」です。

  • シーン上から実体を消しても、プレハブの中にある実体は消えない(=コンポーネント情報が残る)。
  • プレハブの中身を変更すると、そのプレハブから作った実体の中身も変更される。
  • プレハブはスクリプト上ではGameObjectと同じように振る舞える。

プロジェクトビューで右クリックして「Create > Prefab」とすると空っぽの立方体アイコンが出て来ますが、それがまさに「実体を持たない状態の器」としてのプレハブです。

プレハブ生成における「シーン上からプロジェクトビューへGameObjectをドラッグ&ドロップ」という動作は、「この実体を中身に入れた状態の器を生成する」という動作です。

プレハブの中に実体を入れないと意味が無い(器には中身が必要)為に、
「シーン上にあるGameObjectを入れる必要がある」と言えます。

投稿2018/12/12 10:14

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/12/12 11:54

非常に詳しい説明で本当に感謝いたします。hierarkhyにあるやつがオブジェクト。Prefabはインスタンスだと考えるとかなりすっきりしました。 「プロジェクトビューで右クリックして「Create > Prefab」とすると空っぽの立方体アイコンが出て来ますが、それがまさに「実体を持たない状態の器」としてのプレハブです」→納得です。 今自分がやっていることでちょっと納得部分いかない部分もありますが、やっていれば答えが見えてきそうです。とにかくおっしゃる基本の部分があるということがわかっただけでも、かなりすっきりした感じがします。ありがとうございました。
sakura_hana

2018/12/12 12:48

プレハブはインスタンスじゃないです。プロジェクトビューにしか存在しないので「概念(クラス/元データ/設計図)」の方。「インスタンスが入る器という概念」です。 「オブジェクト」は定義が難しいところですが、 基底がObject型という意味では「ヒエラルキーにあってもプロジェクトビューにあっても、全てのアセットはオブジェクト」です。 (オブジェクト=実体、という意味だったら「ヒエラルキーにある物がオブジェクト」で合っています) ぶっちゃけややこしいのであまり気にしなくてもいいですが、自作クラスだのスクリプトからコンポーネント付与だの型変換だのを考え始めると必要になるかもしれませんので、参考までに。
退会済みユーザー

退会済みユーザー

2018/12/12 13:21 編集

さきほどPrefabでの変更がhierarkhyにあるオブジェクトに反映されるのがわかったのですが、しっかり読んだら全て指摘済みでした。「Prefabはインスタンスじゃなくて型」の部分に関しては、留意しておこうと思います。
退会済みユーザー

退会済みユーザー

2018/12/12 13:22 編集

器の値変更がなんで実体に反映されるんだよって感じでしたが、こちらも指摘されてますね → 「この実体を中身に入れた状態の器を生成する」という動作です。 Prefabでの変更がhierarkhyにあるオブジェクトにも反映されるってことは重要ですね。
退会済みユーザー

退会済みユーザー

2018/12/12 13:23

逆か。hierarkhyにあるオブジェクトがインスタンスですね。Prefabが型。これだ!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問