Swift SKSpriteNode с UIImage

У меня проблема с созданием SKSpriteNode с UIImage. Я создаю ресурсы, которые использую для своего приложения, с помощью PaintCode (PaintCode создает файл Swift с методами рисования и методами изображений, которые позволяют мне отображать созданные изображения).

Моя проблема сейчас в том, что я хочу создать простой SKSpriteNode, используя мои изображения PaintCode, но я не знаю, как добавить их в SpriteNode.

Я пробовал что-то вроде этого (строка 18):

let Bottom = SKSpriteNode(texture: SKTexture(image: StyleKitName.drawBottom(frame: CGRect(x: 50, y: 50, width: 50, height: 50), isWinter: false)))

Но он возвращает следующую ошибку:

/Users/myMacName/Documents/App Development/AppName/AppName/GlobalFunctions.swift:18:44: Cannot find an initializer for type 'SKTexture' that accepts an argument list of type '(image: ())'

Функция StyleKitName.drawBottom возвращает UIImage. Было бы хорошо, если бы кто-нибудь мог сказать мне, как создать SKSpriteNode с UIImage.

Я ценю любую помощь. Спасибо.


person Blackhawk    schedule 09.08.2015    source источник
comment
Где вы использовали let Bottom = SKSpriteNode(texture: SKTexture(image: StyleKitName.drawBottom(frame: CGRect(x: 50, y: 50, width: 50, height: 50), isWinter: false))) эту строку кода?   -  person mert    schedule 10.08.2015
comment
Эта строка кода является строкой 18, и ошибка появляется в той же строке.   -  person Blackhawk    schedule 10.08.2015


Ответы (3)


Если у вас есть UIImage, вы можете создать с ним узел спрайта:

let Image = //do your setup here to make a UIImage
let Texture = SKTexture(image: Image)
let Sprite = SKSpriteNode(texture:Texture)

Я не уверен, где и как вы вызывали методы, но могу заверить, что это правильные инициализаторы.

person MaxKargin    schedule 10.08.2015
comment
Благодаря этому я понял, что вызвал не ту функцию (drawButton вместо imageOfButton, созданного PaintCode). И извините за то, что потратил ваше время на такую ​​глупую ошибку. - person Blackhawk; 10.08.2015
comment
Рад, что ты понял! - person MaxKargin; 10.08.2015
comment
небольшой апгрейд к вопросу - то же самое для расширенного UIImage с гифкой? Это большая проблема, так как изображение должно быть асинхронным, поэтому в этом ответе SKTexture всегда будет отображаться ошибка ... Я знаю, что никто этого не запрашивал, и мне очень жаль ... все же было бы неплохо получить ответ :) - person Blue Bot; 15.08.2020

если вы хотите подключить его из редактора сцен

    let movieImage = self.childNode(withName: "MovieImage") as! SKSpriteNode?
    let Image = UIImage(named: "imageName")
    let Texture = SKTexture(image: Image!)
    movieImage?.texture = Texture
person Ahmed Safadi    schedule 20.07.2017

Если у вас есть iPad и вы хотите назначить UIImage для SKSpriteNode

let myImage = SKSpriteNode(texture:SKTexture(image: UIImage))

Теперь вы можете импортировать изображения из файлового приложения на iPad и легко назначать ему изображения.

person Shelly Shubh    schedule 16.04.2021