unity如何把RawImage的RenderTure图片转化成Sprite

unity如何把RawImage的RenderTure图片转化成Sprite


一、目的

通过在RawImage下的动态图截取生成很多个Image的图片排列在UI中。

二、RenderTure不能直接转化

1.先把RenderTure转化成Texture2d

代码如下(示例):

[SerializeField] RawImage Photo = null;
Texture2D texture2D = new Texture2D(Photo.texture.width, Photo.texture.height, TextureFormat.ARGB32, false);
            RenderTexture.active = renderT;
            texture2D.ReadPixels(new Rect(0, 0, Photo.texture.width, Photo.texture.height), 0, 0);
            texture2D.Apply();

2.再把得到的Texture2d转化成Sprite

代码如下(示例):

Sprite sprite = Sprite.Create(texture2D,
            new Rect(0, 0, Photo.texture.width, Photo.texture.height),
            new Vector2(0.5f, 0.5f));
            var targetTex = new Texture2D((int)sprite.rect.width, (int)sprite.rect.height);
            var pixels = sprite.texture.GetPixels(
                (int)sprite.textureRect.x,
                (int)sprite.textureRect.y,
                (int)sprite.textureRect.width,
                (int)sprite.textureRect.height);
            targetTex.SetPixels(pixels);
            targetTex.Apply();

该处使用的url网络请求的数据。

3.最后把生成的Sprite直接给Image的sprite赋值即可


猜你喜欢

转载自blog.csdn.net/lucky_XiaoZhang/article/details/128004985
今日推荐