我处于android视图的绘制循环中:
Bitmap bitmap = Bitmap.createBitmap(this.getWidth(),
this.getHeight(), Bitmap.Config.ARGB_4444);
Canvas newCanvas = new Canvas(bitmap);
super.draw(newCanvas);
Log.d("AndroidUnity","Canvas Drawn!");
mImageView.setImageBitmap(bitmap);
上面的代码为我显示了所附Image Viewer上的正确图形。
当我将位图转换为字节数组时:
ByteBuffer byteBuffer = ByteBuffer.allocate(bitmap.getByteCount());
bitmap.copyPixelsToBuffer(byteBuffer);
byte[] bytes = byteBuffer.array();
将字节导入Unity不起作用(我的原始图像上显示黑色图像):
imageTexture2D = new Texture2D(width, height, TextureFormat.ARGB4444, false);
imageTexture2D.LoadRawTextureData(bytes);
imageTexture2D.Apply();
RawImage.texture = imageTexture2D;
关于如何获取Java bytes []以在Unity中显示为纹理/图像的任何想法吗?我测试了字节是否正确发送,即当我从Android推送{1,2,3,4}的字节数组时,在统一方面得到了{1,2,3,4}。
这并不是说Unity在尝试将字节作为字节[]传输时会引发错误,因此我必须遵循C#方面的this建议:
void ReceieveAndroidBytes(AndroidJavaObject jo){
AndroidJavaObject bufferObject = jo.Get<AndroidJavaObject>("Buffer");
byte[] bytes = AndroidJNIHelper.ConvertFromJNIArray<byte[]>(bufferObject.GetRawObject()); }
和Java端的琐碎byte []容器类“ Buffer”