GameplayKit是一个面向对象的框架,为构建游戏提供基础工具和技术。 GameplayKit包含用于设计具有功能性,可重用架构的游戏的工具,以及用于构建和增强诸如角色移动和对手行为的游戏玩法特征的技术。
我们这里主要讲GKEntity和GKComponent这二个类;
GKEntity类(实体): 可以容纳很多组件的容器,根据自己的需求来加入相应的Component组件。
GKComponent类(组件):代表一种功能和行为,不同的组件代表不同的功能。
实用功能
:
(1)方便通过聚合多种组件,构建复杂的新实体Entity。
(2)不同的实体GKEntity,通过聚合不同种类的组件GKComponent来实现。
(3)不必重复写组件,组件可以复用,也易于扩展。
(4)实体可以实现动态添加组件,以动态获得或者删除某些功能。
直接通过代码来理解这二个类:
PenguinEntity.swift 是用来管理 Component三个组件的
import SpriteKit
import GameplayKit
class PenguinEntity:GKEntity {
var spriteComponent:SpriteComponent! // 属性 大小 texture
var moveComponent:MoveComponent! // 移动组件功能;
var animationComponent:AnimationComponent! //拍打翅膀的组件;
init(imageName:String) {
super.init()
let texture = SKTexture(imageNamed: imageName)
spriteComponent = SpriteComponent(entity: self, texture: texture, size: texture.size())
addComponent(spriteComponent)
// 加入上下飞动的组件
moveComponent = MoveComponent(entity: self)
addComponent(moveComponent)
// 加入拍打翅膀的动画
let textureAltas = SKTextureAtlas(named: "penguin")
var textures = [SKTexture]()
for i in 1...textureAltas.textureNames.count {
let imageName = "penguin0\(i)"