23/12/12 00:46:38.09 fxLNnORX.net
>>619
ありがとうございます。
確かにその通りに記述したら同じ動作になりました!
GameObject型の変数.GetComponent<prefabのクラス名>().Type(5);と記述してたのに
クラス名型の変数.Type(5);だけで実行できる様になりました。
もともと宣言は>>523の教えてくださった
[SerializeField] GameObject prefab_A;
と宣言してインスペクタにprefabのオブジェクトをアタッチして
Unityのこういうものだという流れが掴みかけていたのですが
>>545さんのやり方で
[serializeField] prefabAのクラス名 prefab_A;
prefab_Aにprefabのオブジェクトをアタッチしても
まったく同じ様に動いてます。
そのことで現在ちょっと戸惑っていまして。
というのも、再生したらどちらでもちゃんとプレハブのオブジェクトが生成されるんですが
[SerializeField]にGameObject型で宣言するのと
[SerializeField]にプレハブオブジェクトのクラス型で宣言するのとで
結果が同じということ、後者はプレハブのオブジェクトをアタッチしていないじゃないですか?
(アタッチされてるのもスクリプトみたいですし)
Instantiateの引数にもクラス名しか入れてないですし。
オブジェクト型で作るほうは、クラスもオブジェクト生成もイメージはしやすいですが、
後者はプレハブオブジェクトはそっちのけに感じるのに
前者と同じ様にプレハブのオブジェクトがそこに発生しました。
このふたつの宣言で、なにが起きてうのか解説願いませんでしょうか。
また、同じに見えて、実はなにかが違うのでしょうか?
そしてこのふたつのやり方は、状況によって使い分けすべきなんでしょうか?
Unityを触ってまだ二ヶ月弱ですが
ここをどうしても理解しときたいので、教えて頂けないでしょうか?
お願い致します!