Текстура представлена классом Texture2D. Для начала вы создаёте экземпляр класса, указывая его целочисленные высоту и ширину. Затем используйте метод SetPixel(x, y, color), чтобы перекрасить пиксель в нужный цвет. В конце вызываете Apply, чтобы применить. Например, вот так можно создать белый круг:
using UnityEngine;
public class DynamicCircle : MonoBehaviour {
public SpriteRenderer spriteRenderer;
[Min(1)] public int textureWidth = 100;
[Min(1)] public int textureHeight = 100;
public Color defaultColor = Color.white;
private Texture2D _circleTexture;
private void Start() {
CreateCircleTexture();
}
private void CreateCircleTexture() {
_circleTexture = new Texture2D(textureWidth, textureHeight);
var center = new Vector2(textureWidth / 2, textureHeight / 2);
var radius = textureWidth / 2;
for (int y = 0; y < _circleTexture.height; y++) {
for (int x = 0; x < _circleTexture.width; x++) {
float distanceToCenter = Vector2.Distance(new Vector2(x, y), center);
if (distanceToCenter <= radius) {
_circleTexture.SetPixel(x, y, defaultColor);
} else {
_circleTexture.SetPixel(x, y, Color.clear);
}
}
}
_circleTexture.Apply();
spriteRenderer.sprite = Sprite.Create(_circleTexture, new Rect(0.0f, 0.0f, textureWidth, textureHeight), new Vector2(0.5f, 0.5f), 100.0f);
}
}