将 byte[] 从 Unity C# 传递到 Android Java 而无需复制(指针?)

Passing byte[] from Unity C# to Android Java without copying (pointer?)

是否可以在不复制的情况下将 byte[] 从 Unity C# 传递到 Android Java?换句话说,尽可能快地传输它,可能作为指针。

用例正在发送一个长度为 1920x1080 的 byte[](源自 .GetRawTextureData,每秒 30 次。目前我正在将 byte[] 作为参数传递给 AndroidJavaObject 方法调用,但它太慢(每次调用 100 毫秒)。有什么想法吗?

这不是一个答案,但我已经意识到通过 JNI 发送 8MB 的 sbytes 只需要大约 7 毫秒(我在第一次尝试时没有正确分析它)。发送 sbytesbytes 快很多,因为无论如何 bytes 都必须转换为 bytes (C# 字节未签名,因此必须转换它们,因为 Java 使用有符号字节)并且转换的执行非常慢。此外,您可以直接在 sbytes 中工作,这进一步提高了性能并减少了使用引用的需要。