1. Takahiro_MOTOYA

    Posted

    Takahiro_MOTOYA
Changes in title
+UnityでListの中身を表示する
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,115 @@
+#はじめに
+初投稿です。よろしくお願いします。
+
+Unity2019.2.0f1
+Windows10 64bit
+
+#概要
+ボタンを押してListに情報を入れ、Consoleに中身を表示する機能を作成します。
+今回はenumと組み合わせてListに情報を入れていきます。
+![MIRS_Test-SampleScene-PC_-Mac-_-Linux-Standalone-Unity-2019.2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520446/32a8fade-2704-5d99-54d2-4b5f0df09487.gif)
+
+##作成手順
+###前提
+Listやenumについて詳しく書いている方がたくさんいらっしゃるので、ここでは簡単な使い方のみ列挙します。<br>
+- **List**
+
+以下のようにListを宣言します。
+
+```c#:sample.cs
+private List<"型名"> "List名" = new List<"型名">();
+```
+Listへの入力は次のように行います。
+
+```c#:sample.cs
+"リスト名".Add("オブジェクト名"."列挙子");
+```
+
+- **enum**
+
+以下のようにenumを定義します。
+
+```c#:sample.cs
+public enum "オブジェクト名"
+{
+ "列挙子1",
+ "列挙子2",
+ "列挙子3",
+ "列挙子4"
+}
+```
+###非同期処理
+このままではリストの中身が一気に表示されてしまうため、非同期処理を用いて2秒ごとに1つずつ表示するようにします。また、リストの中身はToString()を用いてString型にします。
+
+```c#:sample.cs
+async void "関数名"()
+{
+ foreach ("オブジェクト名" A in "リスト名")
+ {
+ Debug.Log(A.ToString());
+ await Task.Delay(2000); //遅延処理
+ }
+}
+```
+
+###ソースコード
+以下が全体のソースコードです。それぞれのボタンの関数を当てはめることで実際に動かすことができます。
+
+```c#:sample.cs
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Threading.Tasks;
+
+public class sample : MonoBehaviour
+{
+ private List<Direction> Dirlist = new List<Direction>(); //Listの宣言
+
+ public enum Direction
+ { //enumの定義
+ Straight,
+ Back,
+ Left,
+ Right
+ }
+
+ public void StraightButton()
+ {
+ Dirlist.Add(Direction.Straight);
+ }
+
+ public void BackButton()
+ {
+ Dirlist.Add(Direction.Back);
+ }
+
+ public void RightButton()
+ {
+ Dirlist.Add(Direction.Right);
+ }
+
+ public void LeftButton()
+ {
+ Dirlist.Add(Direction.Left);
+ }
+
+ public void SearchButton()
+ {
+ Search();
+ }
+
+ async void Search()
+ {
+ foreach (Direction dir in Dirlist)
+ {
+ Debug.Log(dir.ToString());
+ await Task.Delay(2000);
+ }
+ }
+}
+
+```
+
+#おわりに
+いかがでしたでしょうか。Listやenumを取り入れれば、可能性の幅はもっと広がると思います。
+