Создание только портретной игры с использованием SpriteKit и размещение моих изображений в Images.xcassets
. Это для iPhone, так что мои изображения активы настроены следующим образом:SpriteKit помогает понять масштабирование
1x, 2x, Retina 4 2x, 3x
Например, в рамках одного изображения актива, в 2 раза, у меня есть 640x640 PNG, это соответствует отлично на iPhone 4/4s, 5/5s но на 6 (что также масштабируется @ 2x) это не так, потому что 6 имеет чуть более широкий экран @ 750px (или 375 точек). Поэтому я придумал следующую формулу, которую я могу передать в [mySprite setScale:]
для каждого спрайта, который я добавляю к своей сцене.
CGFloat scale = screenPointWidth/(screenScale * 160)
Где screenPointWidth = [[UIScreen mainScreen] bounds].size.width
и screenScale = [[UIScreen mainScreen] scale]
. 160
относится к базовому значению ширины пикселя 1x (или 320/2
). Это возвращает масштабный мультиплеер.
С помощью этого многопользовательского режима мои 640x640 изображения масштабируются и идеально подходят на широкоэкранном экране 750.
Мои вопросы: есть ли лучший способ сделать это, или я делаю это правильно? Есть ли универсальная настройка масштабирования, которую я должен использовать вместо этого, или я должен просто масштабировать каждое положение спрайта и спрайта на основе моей формулы? Или, должен ли я не использовать Image.xcassets
и вместо этого создавать индивидуальные .atlas 'для конкретных разрешений экрана? Должен ли я беспокоиться о повышении частоты дискретизации и понижающей дискретизации, или это автоматически обрабатывается самим iPhone 6/6 +?
Ref: http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
Reg iPhone 6 и "просто весы 2x изображения" - это на самом деле масштабировать их, или вы это означает, что 2x изображения просто вписываться в? Поскольку у меня нет 6, я использую Sim, чтобы посмотреть, как выглядят вещи, и ничто не масштабируется, хотя он действительно извлекает из моих активов 2x (естественно). –
Прошу прощения, я неправильно понял ваш вопрос. Я обновил свой ответ. – hamobi
Я вижу, поэтому практика заключается в том, чтобы сделать объекты изображения более крупными, чтобы они (sorta) соответствовали прямо на разных экранах? В случае @ 2x я бы сделал 1136x640 (фоновый пример), а затем загрузил его на устройствах 1024x768 и 960x640? Я думаю, что это приемлемо для изображений, которые могут не иметь большого значения, но если вам нужен точный образ, скажем, Шахматная доска, то он должен соответствовать или масштабироваться. В этом случае, если я использую шахматную доску 640x640, я могу применить свою формулу, чтобы она соответствовала спрайту, чтобы точно отображать масштабные позиции x, y. Ваш ответ добавляет ценность, но если наличие границ нежелательно, необходимо применить масштабирование, согласитесь? –