「Unity/Csharp/配列」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→配列を,区切りで文字列に) |
(→クラスディクショナリ) |
||
行42: | 行42: | ||
cars.Add("Rx8", bg2); | cars.Add("Rx8", bg2); | ||
Car car = cars["Lexas"]; | Car car = cars["Lexas"]; | ||
+ | |||
+ | ==ディクショナリをenumキーで== | ||
+ | Dictionary<HogeType, Button> enumDict = new Dictionary<HogeType, Button>(); | ||
==ディクショナリのキーの存在判定== | ==ディクショナリのキーの存在判定== |
2021年12月3日 (金) 10:25時点における版
目次
[非表示]- 1 配列宣言
- 2 数字配列宣言&入力
- 3 文字列配列宣言&入力
- 4 クラスリスト
- 5 クラスディクショナリ
- 6 ディクショナリをenumキーで
- 7 ディクショナリのキーの存在判定
- 8 TryGetValueを使うとき
- 9 List<string>に新規で追加
- 10 List<string>からstring[]へ
- 11 string[]からList<string>へ
- 12 Listの3番目に入れる
- 13 Listの3番目のデータ取得
- 14 先頭に追加
- 15 順番逆順に
- 16 配列に文字数字が含まれてるか確認
- 17 配列シャッフル
- 18 検索
- 19 配列の最初から削除
- 20 配列を,区切りで文字列に
- 21 参考
配列宣言
int[] nums; float[] f; Vector3[] v; GameObject[] gameObjects;
数字配列宣言&入力
int[] nums = {10,20,30,40,50,60,70,80,90,100};
or
int[] nums = new int[10]; nums[0] = 10; nums[1] = 20; Debug.Log(nums[1]); // 20
文字列配列宣言&入力
string[] names = new string[] { "taro", "jiro", "saburo" }; Debug.Log(names[1]); // jiro
クラスリスト
クラス例
class Car { public string name; public int value; public Car(string name, int value) { this.name = name; this.value = value; } }
クラスリスト例
List<Car> cars = new List<Car>(); cars.Add( new Car("Lexas", 50));
クラスディクショナリ
Dictionary<string, Car> cars = new Dictionary<string, Car>(); Car bg1 = new Car("Lexas", 50); Car bg2 = new Car("Rx8", 100); cars.Add("Lexas", bg1); cars.Add("Rx8", bg2); Car car = cars["Lexas"];
ディクショナリをenumキーで
Dictionary<HogeType, Button> enumDict = new Dictionary<HogeType, Button>();
ディクショナリのキーの存在判定
if (cars.ContainsKey("Lexas")) { // 存在するとき }
TryGetValueを使うとき
Car carvalue = null; cars.TryGetValue("Lexas", out carvalue);
List<string>に新規で追加
List<string> names = new List<string> { "taro", "jiro", "saburo" };
List<string>からstring[]へ
List<string> words = new List<string>(); words.Add("taro"); words.Add("jiro"); words.Add("saburo"); string[] wordStrings = words.ToArray();
string[]からList<string>へ
string[] wordStrings = {"taro","jiro","saburo"}; List<string> list = new List<string>(wordStrings);
Listの3番目に入れる
list.InsertRange(3, "saburo");
Listの3番目のデータ取得
string name = list[2]; // 3 - 1
先頭に追加
List<string> names = new List<string>(); names.Insert(0, "taro");
順番逆順に
int[] nums = new int[] { 1, 2, 3, 4 }; nums.Reverse(); // 参照渡しとなり戻り値はvoid
配列に文字数字が含まれてるか確認
List<string> names = new List<string>(); if (!names.Contains(name)) { }
List<int> nums = new List<int>(); if (!nums.Contains(num)) { }
配列シャッフル
public static List<int> Shuffle(List<int> list) { for (int i = list.Count - 1; i > 0; i--) { int j = Random.Range(0, i + 1); var tmp = list[i]; list[i] = list[j]; list[j] = tmp; } return list; }
参考:https://qiita.com/o8que/items/bf07f824b3093e78d97a
検索
string[] src = {"taro", "jiro", "saburo"}; var list = new List<string>(); list.AddRange(src); string item = "jiro"; int num = list.IndexOf(item); if (num > -1) { Debug.Log("ari"); }
配列の最初から削除
List<string> hoges = new List<string>(); hoges.Add("taro"); hoges.Add("jiro"); hoges.Add("saburo"); for (int a = 0; a <= 2; a++) { Debug.Log("hoge=" + hoges[0]); hoges.Remove(hoges[0]); } Debug.Log("count=" + hoges.Count);
出力
hoge=taro hoge=jiro hoge=saburo count=0
配列を,区切りで文字列に
List<string> words = new List<string>(); words.Add("taro"); words.Add("jiro"); words.Add("saburo"); string[] wordStrings = words.ToArray(); Debug.Log(String.Join(",", wordStrings)); // taro,jiro,saburo
参考
公式リストとディクショナリ https://unity3d.com/jp/learn/tutorials/modules/intermediate/scripting/lists-and-dictionaries