雖然這確實涉及Unity,但它實際上更多是一個通用編程問題。有沒有辦法區分列表中的項目?
所以我不能使用元組,我需要返回多個浮點值。這些有點像傷害增益。所以我會讓射手對騎兵造成額外的傷害,這個傷害是x。我的代碼(繁瑣儘管它是)能更好地告訴它:
private List<float> DetermineCounter()
{
CounterData cd = new CounterData();
List<float> counterList = new List<float>();
if (gameObject.tag == "Hoplite")
{
float archer = cd.counterArcher = 10.0f;
float peltast = cd.counterPeltast =5.0f;
float slinger = cd.counterSlinger = 20.0f;
List<float> counterData = new List<float>();
counterData.Add(archer);
counterData.Add(peltast);
counterData.Add(slinger);
counterData = counterList;
}
if (gameObject.tag == "Peltast")
{
float archer = cd.counterArcher = 5.0f;
float slinger = cd.counterSlinger = 5.0f;
List<float> counterData = new List<float>();
counterData.Add(archer);
counterData.Add(slinger);
counterData = counterList;
}
if (gameObject.tag == "Archer")
{
float cavalry = cd.counterCavalry = 15.0f;
float slinger = cd.counterSlinger = 10.0f;
List<float> counterData = new List<float>();
counterData.Add(cavalry);
counterData.Add(slinger);
counterData = counterList;
}
if (gameObject.tag == "Cavalry")
{
float hoplite = cd.counterHoplite = 20.0f;
float peltast = cd.counterPeltast = 10.0f;
List<float> counterData = new List<float>();
counterData.Add(hoplite);
counterData.Add(peltast);
counterData = counterList;
}
return counterList;
}
所以它返回2倍或3的值,取決於哪個對象我對劇本上。所以,如果是射手,我已經有腳本了,那麼它會返回值15和10.我的問題是,這些不只是任何值,它們是指具體的東西。 15屬於對騎兵造成的附加傷害因素,這些信息很重要。
因此,當我使用foreach作爲列表時,無法確定每個值對應的內容。我想知道是否有辦法彌補這一點?
一個解決方案是使一個新的類,將保留可能的返回值並返回該類的對象而不是列表。 –
爲什麼不返回一個類型爲Damage的對象或類似的東西? – NicoRiff
出於閒散的好奇心,爲什麼你不能使用元組? – Abion47