我有一个我在c#脚本中创建的图像,我如何将它加载到Unity图像中
本文关键字:图像 加载 Unity 脚本 创建 有一个 | 更新日期: 2023-09-27 18:02:24
我在Visual Studio WindowsFormsApplication中用一些简单的代码创建了一个位图像素图像。我想通过替换我现在加载到游戏中的库存图像,将这张图像放入我的Unity游戏中。我如何编写我的Unity代码来使用这个图像?最好,我不想保存我的像素图像在我的桌面,但有它直接加载到我的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;
}
}