現在我有兩個功能:
public void func(Unity.Collections.NativeArray<ushort> a){}
public void func(Unity.Collections.NativeArray<short> a){}
除了物件資料型別輸入之外,這些功能完全相同。我也沒有寫入這些 NativeArray,因此無論是將陣列讀取為 <ushort> 還是 <short>,代碼的功能都相同。有沒有辦法將它們組合成一個可以接受兩種型別物件的函式?NativeArrays 是托管型別,所以我不能使用指標。還有其他方法可以避免復制整個函式或復制物件嗎?
uj5u.com熱心網友回復:
該函式是模糊函式的自定義實作。所以它所做的只是平滑值。它不關心零在哪里;只要數字都是 2 個位元組。
那么,在那種情況下,我想知道您真正想要的是不是:跨度。
考慮:
public void func(Unity.Collections.NativeArray<ushort> a)
=> func(MemoryMarshal.Cast<ushort, short>(a.AsSpan()));
public void func(Unity.Collections.NativeArray<short> a)
=> func(a.AsSpan());
private void func(Span<short> a)
{ ... real code here ...}
它Span<short>用于真實代碼,并重新解釋ushort版本以使用short代碼 - 允許您使用這些值而無需單獨復制/轉換值
uj5u.com熱心網友回復:
public void func<T>(Unity.Collections.NativeArray<T> a) where T : struct
{}
也許添加任何(我為此找到并編輯了;這NativeArray<T>需要的約束,例如where T : struct或where T : unmanagedT : struct是相關的)
請注意,在 C# 11 / .NET 7 之前,運算子(數學等)和泛型很難一起作業,因此如果您根據值對等進行求和/平均:那可能很難。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/534926.html
上一篇:UnityAnimator.parameters在自定義PropertyDrawer中回傳空陣列
下一篇:如何制作閃爍著色器?
