我正在處理一個腳本,我可以提供各種對象並告訴它以各種方式修改它們。這對很多類型都非常有效,但我不知道如何去處理List(和其他Collections)。 這不起作用:如何找出對象是否爲任何類型的列表?
List<Transform> transformList = new List<Transform>();
void MyFunction(object o) {
if(o.GetType() == typeof(int) DoIntStuff(); //Easy
else if(o.GetType() == typeof(Color) DoColorStuff(); //Also Easy
else if(o.GetType() == typeof(List<>)) DoListStuff(); //Not as easy :(
}
void Start() {
MyFunction(transformList);
}
我不能做
typeof(List<T>)
,因爲T沒有在那裏當然存在。
typeof(List<object>)
也不起作用。
那麼我怎麼才能知道我所擁有的是什麼類型的列表?
我一直挺直,你在那裏做的不好。爲什麼你需要MyFunction,你不能直接調用DoInt/Color/ListStuff嗎? – Everts
這是一個過於簡單的例子。在實際的腳本中,我可以放入任何GameObject中,並通過Reflection獲取所有組件上的所有字段,然後腳本通過它們進行過濾並根據它在UI中的設置修改值。 – col000r
由於它是一個編輯器腳本,您可能還有一個用於拖動的插槽和一個用於該類型的下拉列表。然後你有一個字典枚舉,行動和基於選定的枚舉類型,它調用該行動。檢查類型的想法可能會導致問題,如果一個類型可以是兩個。假設你最終檢查狗和動物。你的命令也必須考慮。你會遇到很多麻煩。 – Everts