私はUnity3Dを使用しています。C#コード行の一部を変数に変更する
私は、クリーチャーの特定の値に基づいてリストをソートするスクリプトを持っています。
たとえば、生き物には、どれくらいの食べ物を食べたか、現在のカロリーの量はどれくらいか、どれくらいの大きさかという変数があります。
ボタンをクリックして値のソート方法を変更できるようにします。私は、自動的にソートタイプが何であるかの名前の変数を見つけることが
entrySortedText.text = creatureData.sortType.ToString();
ような何かをできるようにしたい、そのような
if(sortType == "calories") {
entrySortedText.text = creatureData.calories.ToString();
} else if(sortType == "food eaten") {
entrySortedText.text = creatureData.foodEaten.ToString();
}
ように、しかしif文山積みにしたくありませんcreatureData内にあります。しかし、明らかにこれはうまくいきません。なぜなら、生物データに変数 "sortType"がないからです。しかし、sortTypeが自動的に "calories"や "food eaten"のような変数名に置き換えられます。
誰かがコード行の一部を変数の値に変更する方法を知っていますか?あるいは、if文の束を使うだけですか?
ありがとうございました。あなたの応答は非常に重要です。
P.S.ここで
は、現在のソートコードです:
public void LoadList() {
foreach(Transform child in transform) {
GameObject.Destroy(child.gameObject);
}
List<GameObject> creatures = new List<GameObject>(GameObject.FindGameObjectsWithTag("Creature").ToList());
// Sort list based on calories
creatures.Sort(
delegate(GameObject i1, GameObject i2) {
return i2.GetComponent<CreatureData>().calories.CompareTo(i1.GetComponent<CreatureData>().calories);
}
);
foreach(GameObject creature in creatures) {
GameObject entry = Instantiate(entryPrefab);
entry.transform.SetParent(transform, false);
entry.transform.GetChild(0).GetComponent<Text>().text = creature.GetComponent<CreatureData>().creatureName;
entry.transform.GetChild(1).GetComponent<Text>().text = creature.GetComponent<CreatureData>().calories.ToString();
entry.GetComponent<CreatureListEntryButton>().targetCreature = creature;
}
}
。 – SLaks
しかし、投稿したコードにソートコードは表示されません。これはソートされません: 'creatureData.calories.ToString();' – CodingYoshi