Skip to content

shonn-coding/UnsafeArrayBuffer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

UnsafeArrayBuffer

High performance zero allocation array buffer (but unsafe)

UnsafeStringBuffer姊妹篇

当你的项目中存在一些古代插件,它的API只能接受Array参数时,你可以用UnsafeArrayBuffer来优化数组的Allocation。

实现原理

UnsafeArrayBuffer内部使用System.Buffers.ArrayPool数组对象池,可以高效利用内存。

再通过UnsafeUtility.As,修改Array的Count字段,让Array成为了变长数组

使用方法

using var buffer = new UnsafeArrayBuffer<Vector3>();
buffer.Add(Vector3.right);
buffer.Add(Vector3.left);
buffer.Insert(1, Vector3.up);
buffer.Add(Vector3.one, 3);
buffer.RemoveAt(2);
var mesh = new Mesh();
mesh.SetVertices(buffer.InternalBuffer); // Zero Allocation

注意事项

InternalBuffer只能使用在临时场景。

About

High performance zero allocation array buffer (but unsafe)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%