Как изменить размер Texture2D, используя высоту и ширину? - PullRequest
0 голосов
/ 09 июля 2019

я пытался изменить размер текстуры с размерами и шириной и показом индекса из ширины / высоты

необходимо изменить размер текстуры, потому что я использую ее для другой текстуры, чтобы применить к определенным координатам, поэтому я не могу изменить размер текстуры графика моя текстура2D

graphics.Resize ((горизонтальный-горизонтальный), (вертикальный-вертикальный), TextureFormat.RGBA32, false); // создание текстуры с высотой и шириной

SetPixels32 может быть вызван только для текстуры RGBA32 или BGRA32, но вызывается для TextureFormat (12) UnityEngine.Texture2D: SetPixels32 (Color32 [])

1 Ответ

1 голос
/ 09 июля 2019

Самый простой способ изменить размер - это вызвать Graphics.Blit для нацеливания на новую RenderTexture и использования вашего Texture2D в качестве источника. Если вам нужно, чтобы впоследствии это был Texture2D, вы можете вызвать ReadPixels на RenderTexture

using UnityEngine;
using UnityEngine.UI;

public class Resizer : MonoBehaviour {
    public Texture2D inputtexture2D;
    public RawImage rawImage;
    [ExposeMethodInEditor]
    void Start()
    {
        rawImage.texture=Resize(inputtexture2D,200,100);
    }
    Texture2D Resize(Texture2D texture2D,int targetX,int targetY)
    {
        RenderTexture rt=new RenderTexture(targetX, targetY,24);
        RenderTexture.active = rt;
        Graphics.Blit(texture2D,rt);
        Texture2D result=new Texture2D(targetX,targetY);
        result.ReadPixels(new Rect(0,0,targetX,targetY),0,0);
        result.Apply();
        return result;
    }
}
...