「Unity/Csharp/配列」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
|||
| 151行目: | 151行目: | ||
count=0 | count=0 | ||
</pre> | </pre> | ||
==配列をindex指定で削除== | |||
hoges.RemoveAt(0); | |||
==配列をindex指定から幅で削除== | |||
hoges.RemoveRange(0, 10); | |||
第1引数がindexで、第2引数は件数 | |||
==配列を,区切りで文字列に== | ==配列を,区切りで文字列に== | ||
2023年3月7日 (火) 15:32時点における版
配列宣言
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>();
ディクショナリforeach
foreach(KeyValuePair<HogeType, Button> pair in enumDict){
Debug.Log (pair.Key + " " + pair.Value);
}
ディクショナリのキーの存在判定
if (cars.ContainsKey("Lexas")) {
// 存在するとき
}
TryGetValueを使うとき
Car carvalue = null;
cars.TryGetValue("Lexas", out carvalue);
Listに新規で追加
List<string> names = new List<string> { "taro", "jiro", "saburo" };
List<int> nums = new List<int>() { 0, 1, 2 };
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
配列をindex指定で削除
hoges.RemoveAt(0);
配列をindex指定から幅で削除
hoges.RemoveRange(0, 10);
第1引数がindexで、第2引数は件数
配列を,区切りで文字列に
using System;
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