У меня есть спрайт 32x32, который я пытаюсь получить доступ к данным пикселей и изменить.
Для этого я просто беру текстуру спрайта, создаю новую текстуру на основе старой и затем изменяю значения пикселей новой текстуры. Затем я создаю новый спрайт с измененной текстурой и меняю параметр спрайта SpriteRenderer на новый спрайт.
Однако, когда я на самом деле запускаю свой сценарий, я получаю огромный серый квадрат, который в 10 раз больше исходного спрайта 32x32. Я очень новичок в единстве, поэтому я не уверен, почему это происходит. Любое понимание было бы замечательно.
private Sprite sprite;
private Texture2D texture;
// Use this for initialization
void Start ()
{
sprite = this.gameObject.GetComponent<SpriteRenderer>().sprite;
texture = sprite.texture;
Texture2D newTexture = modifyTexture(texture);
SpriteRenderer sr = this.gameObject.GetComponent<SpriteRenderer>();
sr.sprite = Sprite.Create(newTexture, new Rect(0, 0, newTexture.width, newTexture.height), new Vector2(0, 0), 10);
}
public Texture2D modifyTexture(Texture2D baseTexture)
{
Texture2D newTexture = new Texture2D(baseTexture.width, baseTexture.height);
int x = 0;
while(x < newTexture.width)
{
int y = 0;
while(y < newTexture.height)
{
Color currentPixel = baseTexture.GetPixel(x,y);
Color modifiedPixel = currentPixel;
modifiedPixel.r = (float)(modifiedPixel.r + 0.10);
modifiedPixel.b = (float)(modifiedPixel.b + 0.10);
modifiedPixel.g = (float)(0.10);
newTexture.SetPixel(x, y, modifiedPixel);
y++;
}
x++;
}
Debug.Log(newTexture.GetPixel(5, 5).ToString());
return newTexture;
}