テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Enumeratorを使用して、List<string>から文章を一つずつ取り出す

f:id:tsubaki_t1:20181105001137g:plain

今回はEnumeratorを使用して文章を一つずつ取り出していきます。
余りに使わない技術なのでよく忘れるのですが、その度に思い出すのも面倒なのでココにメモしておきます。

 

 

リストから要素を取り出す

配列やリスト等の要素を取り出すのは非常に単純で、配列(Array)に添え字(Index)を渡してやれば良いです。

なので”文字列のリストから要素を順次取り出す”という観点で言えば、下のようなコードでも十分に問題ありません。

messageBox.text = messages[current];で現在の文字列を取り出し、current = Mathf.Min(current + 1, messages.Count - 1);で添え字を文字列の長さ以上にならないように判定しつつ更新…という感じです。

gist.github.com

 そうだ、Enumeratorを使おう

大体の場合は上記の方法を使うのですが、時々思いつきます。そうだEnumeratorを使用して要素を取得しようと。

まずprivate List<string>.Enumerator enumeratorを使います。IEnumerator enumeratorではありません。これで毎回キャストするのを回避出来ます。

あとはmessages.GetEnumerator()でListからEnumeratorを取得し、enumerator.MoveNextで要素を一つずつズラしていきます。

 

gist.github.com

使えるのはList

なお、この方法でサクッと取得できるのはListのみです。List<string>.Enumeratoを使用しているのもあります。やり方は有るのかもしれないですが、知りません。

UnityでInspectorに表示する目的だと、ArrayもListも挙動が似たり寄ったりなので差し替えるのは簡単ですが、Inspector以外で使用する場合は色々と考えて選択されていることも多いので注意です。

 

感想

何故か定期的に使いたくなるけど、毎回忘れてるのでメモ。

 

関連

tsubakit1.hateblo.jp