我有一个我在c#脚本中创建的图像,我如何将它加载到Unity图像中

本文关键字:图像 加载 Unity 脚本 创建 有一个 | 更新日期: 2023-09-27 18:02:24

我在Visual Studio WindowsFormsApplication中用一些简单的代码创建了一个位图像素图像。我想通过替换我现在加载到游戏中的库存图像,将这张图像放入我的Unity游戏中。我如何编写我的Unity代码来使用这个图像?最好,我不想保存我的像素图像在我的桌面,但有它直接加载到我的Unity游戏。

我有一个我在c#脚本中创建的图像,我如何将它加载到Unity图像中

好,选取图像,将其编码为byte数组

从https://msdn.microsoft.com/en-us/library/aa970062 (v = vs.110) . aspx

int width = 128;
int height = 128;
int stride = width;
byte[] pixels = new byte[height * stride];
// Define the image palette
BitmapPalette myPalette = BitmapPalettes.Halftone256;
// Creates a new empty image with the pre-defined palette
BitmapSource image = BitmapSource.Create(
    width,
    height,
    96,
    96,
    PixelFormats.Indexed8,
    myPalette,
    pixels,
    stride);
FileStream stream = new FileStream("new.png", FileMode.Create);
PngBitmapEncoder encoder = new PngBitmapEncoder();
TextBlock myTextBlock = new TextBlock();
myTextBlock.Text = "Codec Author is: " + encoder.CodecInfo.Author.ToString();
encoder.Interlace = PngInterlaceOption.On;
encoder.Frames.Add(BitmapFrame.Create(image));
encoder.Save(stream);

然后让它通过套接字连接或公共文件位置发送,并使用LoadImage将其加载到unity

从:https://docs.unity3d.com/ScriptReference/Texture2D.LoadImage.html

public class ExampleClass : MonoBehaviour {
    // Load a .jpg or .png file by adding .bytes extensions to the file
    // and dragging it on the imageAsset variable.
    public TextAsset imageAsset;
    public void Start() {
        // Create a texture. Texture size does not matter, since
        // LoadImage will replace with with incoming image size.
        Texture2D tex = new Texture2D(2, 2);
        tex.LoadImage(imageAsset.bytes);
        GetComponent<Renderer>().material.mainTexture = tex;
    }
}