[英]Why can we put the result of a GetComponent<Camera> in a Behaviour array but can't do GetComponent<Camera>(out behaviourArray[X])?
我想知道為什么這項工作:
Behaviour _BehaviourArray = new Behaviour[1];
BehaviourArray[0] = GetComponent<Camera>();
但不是這個:
Behaviour _BehaviourArray = new Behaviour[1];
TryGetComponent<Camera>(out BehaviourArray[0]);
如果兩個 Camera 組件都存在,這應該(在我看來)給出相同的結果。
如果有人能回答我,將不勝感激。
謝謝。
C# 中的索引器運算符是一個屬性(或至少像一個屬性),因此不能像任何其他屬性一樣作為out
參數傳遞給方法。
屬性(或索引器)是內部 getter 和 setter 方法的語法糖,並將其作為參數傳遞給另一個方法,就像編寫以下內容:
TryGetComponent(out BehaviourArray.SetValue(0, ...));
你能做的就是寫
Behaviour _BehaviourArray = new Behaviour[1];
TryGetComponent<Camera>(out Camera camera);
_BehaviourArray[0] = camera;
您甚至可以將其包裝在一個方法中:
void GetComponentToArrayIndex<TComponent, TSpecificComponent>(TComponent[] array, int index) where TComponent : Component where TSpecificComponent : TComponent
{
TryGetComponent<TSpecificComponent>(out TSpecificComponent component);
array[index] = component;
}
並像這樣使用它:
Behaviour _BehaviourArray = new Behaviour[1];
GetComponentToArrayIndex<Camera>(_BehaviourArray, 0);
這些只是建議和未經測試的代碼,但這就是我在你的情況下會嘗試的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.