using UnityEngine.UI; using UnityEngine; namespace Fruitomation.UI { [RequireComponent(typeof(Image))] public class GridViewController : MonoBehaviour { [SerializeField] private Texture2D SourceTexture; [SerializeField] private int Cols; [SerializeField] private int Rows; private Image Image; private void Awake() { Texture2D tiled = TileTexture(SourceTexture, Cols, Rows); Sprite sprite = Sprite.Create ( tiled, new Rect(0, 0, tiled.width, tiled.height), new Vector2(0.5f, 0.5f) ); Image = GetComponent(); Image.color = Color.white; Image.sprite = sprite; } private static Texture2D TileTexture(Texture2D source, int cols, int rows) { int srcW = source.width; int srcH = source.height; Texture2D result = new(srcW * cols, srcH * rows); Color[] srcPixels = source.GetPixels(); for (int row = 0; row < rows; row++) for (int col = 0; col < cols; col++) { result.SetPixels(col * srcW, row * srcH, srcW, srcH, srcPixels); } result.Apply(); return result; } private void Update() => Image.enabled = GameStateController.Is(GameState.Building); } }