我正在使用Unity3D。C#將一行代碼的一部分更改爲變量
我有一個腳本來基於生物的某個值對列表進行排序。
例如,這些生物有一個變量,說明他們吃了多少食物,目前有多少卡路里,以及它們有多大。
我希望用戶能夠通過單擊按鈕來更改值的排序方式。我不想堆積if語句雖然,如
if(sortType == "calories") {
entrySortedText.text = creatureData.calories.ToString();
} else if(sortType == "food eaten") {
entrySortedText.text = creatureData.foodEaten.ToString();
}
我希望能夠像做
entrySortedText.text = creatureData.sortType.ToString();
自動找到的那種類型是什麼名稱的變量在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