Есть несколько способов разделить спрайт на равные части в Unity. Одним из наиболее простых способов является использование функции Sprite.Create() в сочетании с методом Texture2D.GetPixels(). Вот пример кода, который позволяет разделить спрайт на квадратные части с одинаковым размером: ```csharp using UnityEngine; public class PuzzleSpriteDivider : MonoBehaviour { public Sprite originalSprite; public int puzzleSize; // количество частей пазла по горизонтали и вертикали private void Start() { // Получаем исходную текстуру спрайта Texture2D originalTexture = originalSprite.texture; // Получаем размеры исходной текстуры int width = originalTexture.width; int height = originalTexture.height; // Получаем размер каждой части пазла int pieceSize = width / puzzleSize; // Создаем массив спрайтов для кусочков пазла Sprite[] puzzlePieces = new Sprite[puzzleSize * puzzleSize]; // Цикл по горизонтальным и вертикальным координатам для разбиения спрайта for (int y = 0; y < puzzleSize; y++) { for (int x = 0; x < puzzleSize; x++) { // Создаем новую текстуру для каждого кусочка пазла Texture2D pieceTexture = new Texture2D(pieceSize, pieceSize); // Обрезаем часть исходной текстуры для текущего кусочка Color[] pixels = originalTexture.GetPixels(x * pieceSize, y * pieceSize, pieceSize, pieceSize); pieceTexture.SetPixels(pixels); pieceTexture.Apply(); // Создаем спрайт из полученной текстуры Sprite pieceSprite = Sprite.Create(pieceTexture, new Rect(0, 0, pieceSize, pieceSize), new Vector2(0.5f, 0.5f)); // Сохраняем спрайт в массиве puzzlePieces[y * puzzleSize + x] = pieceSprite; } } // Теперь у вас есть массив с квадратными кусочками пазла из исходного спрайта // Вы можете использовать этот массив для создания пазла в соответствии с вашими потребностями } } ``` Примечания: - Скрипт предполагает, что вы уже импортировали исходный спрайт в Unity и установили его в переменную originalSprite. - Вы также должны установить переменную puzzleSize равной желаемому количеству частей пазла по горизонтали и вертикали (например, 3 для разделения на 9 частей). - Помните, что размеры спрайта и количество частей пазла должны быть согласованы - если размеры не кратны друг другу, возможны искажения. - У вас также должен быть спрайт с сохраненными квадратными аспектными отношениями, чтобы сохранить одинаковый размер для каждого кусочка пазла (в отношении 1:1). Если у вас нет спрайта с такими размерами, то вы можете использовать функцию Texture2D.Resize() для изменения размера текстуры перед вызовом Texture2D.GetPixels().