2015-11-14 2 views
4

Я делаю игру, используя Xcode, Swift и SpriteKit. Я сделал png-изображение в Photoshop, которое подразумевает прозрачность, и в игре он выглядит черным. У меня есть другие png-изображения, которые также включают прозрачность, и они выглядят так, как они предполагают. Я не думаю, что это проблема кода, но только в том случае, вот код, который вводит изображение в игре (он находится внутри функции didMoveToView):Swift SpriteKit: png изображение появляется черным во время игры. Как это исправить?

let warning = SKSpriteNode(imageNamed: "yellow_warning") 
    warning.setScale(0.1) 
    warning.anchorPoint = CGPoint(x: 0, y: 0.5) 
    warning.position = CGPoint(x: CGRectGetMinX(self.scene!.frame)+296, y: CGRectGetMidY(self.scene!.frame)) 
    warningsNode.addChild(warning) 

warningsNode простой SKNode и является ребенок сцены.

Вот изображение Я использую

Here's the image

Спасибо за вашу помощь!

+0

Я использовал градиент, чтобы создать это изображение – J164

+0

Можете ли вы загрузить точное изображение, которое используете? – Whirlwind

ответ

5

Ваше изображение слишком велико. Скачивая файл, он сообщает мне, что это 270x9000 пикселей. В зависимости от аппаратного обеспечения в iPhone/iPad/Mac ваш графический процессор может не справиться со всеми этими пикселями. По крайней мере, на iPhone/iPad, максимальный размер (который я знаю) составляет 4096x4096. Вы можете проверить max, создав контекст OpenGL и прочитав свойство, которое сообщает вам максимальный размер текстуры.

Я бы масштабировал ваше изображение вниз, чтобы оно не было выше 4096 (или что бы ваше оборудование не говорило вам). Хотя хорошо иметь негабаритные текстуры для будущих доказательств, вы можете быть слишком далеко. Я рекомендую изменить копию этого изображения, так что вам не придется его повторно создавать позже, когда есть более мощное оборудование.

РЕДАКТИРОВАТЬ: Вы могли бы даже сделать это 270x10 и растянуть его, так как никто не сможет сказать, что он растянут, потому что все выглядит одинаково (не стесняйтесь поправлять меня, если я ошибаюсь).

Смежные вопросы