Импорт Sprite из файла на компьютере и ссылка на него в экземпляре объекта Scriptable - PullRequest
0 голосов
/ 05 ноября 2019

Символ ScriptableObject

У меня есть ScriptableObject «Персонаж», и я создал его экземпляр. У него есть поле для спрайта, но я не хочу ссылаться на него перед началом игры.

Character.cs

public Class Character : ScriptableObject {

public Sprite mySprite;

}

Теперь у меня есть специальная папка, куда игроки должны положитьпользовательский файл изображения (.jpg, .png), например, «Мои документы / Моя игра / Мои рисунки». Когда игроки нажимают кнопку в пользовательском интерфейсе, тогда будут показаны все файлы изображений, а затем пользователь сможет щелкнуть изображение, а затем на этот спрайт будет ссылаться в экземпляре Character ScriptableObject.

Я также хотел быДобавьте некоторые требования, например, размер изображения должен быть 200х200.

1 Ответ

1 голос
/ 05 ноября 2019

Здесь необходимо 3 части:

  1. Загрузка файла с диска
  2. Загрузка данных, считанных с диска, в Texture2D
  3. Создание Sprite из текстуры

(1) вы можете посмотреть сами, чтение байтов из файла тривиально.
(2) равно этот метод
(3) использует Sprite.Create()

Ваш окончательный код будет выглядеть так:

File f = //...step 1
Texture2D t = //...step 2
Rect size = new Rect(0, 0, t.width, t.height); //the part of the image to use; whole image
int PIXELS_PER_UNIT = 100; //whatever your other sprites use
Sprite s = Sprite.Create(t, size, Vector2.zero, PIXELS_PER_UNIT, 0, SpriteMeshType.FullRect);
...