Я делаю игровое приложение с SpriteKit и последним Xcode.
Я хочу отображать одиночные цветные спрайты в пикселях.
Я пробовал следующий код.
Спрайты SKSpriteNode размыты только на реальной машине iPhone 7 Plus
let sprite = SKSpriteNode(color: SKColor.gray, size: CGSize(width: 16, height: 16))
sprite.anchorPoint = CGPoint(x: 0, y: 0)
sprite.position = CGPoint(x: 100, y: 100)
sprite.texture?.filteringMode = .nearest
addChild(sprite)
В большинстве случаев он идеально отображался. (В частности, это все симуляторы iOS, настоящая машина iPhone 6s, iPod touch, iPad.)
Однако в iPhone 7 Plus настоящая машина размыта, как на изображении ниже.
Я понимаю, что невозможно отобразить пиксель идеального, так как изображение 1242 х 2208 пикселей снижаются до 1080 х 1920 пикселей в серии iPhone Plus.
Но скриншот должен быть пиксельным, потому что он получает 1242 x 2208 пикселей до понижающей дискретизации.
Я не могу попробовать, потому что у меня его нет, но я думаю, что это будет тот же результат на реальной машине iPhone 6 Plus и iPhone 6s Plus.
Есть ли способ решить эту проблему?
Мой английский не очень хорошо.
Спасибо.
Я попытался идею @ Knight0fDragon.
Я уладил спрайты с высотой 0.666667 в 20 чувствах.
Я пробовал размер SKView при 414 x 736 и 360 x 640.
В результате, хотя это не идеальный пиксель, он стал намного лучше.
Однако размер скриншота по-прежнему составляет 1242 x 2208 пикселей.
https://i.stack.imgur.com/Cadgp.png
Хороший вопрос! Это то, о чем я тоже задумывался. Некоторые рамки имеют возможность доступа к разрешению 1920x1080 напрямую, без масштабирования. Я удивлен, что SpriteKit не является одним из них. – Confused
Вы уверены, что не находитесь в режиме заполнения масштаба? Какова размер вашей сцены также – Knight0fDragon
@Confused apple OS не позволяет вам получить доступ к 1920x1080 напрямую, сохраняя при этом стиль стиля сетчатки. Вам нужно будет избавиться от всех сетчатых и точечных систем на месте и написать прямо на GPU для его достижения. – Knight0fDragon