Как поменять спрайт объекта unity через скрипт
Перейти к содержимому

Как поменять спрайт объекта unity через скрипт

  • автор:

Sprite Editor

Иногда текстура спрайта содержит только один элемент графики, но часто гораздо удобней объединить несколько изображений связанных друг с другом в одно изображение. Например, изображение может содержать составные части персонажа, как для машины колеса которой двигаются независимо от корпуса. Для этих целей Unity предоставляет Sprite Editor позволяя с легкостью извлекать элементы составного изображения.

NOTE:

Make sure the graphic you want to edit has its Texture Type set to Sprite (2D and UI). For information on importing and setting up sprites, see Sprites.

Sprite textures with multiple elements need the Sprite Mode to be set to Multiple in the Inpsector. (See Fig 2: Texture Import Inspector… below.)

Открытие редактора спрайтов

Открытие редактора спрайтов

  1. Select the 2D image you want to edit from the Project View(Fig 1: Project View). Note that you can’t edit a sprite which is in the Scene View.
  2. Click on the Sprite Editor button in the Texture Import Inspector(Fig 2: Texture Import Inspector) and the Sprite Editor displays (Fig 3: Sprite Editor).

Note: You can only see the Sprite Editor button if the Texture Type on the image you have selected is set to Sprite (2D and UI).

Fig 1: Project View Fig 2: Texture Import Inspector with Sprite Editor button

Note: Set the Sprite Mode to Multiple in the Texture Import Inspector if your image has several elements.

Fig 3: Sprite Editor

Помимо составного изображения, вы увидите различные элементы управления в заголовке окна редактора. Слайдер в правом верхнем углу управляет приближением, в то время как кнопка с цветными полосками слева от него переключает режим отображения альфа-канала и обычный вид изображения. Самый важный элемент управления это меню Slice в левом верхнем углу, который предоставляет опции для автоматической нарезки элементов изображения. Кнопки Apply и Revert позволяют вам сохранить или отменить сделанные изменения.

Использование редактора

The most direct way to use the editor is to identify the elements manually. If you click on the image, you will see a rectangular selection area appear with handles in the corners. You can drag the handles or the edges of the rectangle to resize it around a specific element. Having isolated an element, you can add another by dragging a new rectangle in a separate part of the image. You’ll notice that when you have a rectangle selected, a panel appears in the bottom right of the window:

The controls in the panel let you choose a name for the sprite graphic and set the position and size of the rectangle by its coordinates. A border width, for left, top, right and bottom can be specified in pixels. There are also settings for the sprite’s pivot, which Unity uses as the coordinate origin and main “anchor point” of the graphic. You can choose from a number of default rectangle-relative positions (eg, Center, Top Right, etc) or use custom coordinates.

The Trim button next to the Slice menu item will resize the rectangle so that it fits tightly around the edge of the graphic based on transparency.

Note: Borders are only supported for the UI system, not for the 2D SpriteRenderer.

Автоматическая нарезка (slicing)

Isolating the sprite rectangles manually works well but in many cases, Unity can save you work by detecting the graphic elements and extracting them for you automatically. If you click on the Slice menu in the control bar, you will see this panel:

With the slicing type set to Automatic, the editor will attempt to guess the boundaries of sprite elements by transparency. You can set a default pivot for each identified sprite. The Method menu lets you choose how to deal with existing selections in the window. The Delete existing option will simply replace whatever is already selected, Smart will attempt to create new rectangles while retaining or adjusting existing ones, and Safe will add new rectangles without changing anything already in place.

Grid by Cell Size or Grid by Cell Count options are also available for the slicing type. This is very useful when the sprites have already been laid out in a regular pattern during creation:

The Pixel Size values determine the height and width of the tiles in pixels. If you chose grid by cell count, Column & Row determines the number of columns and rows used for slicing. You can also use the Offset values to shift the grid position from the top-left of the image and the Padding values to inset the sprite rectangles slightly from the grid. The Pivot can be set with one of nine preset locations or a Custom Pivot location can be set.

Note that after any of the automatic slicing methods has been used, the generated rectangles can still be edited manually. You can let Unity handle the rough definition of the sprite boundaries and pivots and then do any necessary fine tuning yourself.

Polygon Resizing

Open the Sprite Editor for a polygon and you have the option to change its shape, size, and pivot position.

Shape

Sprite Editor: Polygon resizing - shape

Enter the number of sides you want the polygon to have in the Sides field and click Change.

Size and Pivot

Sprite Editor: Polygon resizing - size and pivot point - click on the polygon to display these options

SIZE: To change the polygon’s size, click on the sprite to display green border lines and the Sprite information box. Click and drag on the green lines to create the border you want, and the values in the Border fields change. (Note that you cannot edit the Border fields directly.)

PIVOT: To change the polygon’s pivot point (that is the axis point the polygon moves around), click on the image to display the Sprite information box. Click on the Pivot drop down menu and select an option. This displays a blue pivot circle on the polygon; its location depends on the pivot option to you have selected. If you want to change it further, select Custom Pivot and click and drag on the blue pivot circle to position it. (Note that you cannot edit the Pivot fields directly.)

Редактор Спрайтов

Иногда текстура спрайта содержит только один графический элемент, но часто бывает удобнее объединить несколько связанных графических элементов в одно изображение. Например, изображение может содержать составные части одного персонажа, как в случае с автомобилем, колеса которого движутся независимо от кузова. Unity упрощает извлечение элементов из составного изображения, предоставляя для этой цели редактор спрайтов.

Примечание. Убедитесь, что для изображения, которое вы хотите отредактировать, для параметра Тип текстуры установлено значение Спрайт (2D и пользовательский интерфейс). Информацию об импорте и настройке спрайтов см. в разделе Спрайты Двумерные графические объекты. Если вы привыкли работать в 3D, спрайты — это, по сути, просто стандартные текстуры, но есть специальные приемы комбинирования текстур спрайтов и управления ими для повышения эффективности и удобства во время разработки. Подробнее
См. в Словарь .

Спрайт-текстуры с несколькими элементами требуют, чтобы Режим спрайта был установлен на Несколько в Инспекторе Окно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет просматривать и редактировать значения. Дополнительная информация
См. в Словарь . (Изображение Инспектора импорта текстур ниже.)

Открытие редактора спрайтов

Чтобы открыть Редактор спрайтов:

  1. Выберите 2D-изображение, которое вы хотите отредактировать, в Просмотре проекта(Рис. 1: Представление проекта). Обратите внимание, что вы не можете редактировать спрайт, выбрав его в сценовом представлении интерактивном представлении мира, в котором вы находитесь. создание. Вы используете Scene View для выбора и размещения пейзажей, персонажей, камер, источников света и всех других типов игровых объектов. Дополнительная информация
    См. в Словарь .
  2. Нажмите кнопку Редактор спрайтов в Инспекторе импорта текстур Инспекторе, который позволяет вам определить, как ваши изображения импортируются из папки Assets вашего проекта в редактор Unity. Подробнее
    См. в Словарь(Рис. 2. Инспектор импорта текстур) и Редактор спрайтов отобразит (Рис. 3: Редактор спрайтов).

Примечание. Кнопка Редактор спрайтов отображается только в том случае, если для параметра Тип текстуры выбранного изображения установлено значение Спрайт (2D и пользовательский интерфейс).

Просмотр проекта Инспектор импорта текстур с кнопкой «Редактор спрайтов»

Примечание. Установите для параметра Режим спрайта значение Несколько в Инспекторе импорта текстур, если ваше изображение состоит из нескольких элементов. .

Редактор спрайтов

Вместе с составным изображением вы увидите ряд элементов управления на панели в верхней части окна. Ползунок в правом верхнем углу управляет масштабированием, а кнопка цветной полосы слева от него выбирает, просматриваете ли вы само изображение или его альфа-уровни. Крайний правый ползунок управляет пикселизацией (mipmap) текстуры. Перемещение ползунка влево уменьшает разрешение текстуры спрайта. Самым важным элементом управления является меню Slice в левом верхнем углу, которое дает вам возможность автоматически разделять элементы изображения. Наконец, кнопки Применить и Вернуть позволяют сохранить или отменить любые внесенные изменения.

Использование редактора

Самый простой способ использования редактора – это идентифицировать элементы вручную. Если щелкнуть изображение, появится прямоугольная область выбора с ручками по углам. Вы можете перетаскивать ручки или края прямоугольника, чтобы изменить его размер вокруг определенного элемента. Выделив элемент, вы можете добавить другой, перетащив новый прямоугольник в отдельную часть изображения. Вы заметите, что при выборе прямоугольника в правом нижнем углу окна появляется панель:

Элементы управления на панели позволяют выбрать имя для изображения спрайта и задать положение и размер прямоугольника по его координатам. Ширина границы слева, сверху, справа и снизу может быть указана в пикселях наименьшей единице в компьютерном изображении. Размер пикселя зависит от разрешения вашего экрана. Пиксельное освещение рассчитывается для каждого пикселя экрана. Подробнее
См. в Словарь . Границы полезны при 9-Slicing спрайтах. Также есть настройки для оси Sprite, которую Unity использует в качестве начала координат и основной «точки привязки» графики. Вы можете выбрать одну из позиций относительно прямоугольника по умолчанию (например, по центру, вверху справа и т. д.) или использовать собственные координаты.

Кнопка Обрезать рядом с элементом меню «Фрагмент» изменит размер прямоугольника так, чтобы он плотно прилегал к краю изображения на основе прозрачности.

Примечание. Границы поддерживаются только для UI (пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
См. в Словарь , а не для 2D SpriteRenderer.

Автоматическая нарезка

Изоляция прямоугольников спрайтов вручную работает хорошо, но во многих случаях Unity может сэкономить вашу работу, обнаружив графические элементы и автоматически извлекая их для вас. Если вы нажмете на меню Фрагмент на панели управления, вы увидите эту панель:

Если для типа нарезки задано значение Автоматически, редактор попытается угадать границы элементов спрайта по прозрачности. Вы можете установить опорную точку по умолчанию для каждого идентифицированного спрайта. Меню Метод позволяет вам выбрать, как поступать с существующими выборками в окне. Параметр Удалить существующие просто заменит все, что уже выбрано, Умный попытается создать новые прямоугольники, сохраняя или изменив существующие, а Безопасный добавить новые прямоугольники, не меняя ничего уже существующего.

Сетка по размеру ячеек или Сетка по количеству ячеек также доступны для типа среза. Это очень полезно, когда спрайты уже были размещены в обычном шаблоне во время создания:

Значения Размер пикселя определяют высоту и ширину фрагментов в пикселях. Если вы выбрали сетку по количеству ячеек, Столбец и строка определяет количество столбцов и строк, используемых для нарезки. Вы также можете использовать значения Offset, чтобы сместить положение сетки от левого верхнего угла изображения, и значения Padding, чтобы немного отодвинуть прямоугольники Sprite от сетки. Для Pivot можно задать одно из девяти предустановленных местоположений или можно задать Пользовательское положение Pivot.

Обратите внимание, что после использования любого из автоматических методов нарезки сгенерированные прямоугольники по-прежнему можно редактировать вручную. Вы можете позволить Unity выполнить грубое определение границ и поворотов спрайтов, а затем выполнить все необходимые точные настройки самостоятельно.

Изменение размера многоугольника

Откройте Редактор спрайтов для многоугольника, и у вас будет возможность изменить его форму, размер и положение поворота.

Форма многоугольника

Редактор спрайтов: изменение размера многоугольника - форма

Введите количество сторон, которое должно быть у многоугольника, в поле Стороны и нажмите Изменить.

Размер многоугольника и поворот

Редактор спрайтов: изменение размера многоугольника — размер и точка поворота — нажмите на многоугольник, чтобы отобразить эти параметры.

Размер полигона

Чтобы изменить размер многоугольника, щелкните спрайт, чтобы отобразить зеленые линии границ и информационное поле спрайта. Нажмите и перетащите зеленые линии, чтобы создать нужную границу, и значения в полях Граница изменятся.

Поворот многоугольника

Чтобы изменить точку вращения многоугольника (то есть точку оси, вокруг которой движется многоугольник), щелкните изображение, чтобы отобразить информационное окно спрайта. Щелкните раскрывающееся меню Сводка и выберите параметр. Это отобразит синий круг вращения на многоугольнике; его расположение зависит от выбранного вами параметра поворота. Если вы хотите изменить его дальше, выберите Пользовательский поворот, нажмите и перетащите синий круг поворота, чтобы расположить его.

Как при клике сменить спрайт в объекте?

Собственно с правой стороны надо дать объект типа Sprite.

А каким способом он там окажется уже без разницы. Например самый стандартный способ это указать публичное поле с таким типом

public Sprite mySprite; 

потом в редакторе в это поле положить спрайт, а уже в той строке выше присвоить полю. поле))

hit.collider.GetComponent().sprite = mySprite 

А в примере по ссылке указывается, как можно загрузить спрайт из ресурсов и далее этот самый спрайт (точнее один спрайт из массива) вставляется в GetComponent().sprite .

Отслеживать
ответ дан 28 янв 2017 в 11:10
Алексей Шиманский Алексей Шиманский
73.4k 12 12 золотых знаков 93 93 серебряных знака 182 182 бронзовых знака
Не подскажите как загрузить спрайт из ресурсов? Подгрузить и выбрать нужный в mySprite
28 янв 2017 в 11:21

@ЖалгасАжибаев создаете папку Resources туда кидаете спрайт, названный например testSprite . Далее пользуетесь методом Resources.Load .Он загружает из ресурсов..Напр. будет var loadedSprite = Resources.Load(«testSprite») as Sprite; . Т.к. ресурс не знает какого типа объект он загружает, то надо специально привести к нужному типу, для этого написано as Sprite . И вставляете его уже куда надо hit.collider.GetComponent().sprite = loadedSprite; советую изучать англ. в доках всё написано подробно

28 янв 2017 в 11:29

  • unity3d
  • 2d
  • спрайт

Создание и Использование Скриптов

Поведение игровых объектов контролируется с помощью компонентов (Components), которые присоединяются к ним. Несмотря на то, что встроенные компоненты Unity могут быть очень разносторонними, вскоре вы обнаружите, что вам нужно выйти за пределы их возможностей, чтобы реализовать ваши собственные особенности геймплея. Unity позволяет вам создавать свои компоненты, используя скрипты. Они позволяют активировать игровые события, изменять параметры компонентов, и отвечать на ввод пользователя каким вам угодно способом.

Unity supports the C# programming language natively. C# (pronounced C-sharp) is an industry-standard language similar to Java or C++.

In addition to this, many other .NET languages can be used with Unity if they can compile a compatible DLL — see here for further details.

Изучение искусства программирования и использования этих языкам выходит за рамки данного введения. Однако есть множество книг, обучающих материалов и ресурсов для изучения программирования в среде Unity. Посетите Обучающий раздел на нашем сайте для получения подробной информации.

Создание скриптов

Unlike most other assets, scripts are usually created within Unity directly. You can create a new script from the Create menu at the top left of the Project panel or by selecting Assets > Create > C# Script from the main menu.

Новый скрипт будет создан в папке, которую вы выбрали в панели Project. Имя нового скрипта будет выделено, предлагая вам ввести новое имя.

Лучше ввести новое имя скрипта сразу после создания чем изменять его потом. Имя, которое вы введете будет использовано, чтобы создать начальный текст в скрипте, как описано ниже.

Структура файла скрипта

When you double-click a script Asset in Unity, it will be opened in a text editor. By default, Unity will use Visual Studio, but you can select any editor you like from the External Tools panel in Unity’s preferences (go to Unity > Preferences).

Содержимое файла будет выглядеть примерно так:

using UnityEngine; using System.Collections; public class NewBehaviourScript : MonoBehaviour < // Use this for initialization void Start () < >// Update is called once per frame void Update () < >> 

Скрипт взаимодействует с внутренними механизмами Unity за счет создания класса, наследованного от встроенного класса, называемого MonoBehaviour. Вы можете думать о классе как о своего рода плане для создания нового типа компонента, который может быть прикреплен к игровому объекту. Каждый раз, когда вы присоединяете скриптовый компонент к игровому объекту, создается новый экземпляр объекта, определенный планом. Имя класса берется из имени, которое вы указали при создании файла. Имя класса и имя файла должны быть одинаковыми, для того, чтобы скриптовый компонент мог быть присоединен к игровому объекту.

Основные вещи, достойные внимания, это две функции, определенные внутри класса. Функция Update — это место для размещения кода, который будет обрабатывать обновление кадра для игрового объекта. Это может быть движение, срабатывание действий и ответная реакция на ввод пользователя, в основном всё, что должно быть обработано с течением времени во игровом процессе. Чтобы позволить функции Update выполнять свою работу, часто бывает полезно инициализировать переменные, считать свойства и осуществить связь с другими игровыми объектами до того, как будут совершены какие-либо действия. Функция Start будет вызвана Unity до начала игрового процесса (т.е. до первого вызова функции Update), и это идеальное место для выполнения инициализации.

Заметка для опытных программистов: вы можете быть удивлены, что инициализация объекта выполняется не в функции-конструкторе. Это потому, что создание объектов обрабатывается редактором и происходит не в начале игрового процесса, как вы могли бы ожидать. Если вы попытаетесь определить конструктор для скриптового компонента, он будет мешать нормальной работе Unity и может вызвать серьезные проблемы с проектом.

Управление игровым объектом

Как было сказано ранее, скрипт определяет только план компонента и, таким образом, никакой его код не будет активирован до тех пор, пока экземпляр скрипта не будет присоединен к игровому объекту. Вы можете прикрепить скрипт перетаскиванием ассета скрипта на игровой объект в панели Hierarchy или через окно Inspector выбранного игрового объекта. Имеется также подменю Scripts в меню Component, которое содержит все скрипты, доступные в проекте, включая те, которые вы создали сами. Экземпляр скрипта выглядит так же, как и другие компоненты в окне Inspector:-

После присоединения скрипт начнет работать, когда вы нажмете Play и запустите игру. Вы можете проверить это добавив следующий код в функцию Start:-

// Use this for initialization void Start ()

Debug.Log is a simple command that just prints a message to Unity’s console output. If you press Play now, you should see the message at the bottom of the main Unity editor window and in the Console window (menu: Window > General > Console).

  • 2018–03–19 Page amended
  • MonoDevelop replaced by Visual Studio from 2018.1

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *