我的程序出错了,在尝试运行此函数后,unity崩溃了。该功能是将Texture2D转换为Image
void SetTextureDefault()
{
try
{
Texture2D currentTexture = new Texture2D(CameraTexture.width, CameraTexture.height);
currentTexture.SetPixels(CameraTexture.GetPixels());
currentTexture.Apply();
// Asuming leftBackground and rightBackground of Image<Bgra, byte> exist
if (leftBackground == null || rightBackground == null)
{
using (var ms = new MemoryStream(currentTexture.EncodeToPNG()))
{
leftBackground = new Image<Bgra, byte>(new Bitmap(ms));
}
}
else
{
rightBackground.Bytes = leftBackground.Bytes = currentTexture.EncodeToPNG();
}
}
catch (Exception err)
{
Debug.Log(err.StackTrace);
}
}
Unity(编辑器和独立应用程序)刚刚崩溃并且没有显示任何错误。仅显示此window。
我只能考虑内存访问违规(但应用程序没有显示任何泄漏)
如果删除该功能,程序将正常运行
我使用Unity个人与EmguCV(桌面版)。
答案 0 :(得分:0)
导致应用程序崩溃的问题是:
leftBackground = new Image<Bgra, byte>(new Bitmap(ms));
在构建包含该函数的新dll并将其附加到unity并工作后,问题得以解决。 奇怪的...