###前提・実現したいこと
シーン上に生成してなくて、アセットだけに格納されてあるプレハブはどういう状態なのでしょうか?
これはインスタンスですか?
アセットのプレハブを、ヒエラルキーにドラッグ&ドロップすれば、シーン上にプレハブ生成されて、
そのシーン上のプレハブがインスタンスであることは理解しています。
しかし、アセットの中にあるプレハブはどういう状態なのでしょうか?
###試したこと
①MyPrefabというスクリプトがアタッチされたmypfbというプレハブをアセットに登録。
MyPrefabというスクリプトは、下記のようにインスタンスフィールドを持つ。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class MyPrefab : MonoBehaviour { 6 7 public int i = 4; 8}
②Sampleスクリプトがアタッチされた空のゲームオブジェクトをシーン上に作成。
③Sampleスクリプトを下記のように作成。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Sample : MonoBehaviour { 6 7 [SerializeField] 8 GameObject obj; 9 10 // Use this for initialization 11 void Start () { 12 Debug.Log (obj.transform.position); 13 Debug.Log (obj.GetComponent<MyPrefab>().i); 14 } 15}
④SampleクラスのSerializeFieldにmypfbをセット。
⑤実行すると、下記のように出力される。
(0.0, 0.0, 0.0) UnityEngine.Debug:Log(Object) Sample:Start() (at Assets/Sample.cs:12) 4 UnityEngine.Debug:Log(Object) Sample:Start() (at Assets/Sample.cs:13)
この実行結果についてわからないこと。
・positionが(0,0,0)と表示されているが、シーン上の(0,0,0)にmypfbは配置されていない。 ・MyPrefabの変数iはインスタンスフィールドのはず。 シーン上にプレハブは生成されていないのに、インスタンスフィールドにアクセスできてしまうのはなぜか。 シーン上になくても、アセットのmypfbのプレハブはインスタンスなのか?
ご教授のほどよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/09/20 14:15 編集
2017/09/20 15:41 編集
退会済みユーザー
2017/09/20 16:24 編集
2017/09/21 09:47
退会済みユーザー
2017/09/21 12:37