Вставить картинку в Texture2D
Описание
Есть у меня 2D текстура прикрепленная к RawImage так, чтобы изменения на ней отобразились пользователю:
using System;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public class Board: MonoBehaviour {
private void Start() {
texture = new Texture2D((int) RectTransform.rect.width, (int) RectTransform.rect.height) {
name = "Main Layer",
}; /// Создание текстуры
rawImageTexture.texture = texture; /// присваивание к RawImage
rawImageTexture.color = new Color32(255, 255, 255, 255); /// Восстановление стандаотного цвета, так как у меня в проекте ставлен прозрачный
texture.SetPixels32(Enumerable.Repeat(new Color32(0, 0, 0, 0), texture.width * texture.height).ToArray()); /// Сброс текстуры до прозрачного
texture.Apply(); /// Применение изменений
}
public RectTransform RectTransform => transform as RectTransform;
private Texture2D texture;
[SerializeField] private RawImage rawImageTexture;
}
И теперь я хочу вставить туда картинку чтобы она была в позиции (0, 0) и имела размер (100, 100). Метод написанный ниже единственный который мне удалось добыть:
using System;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public class Board: MonoBehaviour {
private void Start() {
texture = new Texture2D((int) RectTransform.rect.width, (int) RectTransform.rect.height) {
name = "Main Layer",
}; /// Создание текстуры
rawImageTexture.texture = texture; /// присваивание к RawImage
rawImageTexture.color = new Color32(255, 255, 255, 255); /// Восстановление стандартного цвета, так как у меня в проекте ставлен прозрачный
texture.SetPixels32(Enumerable.Repeat(new Color32(0, 0, 0, 0), texture.width * texture.height).ToArray()); /// Сброс текстуры до прозрачного
texture.Apply(); /// Применение изменений
texture.SetPixels32(0, 0, 100, 100, Void.GetPixels32()); /// Присваивание картинки
texture.Apply(); /// Применение изменений
}
public RectTransform RectTransform => transform as RectTransform;
private Texture2D texture;
[SerializeField] private RawImage rawImageTexture;
[SerializeField] private Texture2D Void;
}
И то не всегда работает.
В картинке вы можете увидеть что все прикреплено. Из примера я удалил все ненужное, чтобы вам было легче понять.
Вопрос
Собственно мне надо какой-нибудь способ поставить .png картинку в Texture2D в указанных координатах с указанным размером (если картинка больше, то сжать картинку до указанного размера). Можете подправить мой код, можете дать ссылки на ответ в других источниках, можете кидать статьи - любое решение.
