'In Unity, how do you create a collection of pointers?
Is it possible to create a list or array of pointers in C#?
I want to have a list of T*
rather than use IntPtr
because i am forever having to type Marshal Ptr To Structure
methods all over the place rather than directly access methods via ->
command.
I tried making a list with T* but it says it cannot use it as a type. So is my only option to just constantly convert when needed from the IntPtr
?
Solution 1:[1]
You can declare an array of pointer.
unsafe Vector3*[] vectorPointerArray;
You cannot use pointer as a generic type parameter like
List<Vector3*>
, this is still under consideration.Because of the feasibility 1, you can create a collection to hold pointers, though it cannot implement generic interfaces like
IList<T>
.unsafe class UnsafePointerList<T> where T : unmanaged { private T*[] _items; public T* this[int index] => _items[index]; } UnsafePointerList<Vector3> vectorPointerList; var x = vectorPointerList[0]->x;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |