Die*_*ego 7 c# arrays image unity-game-engine
我有一个byte []数组,它读取一个本地文件,然后我将它分配给一个单一的Texture2D.使用im.sprite = Sprite.Create()函数分配图像.
我遇到的问题是我需要从字节数组中检测图像的宽度和高度,这样我就可以调整纹理大小,避免在运行时在统一场景上进行图像拉伸.
您知道如何使用库或某种函数来创建图像字节数组中的临时图像,然后在创建精灵并应用纹理之前查看所需的宽度和高度吗?
我已经在Java中找到了解决方案,但是通过适应c#无法实现它的工作.
当Texture2D.LoadImage被调用时,它会自动替换Texture2D与图像的大小实例.然后,您可以从Texture2D实例中获取宽度和高度,并将其传递给Sprite.Create函数.
将图像加载到字节数组
byte[] imageBytes = loadImage(savePath);
Run Code Online (Sandbox Code Playgroud)
创建新的Texture2D
Texture2D texture = new Texture2D(2, 2);
Run Code Online (Sandbox Code Playgroud)
将其加载到Texture2D中.调用LoadImage后,2x2将替换为该图像的大小.
texture.LoadImage(imageBytes);
Run Code Online (Sandbox Code Playgroud)
你的图像组件
Image im = GetComponent<Image>();
Run Code Online (Sandbox Code Playgroud)
您可以Rect使用它创建一个新的,然后将其传递给您的Sprite函数以创建新的Sprite.
im.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
Run Code Online (Sandbox Code Playgroud)
阅读更多关于此Texture2D.LoadImage功能的信息.
你只需要Texture2D.width和Texture2D.height变量.