JJ SHIMA Blog

二児のパパがゲーム開発アレコレを書いているブログ。Unity / UE / Scratch / プログラミングゼミ / プログラミング教育

[プログラミングゼミ] 変数の中身の残る範囲(ローカル・インスタンス)

プログラミングゼミ
前回の記事に「スクラッチでの変数の見える範囲」について書きました。

www.papa-sensei.com

今回はDeNAさんが提供している
「プログラミングゼミ」での変数の中身の残る範囲についてです。

ローカルとインスタンス変数

プログラミングゼミの変数には、「ローカル」と「インスタンス」変数があります。

変数 説明
ローカル つなげたブロックの間でだけ残る
インスタンス キャラが画面にいる間は残る

インスタンス変数は、スクラッチでいう「このスプライトのみ」の変数と同じです。
プログラミングゼミには、「すべてのスプライト用」という変数はなく、
自分のみの変数だけです。

では、「ローカル」変数とはどんな変数なのでしょうか?

プログラミングゼミのローカル変数は、通常のプログラミング言語と同じで、
メソッドの中で使える一時的な変数で、 { } 内のブロックでのみ使えます。

(いわゆる特定スコープ内でしか使えないローカル変数と同じ意味)

void キャラがタッチされた()
{
    var local = "ベイスターズ";  // ローカル変数
    talk(local, 3); // ローカルを3秒喋る
}

動きを確認する

実際にブロックで変数の中身を確認してみます。

・スタート時に両方の変数を初期化
・キャラタッチで変数の中身を喋る

 

インスタンス変数
インスタンス変数は、キャラが生存する限り残り続ける変数です。
スタートで初期化した中身が、キャラタッチ時も残り、喋ることができます。

 
 

ローカル変数
ローカル変数は、メソッド内など、{}内のスコープ中のみ残る変数です。
そのため、スタート時に初期化しても、キャラタッチのイベント時には値が残っておらず、 何も喋れません。


   
 
ローカルはそのブロック中間のみ生存するので、
キャラタッチのイベント時に中身をセットすれば、
そのブロック中であれば値が残り喋ることができます。
 
 

スクラッチとプログラミングゼミでは、変数の範囲が少し違います。
プログラミングゼミでは、基本はインスタンス変数で作り、
特定のブロック間で一瞬しか使わないようなものだけローカルにすると良いでしょう。