おれ、Unity2Dでゲーム作るんだ。

Unity2Dをメインに、覚書などを記事にしていきます。

Unityのインスタンスとスクリプトの変数の関係について

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って、、て思ってましたが、そういう理由からなんですな。。。

 

f:id:xev:20141119141034p:plain

参考:Unityメモリ管理「参照型とヒープ」
http://gamesonytablet.blogspot.jp/2012/12/unity_17.html