Unityのインスタンスと変数について
これは、今まで、ソースコードからゲームを作っていたために、
理解に苦しんだ覚書のようなものです。
クイズの回答方法みたいなもので、
[1][2][3]いずれかを回答枠にドラッグして決定
する感じの処理をUnityで実装しようと思いました。
ざっと、スクリプトに書いてみたのですが、、、
Public GameObject answer;
function OnCollisionEnter(collision : Collision){
answer = Instantiate( collision.gameObject );
}
この場合、答えのオブジェクトがどんどんと増える。
あー、つまり、変数に入るのは、ただの参照なのだなと。
で、下のコードでも怒られない。
同じインスタンス名で、たくさんインスタンスが作られる。
※object(clone)みたいな。。。
function OnCollisionEnter(collision : Collision){
Instantiate( collision.gameObject );
}
うお。。
つまり、参照が無くてもメモリ(つーかヒープ)上にインスタンスが存在できる。
これが理解できて無くて、Unityの理解の入り口でかなり引っかかりました。
インスタンスの名前も単なるプロパティの一つだし、インスタンスの管理はUnity任せ。
もし、スクリプトからアクセスしたかったら、Findなどで探して引っ張ってこい。
なるほど、なんだよFindって、、て思ってましたが、そういう理由からなんですな。。。
参考:Unityメモリ管理「参照型とヒープ」
http://gamesonytablet.blogspot.jp/2012/12/unity_17.html