SKTexture
SKTexture
объект является изображением, которому можно примениться к SKSpriteNode
и SKShapeNode
объекты или частицы, создаваемые SKEmitterNode
объект. Объект текстуры управляет данными текстуры и графическими ресурсами, которые необходимы для рендеринга изображения.
Большинство объектов текстуры создается из исходных изображений, сохраненных в Вашем комплекте приложений — иллюстрации Вашей игры. После того, как создаваемый, текстура содержание объекта является неизменным. Многократные спрайты могут совместно использовать тот же объект текстуры, совместно использовав единственный ресурс.
Используйте textureWithImageNamed:
метод для создания SKTexture
объект. Когда объект текстуры инициализируется с помощью файла образа, Набор Sprite должен выполнить два шага, прежде чем это сможет использовать текстуру для рендеринга спрайтов. Во-первых, это должно загрузить данные текстуры из файла. Во-вторых, это должно подготовить данные текстуры, которые будут использоваться аппаратным обеспечением машинной графики. Оба из этих шагов могут быть дорогими по сравнению с другими операциями Sprite Kit. В частности загрузка текстуры от файла является очень дорогой. Набор Sprite задерживает загрузку и подготовку текстуры максимально долго и также обеспечивает методы, которые можно использовать для управления этими шагами.
Данные текстуры загружаются когда:
size
метод на объекте текстуры вызывают.Другой метод вызывают, который требует размера текстуры, такого как создание нового
SKSpriteNode
возразите, что использует объект текстуры.Один из методов предварительной нагрузки вызывают (См. Предварительно загружение Данных Текстуры.)
Данные текстуры подготовлены к рендерингу когда:
Спрайт или частица, использующая текстуру, являются частью представляющегося дерева узла.
Один раз SKTexture
объект готов к рендерингу, это остается готовым, пока не удалены все сильные ссылки к объекту текстуры.
Объекты текстуры могут быть созданы из данных, сгенерированных во время выполнения. Например, можно создать текстуру из Кварца 2D изображение из данных необработанного пикселя, или путем применения Базового фильтра Изображения к существующей текстуре. Можно также вызвать textureFromNode:
метод для рендеринга дерева узла в текстуре. Ни одна из этих текстур не должна быть загружена, потому что их данные уже находятся в памяти, когда создается текстура. Однако текстура должна все еще быть подготовлена Набором Sprite, прежде чем это сможет использоваться для рендеринга.
Если у Вас есть текстуры, которые должны быть обновлены во время выполнения, видеть SKMutableTexture
класс.
Управление памятью текстуры
Объекты текстуры могут использовать много памяти, в зависимости от размера Ваших исходных данных. И часто, память, доступная подготовленным текстурам, ограничивается аппаратными средствами, потому что текстуры должны быть загружены в VRAM. Так, большинство игр должно тщательно управлять памятью, используемой текстурами. Рассмотрите следующие советы при создании игры:
Получите доступ к текстуре, возражают только при необходимости и избавляются от объекта, когда Вы уверены, что он больше не необходим Вашей игре. Это освобождает память и делает ее доступной для других объектов текстуры.
Избегите загружать слишком много текстур в единственной передаче через цикл рендеринга. Если Вы делаете, Набор Sprite может пропустить один или несколько кадров, чтобы закончить загружать данные текстуры. Вместо этого предварительно загрузите свое содержание прежде, чем запустить Вашу игру.
При частом использовании тех же текстур одновременно для рендеринга спрайтов, не загружайте каждую текстуру из отдельного файла изображений. Вместо этого сгруппируйте изображения текстуры логически в один или несколько атласов текстуры. Используя текстуру атлас сокращает общую сумму памяти, требуемой загрузить текстуру, и может также сократить количество рисования передач, требуемых представлять сцену.
Для более длительного обсуждения управления текстурой посмотрите Работу со Спрайтами.
Текстуры карты нормалей
Текстура карты нормалей подобна текстуре изображения, но вместо того, чтобы содержать данные изображения, которые будут выведены на экран на экране, каждый элемент текстуры представляет вектор нормали. Текстуры карты нормалей используются для моделирования 3D освещения (см. normalTexture
свойство) или используемый для генерации скоростных значений (см. SKVelocityFieldNode
класс).
Можно создать карты нормалей двумя различными способами. Во-первых, можно взять существующую карту изображения и использовать ее для генерации карты нормалей. Набор Sprite фильтрует цветные данные в текстуре и затем использует его для генерации карты на основе пиксельного контраста. Также можно загрузить регулярный файл образа, но обработать его как карту нормалей. Чтобы сделать это, предоставьте текстуре 32-разрядный RGBx
пиксельные данные. 8-разрядное целочисленное значение каждого компонента отображается на числе с плавающей точкой между значениями -1.0
и 1.0
. Используйте a 0
представлять -1.0f
, значение 127
представлять 0.0
, и значение 255
представлять +1.0
.
Разделение на подклассы примечаний
Этот класс не может быть разделен на подклассы.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
Печатаемый
-
Reflectable
-
NSCoding
-
NSCopying
-
NSObject
Оператор импорта
Swift
import SpriteKit
Objective C
@import SpriteKit;
Доступность
Доступный в OS X v10.9 и позже.
-
Создайте новый объект текстуры из файла образа, сохраненного в комплекте приложений.
Объявление
Swift
convenience init!(imageNamed
name
: String)Objective C
+ (instancetype)textureWithImageNamed:(NSString *)
name
Параметры
name
Имя файла образа.
Возвращаемое значение
Новый объект текстуры.
Обсуждение
Новый объект текстуры инициализируется с именем файла образа, и затем управляйте возвратами сразу к Вашей игре. Набор Sprite загружает и подготавливает данные текстуры, когда это необходимо Вашей игре.
При загрузке данных текстуры Набор Sprite ищет комплект приложений файл образа с указанным именем файла. Если соответствующий файл образа не может быть найден, Набор Sprite ищет текстуру в любых атласах текстуры, сохраненных в комплекте приложений. Если указанное изображение не существует нигде в пакете, Набор Sprite создает изображение текстуры заполнителя.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Создайте новый объект текстуры из объекта изображения.
Объявление
Swift
convenience init(image
image
: NSImage)Objective C
+ (instancetype)textureWithImage:(NSImage *)
image
Параметры
image
Изображение.
Возвращаемое значение
Новый объект текстуры.
Обсуждение
Данные изображения копируются, прежде чем управление возвращается к Вашей игре.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Создайте новый объект текстуры из Кварца 2D изображение.
Объявление
Swift
convenience init(CGImage
image
: CGImage!)Objective C
+ (instancetype)textureWithCGImage:(CGImageRef)
image
Параметры
image
Кварц 2D изображение (
CGImageRef
) объект. Для получения дополнительной информации посмотрите Кварц 2D Руководство по программированию и Ссылка CGImage.Возвращаемое значение
Новый объект текстуры.
Обсуждение
Данные изображения копируются, прежде чем управление возвращается к Вашей игре.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Создает новую текстуру из подмножества существующей текстуры.
Объявление
Objective C
+ (instancetype)textureWithRect:(CGRect)
rect
inTexture:(SKTexture *)texture
Параметры
rect
Прямоугольник в координатном пространстве модуля, указывающем часть текстуры для использования.
texture
Текстура для создания новой текстуры из.
Возвращаемое значение
Новый объект текстуры.
Обсуждение
Возвращенный объект текстуры совместно использует те же данные текстуры как исходный объект текстуры, означая, что только одна копия данных текстуры сохранена в памяти.
Если Вы вызываете этот метод на текстуре, самой создававшейся с помощью этого метода, исходная текстура используется в качестве источника вместо этого. Т.е. прямоугольник считается в исходной системе координат текстуры. Другими словами Вы не можете сделать подтекстуру подтекстуры, не вычисляя координаты сами.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Создает новую текстуру путем применения Базового фильтра Изображения к существующей текстуре.
Объявление
Swift
func textureByApplyingCIFilter(_
filter
: CIFilter) -> Self!Objective C
- (instancetype)textureByApplyingCIFilter:(CIFilter *)
filter
Параметры
filter
Базовый фильтр Изображения, требующий сингла
inputImage
параметр и производитoutputImage
параметр.Возвращаемое значение
Новый объект текстуры.
Обсуждение
Данные изображения копируются, прежде чем управление возвращается к Вашей игре.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Создает новую текстуру из данных необработанного пикселя.
Объявление
Параметры
pixelData
NSData
объект, содержащий растровые данные. Пиксели должны составить 32 бит/пкс, 8bpc (целое без знака) пиксельные данные RGBA. Компоненты цвета должны были быть уже умножены на альфа-значение.size
Размер новой текстуры в точках.
Возвращаемое значение
Новый объект текстуры.
Обсуждение
Данные изображения копируются, прежде чем управление возвращается к Вашей игре.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Создает новую текстуру из пользовательских отформатированных данных необработанного пикселя.
Объявление
Параметры
pixelData
NSData
объект, содержащий растровые данные. Пиксели должны составить 32 бит/пкс, 8bpc (целое без знака) пиксельные данные RGBA. Компоненты цвета должны были быть уже умножены на альфа-значение.size
Размер новой текстуры в точках.
rowLength
Число байтов памяти для использования на строку битового массива.
alignment
Смещение между отдельными пикселями пиксельных данных. Указать
0
для плотно упакованных данных.Возвращаемое значение
Новый объект текстуры.
Обсуждение
Данные изображения копируются, прежде чем управление возвращается к Вашей игре.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Создает новую текстуру из данных необработанного пикселя.
Объявление
Параметры
pixelData
NSData
объект, содержащий растровые данные. Пиксели должны составить 32 бит/пкс, 8bpc (целое без знака) пиксельные данные RGBA. Компоненты цвета должны были быть уже умножены на альфа-значение.size
Размер новой текстуры в точках.
flipped
Булево значение, указывающее, должны ли данные изображения быть вертикально зеркально отражены прежде, чем создать текстуру.
Возвращаемое значение
Новый объект текстуры.
Обсуждение
Данные изображения копируются, прежде чем управление возвращается к Вашей игре.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает текстуру карты нормалей путем анализа содержания существующей текстуры.
Объявление
Swift
func textureByGeneratingNormalMap() -> Self!
Objective C
- (instancetype)textureByGeneratingNormalMap
Возвращаемое значение
Новый объект текстуры, содержащий карту нормалей.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
textureByGeneratingNormalMapWithSmoothness (_: контраст:) - textureByGeneratingNormalMapWithSmoothness:contrast:
Создает текстуру карты нормалей путем анализа содержания существующей текстуры.
Объявление
Swift
func textureByGeneratingNormalMapWithSmoothness(_
smoothness
: CGFloat, contrastcontrast
: CGFloat) -> Self!Параметры
smoothness
Число между
0.0
и1.0
при указании, насколько текстура должна сглаживаться, прежде чем сгенерирована карта нормалей. Значение0.0
средние значения, что текстура не сглаживается вообще прежде чем быть обработанным.contrast
Значение раньше увеличивало эффект сгенерированной карты нормалей. Значение
1.0
указывает, что не применяется никакое увеличение.Возвращаемое значение
Новый объект текстуры, содержащий карту нормалей.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает новую текстуру, содержание которой процедурно сгенерировано направленные шумовые данные.
Объявление
Swift
convenience init!(vectorNoiseWithSmoothness
smoothness
: CGFloat, sizesize
: CGSize)Параметры
smoothness
Значение, указывающее, как подобные соседние элементы текстуры будут в получающейся текстуре. Значение должно быть между
0.0
и1.0
. Значение1.0
генерирует гладкую поверхность.size
Размер новой текстуры в точках.
Возвращаемое значение
Новая шумовая текстура.
Обсуждение
Шумовая текстура tileable с собой. Значения RGB, сохраненные в текстуре, могут использоваться в качестве направленных данных (XYZ). Альфа-значения также рандомизируются и могут использоваться в качестве данных величины при желании.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает новую текстуру, содержание которой процедурно сгенерировано окрашенное шумовыми данными.
Объявление
Swift
convenience init!(noiseWithSmoothness
smoothness
: CGFloat, sizesize
: CGSize, grayscalegrayscale
: Bool)Параметры
smoothness
Значение, указывающее, как подобные соседние элементы текстуры будут в получающейся текстуре. Значение должно быть между
0.0
и1.0
. Значение1.0
генерирует гладкую поверхность.size
Размер новой текстуры в точках.
grayscale
Если
YES
true
, все четыре компонента каждого элемента текстуры будут иметь равные стоимости. ЕслиNO
false
, все четыре значения полностью рандомизируются.Возвращаемое значение
Новая шумовая текстура.
Обсуждение
В отличие от других текстур, произведенных Набором Sprite, элементы текстуры не предварительно умножаются на альфа-значение. Ваши пользовательские программы построения теней должны компенсировать это по мере необходимости.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
filteringMode filteringMode
СвойствоКогда размер спрайта, нарисованного с текстурой, не нарисован в собственном размере текстуры, режим фильтрации использовал.
Объявление
Swift
var filteringMode: SKTextureFilteringMode
Objective C
@property(nonatomic) SKTextureFilteringMode filteringMode
Обсуждение
Возможные значения для этого свойства перечислены в
“Texture Filtering Modes”
. Значение по умолчаниюSKTextureFilteringLinear
.Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Размер текстуры.
Возвращаемое значение
Размерности текстуры, измеренной в точках.
Обсуждение
Если текстура создавалась с помощью файла образа и что файл образа не был загружен, вызывание этого метода вынуждает данные текстуры быть загруженными из файла.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Прямоугольник, определяющий часть текстуры, раньше представлял ее изображение.
Возвращаемое значение
Прямоугольник в координатном пространстве модуля.
Обсуждение
Значение по умолчанию является прямоугольником, покрывающим всю текстуру
(0,0)
-(1,1)
. Вы не можете установить это значение непосредственно; для использования только части текстуры используйтеtextureWithRect:inTexture:
метод для создания новой текстуры.Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
См. также
-
usesMipmaps usesMipmaps
СвойствоБулево значение, указывающее, пытается ли текстура генерировать, множественно отображается.
Объявление
Swift
var usesMipmaps: Bool
Objective C
@property(nonatomic) BOOL usesMipmaps
Обсуждение
Значение по умолчанию
NO
false
. Если Вы устанавливаете это вYES
true
, Набор Sprite создает, множественно отображается для текстуры, когда это подготавливает текстуру к рендерингу. Множественно отображается приводят дополнительную память в рабочее состояние (обычно одна треть больше), но может повысить качество рендеринга и производительность, когда текстура сокращена в размере (такой как тогда, когда Вы сокращаете масштаб спрайта, представленного с помощью текстуры).Можно только запросить, множественно отображается, если обе из размерностей текстуры являются питанием два.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Загрузите данные текстуры в память, вызвав обработчик завершения после того, как завершится задача.
Объявление
Swift
func preloadWithCompletionHandler(_
completionHandler
: (() -> Void)!)Objective C
- (void)preloadWithCompletionHandler:(void (^)(void))
completionHandler
Параметры
completionHandler
Загружается блок, вызванный после данных текстуры.
Обсуждение
Набор Sprite создает фоновую задачу для загрузки данных текстуры из связанного файла, затем возвращает управление игре. После того, как данные текстуры загружаются, Ваш обработчик завершения вызывают. Как правило, Вы используете этот метод, когда Вы хотите гарантировать, что определенная текстура находится в памяти прежде, чем получить доступ к нему.
Если необходимо предварительно загрузить многократные текстуры сразу, используйте
preloadTextures:withCompletionHandler:
метод вместо этого.Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Загрузите данные текстуры многократных текстур в память.
Объявление
Swift
class func preloadTextures(_
textures
: [AnyObject]!, withCompletionHandlercompletionHandler
: (() -> Void)!)Objective C
+ (void)preloadTextures:(NSArray *)
textures
withCompletionHandler:(void (^)(void))completionHandler
Параметры
textures
Массив
SKTexture
объекты.completionHandler
Загружается блок, вызванный после всех текстур.
Обсуждение
Набор Sprite создает фоновую задачу, загружающую данные текстуры для всех текстур в массиве, затем возвращающую управление Вашей игре. Ваш обработчик завершения вызывают после того, как все текстуры загружаются.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-
Режимы фильтрации текстуры для использования, когда текстура нарисована в размере кроме его собственного размера.
Объявление
Swift
enum SKTextureFilteringMode : Int { case Nearest case Linear }
Objective C
typedef enum SKTextureFilteringMode : NSInteger { SKTextureFilteringNearest, SKTextureFilteringLinear, } SKTextureFilteringMode;
Константы
-
Nearest
SKTextureFilteringNearest
Каждый пиксель нарисован с помощью самой близкой точки в текстуре. Этот режим быстрее, но часто пикселизируются результаты.
Доступный в OS X v10.9 и позже.
-
Linear
SKTextureFilteringLinear
Каждый пиксель нарисован при помощи линейного фильтра многократных элементов текстуры в текстуре. Этот режим приводит к более высоким качественным результатам, но может быть медленнее.
Доступный в OS X v10.9 и позже.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.
-