как менять спрайт в коде unity 2d
Изменить спрайт объекта Image
Как изменить спрайт объекта через код?
Добрый день. Пытаюсь изменить спрайт объекта через dll. Создаю объект «goPos» в dll, нахожу его и.
Не получается перетащить спрайт отдельно от родительского объекта
У меня не получается перетащить спрайт отдельно от родительского объекта, не вручную, не через.
Вращение объекта за Image
Всем привет. Мне нужно что бы объект вращался за элементом UI Image. написал код но это не совсем.
Добавлено через 52 секунды
PS Ссылки на картинки в испекторе укажешь
Добавлено через 1 минуту
https://habr.com/ru/post/359106/ можно ещё статью почитать
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как изменить спрайт выбранного объекта из массива?
Когда я подбираю игровой предмет, то вызываю метод добавления предмета. Передаю спрайт объекта.
Белый спрайт при создании нового объекта
Здравствуйте. Я создал вектор vector objects; для создания новых объектов. Тут я создаю.
Нужно изменить свойство объекта, при наведении объекта на область
Здравствуйте! Нужно чтобы квадрат в зеленой и синей области превращался в круг медленно. В желтой и.
Обновление объекта Image
Добрый вечер, дамы и господа! Есть код, который реализует перемещения (рандомное изменение.
Заполнение объекта Image по URL
Здравствуйте. У есть PictureBox, который берёт картинку из файла, вот так: PictureBox pb = new.
Проблемы с отрисовкой объекта Image
Написал игру. Стал все текстурами украшать и столкнулся с вот такой проблемой: объект Image с.
Изменение спрайта в скрипте 2D
Аниматор и изменение спрайта в скрипте
В аниматоре есть состояние спокойствия и состояние бега. В скрипте в определённый момент я изменяю.
Динамическое изменение спрайта
Есть атлас. Я разрезал его в спрайт эдиторе. Теперь хочу динамически поменять игровому объекту.
Изменение прозрачности спрайта
Добрый вечер, делаю для игры экран загрузки. У меня есть спрайт и я хочу что он плавно появлялся.
Изменение цвета спрайта
Делаю 2d платформер. Нужно, чтобы при получении урона Главный персонаж на мгновение Перекрашивался.
Решение
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Изменение спрайта по клику на объект
Доброго времени суток! Уже всю голову сломал, надежда на форум. Есть инвентарь, который.
Изменение в скрипте
Доброго времени суток, большая просьба подсказать, что изменить нужно. Скачал скрипт, в котором.
Изменение текста в скрипте
Всем привет, подскажите пожалуйста, что не так? Есть официальный туториал по созданию 2д игры.
Unity 2D: работа со спрайтами в разных разрешениях дисплея
Начиная с версии 4.3 в Unity появилась возможность работы с 2D графикой, большая часть новых стандартных решений мне пришлись по душе, потому что я как раз незадолго до этого обновления перешел с Corona SDK.
Но что меня не порадовало, так это отсутствие стандартных инструментов для оптимизации спрайтов под разные разрешения экранов, что имеет довольно таки существенное влияние на производительность на маломощных устройствах.
Конечно, можно использовать что-то похожее на 2D Toolkit для решения этой проблемы, но зачем платить 75$ если можно сделать все самому?
Cо слов пользователей официального форума Unity, разработчики в скором времени не планируют расширять 2D функционал, по крайней мере до релиза 5 версии Unity, и пока что пользователи должны самостоятельно решать данную проблему. Бороздя просторы интернета в надежде найти ответ, я набрел на интересный доклад одного из разработчиков Unity на летней Nordic Game Conference 2014, название говорит само за себя «2D issues and how to solve them». Пользуясь материалами этого доклада, я сделал свое решение проблемы поддержки дисплеев разного разрешения.
Для того чтобы начать, нам нужна только версия атласа спрайтов с самым высоким разрешением, остальные манипуляции с уменьшением качества атласов происходят внутри Unity.
Итак, на первом этапе мы должны организовать атласы спрайтов для разных разрешений: SD, HD, ultra-HD, у нас же будут использованы суффиксы 1x, 2x, 4x.
Берем атлас спрайтов, в нашем случае это ’spritesheet1@4x.png’, в инспекторе выбираем нужные параметры, режем атлас в Sprite Editor, если требуется. Создаем еще две копии атласа в Project Browser (cmd+D, ctrl+D) и переименуем их так, чтобы суффиксы в названии были ‘@2x’, ‘@1x’, меняем свойство Max Size на значение в 2 и в 4 раза меньше соответственно.
Спрайты должны находится в папке Resources, если таковой не имеется — создайте. Это позволяет загружать файлы с этой папки во время выполнения программы.
Обращу Ваше внимание на поля Pixels Per Unit и Format, первое поможет подобрать размер спрайтов под размеры сцены без изменения scale, а второе является очень важным для правильной передачи цвета, размера билда и использования ресурсов графического процессора. На эту тему есть замечательный мануал
Тут все просто, мы собираем игровой объект на основе атласа спрайтов с суффиксом ‘@2x’, добавляем анимацию и любые другие фишки, которые могут вам понадобится. Сохраняем объект как префаб.
Суффикс ‘@2x’ был выбран, потому что большая часть устройств имеют hd разрешение, нам не придется делать лишнюю работу в большинстве случаев.
Скрипт будет работать с любым количеством компонентов SpriteRenderer. Он не будет влиять ни на анимацию, ни на что другое, главное чтобы имена спрайтов в атласе и SpriteRenderer`е были одинаковыми. Данную особенность можно применять не только для смены разрешения спрайтов, но и для замены их на полностью другие, например при создании другого скина персонажа.
Основной принцип работы скрипта таков: у нас есть публичная переменная spriteSheet, в которой мы передаем имя атласа, в котором находятся спрайты нашего объекта.
С помощью метода GetQuality узнаем с каким дисплеем мы имеем дело (для моих целей было достаточно ориентироваться на высоту экрана).
Потом в методе ManageQuality, имея данные о разрешении экрана, загружаем в массив sprites все спрайты нужного нам атласа с правильным суффиксом. В массив renderers загружаем все компоненты SpriteRenderer, которые находятся в объекте. Ищем в массиве sprites спрайт по имени и присваиваем его спрайту компонента SpriteRenderer, если такой существует. Завершает все Resources.UnloadUnusedAssets (), этот метод выгружает из памяти неиспользуемые ассеты.
Также этот скрипт можно использовать для изменения всех спрайтов в сцене. Для этого создаем новый объект, например SpriteManager, и добавляем к нему данный скрипт, но с измененным определением массива renderers:
Спасибо за внимание, надеюсь статья была вам полезна.
Unity2D изменение изображения спрайта из массива с #
Я работаю над методом, позволяющим игроку настраивать свой спрайт. Я создал массив в моем сценарии менеджера следующим образом:
В этот массив я намереваюсь добавить 5 файлов png, которые будут использоваться для обновления спрайта spriteRenderer. У меня две проблемы: я не могу получить доступ к массиву в скрипте спрайта (который, как я считаю, является лучшим способом изменить изображение). Я также изо всех сил пытаюсь понять, как изменить изображение спрайтов. В настоящее время я использую этот код:
В моем списке спрайтов я поместил 5 файлов png (2D-текстуры спрайтов), но когда я запускаю программу, она говорит: «Ссылка на объект не установлена на экземпляр объекта». Не знаете, почему возникает эта ошибка, когда в массиве есть спрайты?
Игровой объект, который я называю «UIManager», находится в другой сцене, чем та, из которой я использую находку. Это неверно?
2 ответа
Есть несколько способов решить вашу проблему.
1) Singleton-классы. Объявите статический экземпляр вашего класса, в котором хранится массив спрайтов, то есть класс uIManager. Вы можете сделать свой класс синглтоном, используя метод, показанный в ссылке, или вы можете просто объявить это так:
3) Используйте Unity API, чтобы найти игровой объект, к которому прикреплен ваш класс. Вот некоторые из API, которые я использую регулярно, помимо двух вышеуказанных методов:
Вы можете найти отдельный игровой объект с именем или вернете первый объект с названием. GameObject.Find(string name)
Это вернет первый игровой объект с тегом.
GameObject FindWithTag(string tag)
Этот API возвращает первый игровой объект желаемого типа.
GameObject.FindObjectOfType(Type type)
Этот API вернет все игровые объекты данного типа. в случаях тип может быть типа класса. И это вернет все объекты игры, к которым прикреплен ваш тип класса.
GameObject.FindObjectsOfType(Type type)
4) Настройка вашего массива как статического, но если вы это сделаете, вы не сможете получить к нему доступ в редакторе единства и, следовательно, не сможете назначать спрайты в редакторе.
Что касается вашего вопроса, я считаю, что первый метод должен больше, чем помогать.
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.)
Открытие редактора спрайтов
Открытие редактора спрайтов
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.
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).
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
Enter the number of sides you want the polygon to have in the Sides field and click Change.
Size and Pivot
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.)