Stack(後入れ先出し型)を使ってゲームオブジェクトを操作してみます。
png

Stackって何?

Stack はコレクションの一種

Unityで使用するプログラミング言語 C# では、同じ型のデータをたくさん集めたデータ構造を、コレクション と呼びます。ほかの言語でもそうかも。
コレクションでもっともよく知られているのは List で、その次は Dictionary でしょうか。
C# には、ほかにも SortedList、Queue、Stack などなどといったコレクションの種類があります。

Microsoft の解説ページはこちら。

Stackは後入れ先出しの可変サイズのコレクション

Stack は、指定した同じ型のインスタンスの、後入れ先出し (LIFO) の可変サイズのコレクションを表します。(Microsoft の解説より)
後入れ先出し とは、たとえば A → B → C という順に格納したものを、最後に入れたものから順に C → B → A というように取り出すことです。スタック とも LIFO (Last-In First-Out)とも呼ばれます。これはプログラミング言語に限らない、もっと一般的な用語です。
C# で、この後入れ先出しに便利なように作られているコレクションが Stack です。

Stack についての Microsoft の解説ページはこちら。

まずは基本的な使い方として、Push() で Stack の要素として格納し、Pop() で Stack から取り出す、ということを覚えておけばいいかと思います。

(参考)Stack と対になる Queue

なお、Stack と対になる考え方で、先入れ先出し というものもあります。A → B → C の順で格納したものを、格納した順に A → B → C というように取り出すものです。これは Queue(キュー)ともFIFO(First-In First-Out)とも呼ばれます。
 
Queue についての Microsoft の解説ページはこちら。


使ってみた

Stack を実際に使ってみました。
マウスの左クリックで選択したゲームオブジェクトを非表示にしていき、マウスの右クリックで再表示させていきます。これを後入れ先出しで。

動画

動画はこんな感じ。ちゃんと後入れ先出しで処理されているのが分かりますね。



スクリプト

スクリプトはこんな感じ。


14行目で Stack の変数を初期化、37行目で Push() して Stack に格納し、 48行目で Pop() して取り出しています。

まとめ

今回は Stack を使って、後入れ先出しでゲームオブジェクトを操作する方法を紹介しました。
List を使うよりもかなり簡単に実装できると思います。

たまには Unity の機能・クラスだけでなく、C# そのものに用意されているクラスも眺めておくと役立つかもしれませんね。


今回は以上です。感想・質問・要望等、お待ちしております (´▽`)
(この記事の使用環境: Unity2018.2.0b2 (.NET4.x Equivalent)、Windows10)
follow us in feedly