Buffer icon Проекты
12 заметок с тегом

графика

Позднее Ctrl + ↑

2D графика для игр

Суперский блог про создание 2D графики для игр. Отличные видео и пошаговые уроки про то, как создать персонажа и подготовить его для анимации, как нарисовать камни и горы, фон и все остальное для вашей игры.

Если вы из тех, кто хочет сделать (и делает) игру полностью сам, то это то, что вам надо.

 Нет комментариев    1295   2016   графика   игры   ссылки   уроки

Загрузка спрайтов в iOS

Бывает нужно дозагрузить какие-нибудь картинки с сервера и показать их в игре, например, чтобы сделать размер установочного файла меньше.

Для загрузки спрайта из внешнего файла, я использовал такую функцию:

public static Sprite LoadSprite (string folder, string image) {
	string path = string.Format ("{0}/{1}/{2}.png", Application.temporaryCachePath, folder, image);
	if (!System.IO.File.Exists (path))
		return null;
	else {
		byte[] data = System.IO.File.ReadAllBytes (path);
		Texture2D texture = new Texture2D(2, 2);
		texture.LoadImage(data); 
		return Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(.5f, .5f));
	}
}
...
MyIcon.sprite = LoadSprite ("loaded_images", "new_icon");

Ничего необычного — читаем файл в текстуру, из текстуры делаем спрайт и применяем его к картинке. Если запустить этот код в редакторе или на android устройстве, то все будет в порядке. Но запустив его на iPhone или iPad — спрайт загрузится некорректно. Это происходит потому iOS не поддерживает формат сжатия DXT. Нужно использовать PVRTC_RGBA4.

Поэтому, немного изменяем функцию и теперь все картинку будут показываться правильно:

public static Sprite LoadSprite (string folder, string image) {
	string path = string.Format ("{0}/{1}/{2}.png", Application.temporaryCachePath, folder, image);
	if (!System.IO.File.Exists (path))
		return null;
	else {
		byte[] data = System.IO.File.ReadAllBytes (path);
		Texture2D texture;
		#if UNITY_ANDROID 
			texture = new Texture2D(2, 2);
		#elif UNITY_IOS
			texture = new Texture2D(2, 2, TextureFormat.PVRTC_RGBA4, false);
		#endif
		texture.LoadImage(data); 
		return Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(.5f, .5f));
	}
}
 Нет комментариев    118   2016   ios   unity   графика