logo资料库

SpriteKit编程指南(中文版).pdf

第1页 / 共111页
第2页 / 共111页
第3页 / 共111页
第4页 / 共111页
第5页 / 共111页
第6页 / 共111页
第7页 / 共111页
第8页 / 共111页
资料共111页,剩余部分请下载后查看
说明:本文翻译自 Apple 官方的《Sprite Kit Programming Guide》,利用 Chome 浏览器的自动翻译功能作初译,然后在一些语句不顺或容易造成误解的地方作局 部修正。方便英文不好的开发者查看。如有错漏之处,欢迎大家指出修正。 同时欢迎大家关注我的技术博客 http://blog.csdn.net/it_magician。大家的支 持是我最大的动力。 Sprite Kit编程指南 关于Sprite Kit 重要提示: 这是 API 或开发技术的一个初版文档。虽然本文档的技术准确性已被审阅过,但 这还不是最终版本。这个苹果的机密信息仅用于适用的苹果开发者计划的注册会员。苹果公司提 供这些机密信息来帮助你计划采用本文所述的技术和编程接口。此信息如有变更,根据这份文档 实现的软件,应该用最终的操作系统软件和最终文档进行测试。本文档的新版本可能会与 API 或技术的未来种子一起提供。 Sprite Kit 提供了一个图形渲染(rendering)和动画的基础,你可以使用它让任意纹理(textured) 图像或精灵动起来。Sprite Kit 采用的是传统的渲染循环,允许在渲染前处理每一帧的内容。你 的游戏确定场景的内容,以及这些内容如何在每帧中变化。Sprite Kit 做的工作,就是有效地利 用图形硬件来渲染动画的帧。Sprite Kit 优化到本质上允许对动画每一帧的任意修改。 Sprite Kit 还提供了其他对游戏非常有用的功能,包括基本的声音播放支持和物理模拟。此外, Xcode 中提供了内置的 Sprite Kit 支持,可以很容易地创建并在你的应用程序中使用复杂的特 效和纹理图册(atlases)。这种框架和工具的组合,使 Sprite Kit 对于游戏和其他需要类似动 画的应用程序是一个很好的选择。对于其他类型的用户界面动画,使用 Core Animation 代替。
概览 Sprite Kit 在 iOS 和 OS X 可用。它使用主机设备提供的图形硬件,以高帧速率复合 2D 图像。 Sprite Kit 支持多种不同类型的内容,包括: • 无纹理或有纹理的矩形(精灵) • 文本 • 任意基于 CGPath 的形状 • 视频 Sprite Kit 还提供了裁剪和其他特效的支持,允许你对全部或者部分内容应用这些效果。你可以 在每一帧中活动(animate)或者改变这些元素。你也可以附加物理体到将这些元素,使他们正 确地支持武装和碰撞。 通过支持丰富的渲染基础和处理所有低级别的工作来提交 OpenGL 的绘图命令,Sprite Kit 允 许你全神贯注解决更高层次的设计问题,并创造伟大的游戏。
在精灵视图内由呈现场景绘制精灵内容 动画和渲染由 SKView 对象执行。你在一个窗口在放置这个视图,然后渲染它的内容。因为它 是一个视图,所以它的内容可以结合在视图层次里的其他视图。 你的游戏中的内容会被组织成场景(scenes),用 SKScene 对象代表它们。场景包含精灵和 其他要渲染的内容。场景也实现了每帧的逻辑和内容处理。在任何给定的时间内,视图展示一个 场景。只要一个场景被呈现出来,它的动画和每帧逻辑会自动执行。 要使用 Sprite Kit 创建一个游戏,你要创建一个或多个的 SKScene 类的子类。例如,你可能会 创建单独的场景类,用来分别显示主菜单、游戏画面和游戏结束后显示的内容。你可以很容易地 在你的窗口中使用一个单一的 SKView 对象并在不同场景之间进行过渡。 有关章节: “深入 Sprite Kit”, “ 使用场景间过渡”, “ Sprite Kit 最佳实践” 节点树定义出现在一个场景中的内容 SKScene 类实际上是 SKNode 类的后代。节点是所有内容的基石,而场景对象作为一个节点对 象树的根节点。场景及其后代决定哪个内容被绘制以及它渲染的方式。 每个节点的位置在它的父节点定义的坐标系中指定。节点的内容的其他属性也适用于它后代的内 容。例如,当一个节点是旋转,所有它的后代也跟着旋转。你可以使用节点树构建一个复杂的图 像,然后通过调整最上层节点的属性旋转、缩放并融入整个图像。 SKNode 类绘制任何东西,但它对后代应用于它的属性。每一种可绘制内容 由 Sprite Kit 的不 同子类表示。其他的节点子类不直接绘制内容,但修改它们后代的行为。例如,你可以在场景中 使用一个 SKEffectNode 对象对整个子树应用一个 Core Image 滤镜。通过精确控制节点树 的结构,你确定节点的渲染顺序,让你可以在一个场景中布局(layer)复杂的图形效果。 所有节点对象都是响应者(responder)对象,派生(descending)自 UIResponder 或 NSResponder,所以你可以继承任何节点类来创建接受用户输入的新类。视图类自动扩展响应 链来包含场景的节点树。 相关章节: “使用精灵”, “ 构建场景”, “ 使用其他节点类型”
纹理保存可复用的图形数据 纹理是用来渲染精灵的共享图像。当你需要对多个精灵应用相同的图像时,总是使用纹理。通常 你通过加载存储在你的应用程序 bundle 的图像文件来创建纹理。然而,Sprite Kit 也可以在运 行时从包括核心图形图像在内的其他来源为你创建纹理,或者甚至渲染把节点树成纹理。 Sprite Kit 通过处理较低级别的代码需求来加载纹理和并让它们对图形硬件可用,来简化了纹理 的管理。纹理管理由 Sprite Kit 自动管理。但是,如果你的游戏中使用了大量的图像,你可以通 过控制部分的过程来提高性能。首先,你通过提示 Sprite Kit 纹理很快就需要来做这个。 纹理图册是在你的游戏中一起使用的一组相关的纹理。例如,你可以使用一个纹理图册存储让 一个角色活动需要的所有纹理或渲染游戏级别的背景需要的所有瓷砖。Sprite Kit 用纹理图册来 提高渲染性能。 相关章节: “使用精灵” 动作在场景中由节点执行 使用动作(actions)让场景的内容动起来。每一个动作都是一个对象,由 SKAction 类定义。 你来告诉节点执行动作。然后,当场景处理动画帧,动作就被执行。有些动作在一帧动画内完成, 而另一些在完成前应用变化于多帧动画。动作最常见的用途是改变节点的属性。例如,你可以创 建动作来移动、缩放或旋转节点,或使其透明。然而,动作也可以更改节点树、播放声音、甚至 是执行自定义代码。 动作是非常有用的,但你也可以组合动作来创建更复杂的效果。你可以创建一组同时运行或顺序 运行的动作。你可以让动作自动重复。 场景中也能执行自定义的每帧处理。覆盖你的场景子类的方法来执行额外的游戏任务。例如,如 果一个节点需要每帧移动,你可能会直接每帧地调整其属性而不是使用一个动作来这样做。 相关章节: “添加动作到节点”, “ 高级场景处理” 添加物理体和联合来在场景中模拟物理 虽然你可以控制场景中的每一个节点的确切位置,你经常想这些节点互相交流、碰撞并在这个过 程中告知速度的变化。你可能还需要模拟重力和其他形式的加速度,这些都不在动作系统中处理
的。要做到这一点,你可以创建物理体(SKPhysicsBody),并将它们附加到你场景中的节点 上。每个物理体由形状、尺寸质量和其他物理特性定义。 当场景中包含物理体,场景就在这些主体上模拟物理。一些势力(forces),如重力和摩擦力, 会自动应用。你也可以对物理体调用方法来应用自己的势力。每个主体的加速度和速度会被计算, 然后主体彼此碰撞。然后,模拟完成后,相应的节点的位置和旋转的被更新。 你物理体的交互拥有精确的控制。你确定哪些主体被允许相互碰撞 并单独决定哪些交互可以被 你的应用程序调用。这些回调允许你勾(hook)到物理模拟中创建其他的游戏逻辑。例如,在 一个物理体被另一个物理体击中时,你的游戏可能会销毁一个节点。 场景在一个附加的 SKPhysicsWorld 对象上定义了物理模拟的全局特性。你可以使用物理世界 定义整个模拟的重力,定义模拟的速度,并在场景中查找物理体。你还可以使用物理世界通过一 个联合(SKPhysicsJoint)把物理体连接在一起。连接的主体根据联合的类型模拟在一起。 相关章节: “模拟物理” 如何使用本文档 阅读“深入 Sprite Kit”获得实现 Sprite Kit 游戏的一个概述。然后通过其他章节学习关于 Sprite Kit 功能的细节。一些章节包含建议的练习,以帮助你开发你对 Sprite Kit 的理解。学习 Sprite Kit 的最好方法是实践;把一些精灵放到场景中并实验它们! 最后一章,“Sprite Kit 最佳实践”,进入更详细的使用 Sprite Kit 设计游戏。 先决条件 在试图使用 Sprite Kit 创建一个游戏之前,你应该对应用程序开发的基础知识相当熟悉。 • 在 iOS 上,参见今天开始开发iOS应用程序。 • 在 OS X 上,参见今天开始开发Mac应用程序。 尤其的,你应该熟悉以下概念: • 使用 Xcode 开发应用程序
• Objective-C 语言,包括块(blocks)支持 • 视图和窗口系统 虽然本指南展示了许多有用的创建游戏的技术,它还不是一个完整的游戏设计或游戏开发指南。 参见 当你需要 Sprite Kit 框架的具体细节时,参见 SpriteKit框架参考。 关于如何使用 Xcode 对 Sprite Kit 的内置支持的信息,参见纹理图册帮助和粒子发射器编辑器 指南。 关于在 SKSpriteNode 类的详细说明参见 Sprite Tour。 要了解 Sprite Kit 中的物理系统,参见 SpriteKit物理碰撞。 要深入了解基于 Sprite Kit 的游戏参见代码:Explained Adventure。
深入Sprite Kit 学习 Sprite Kit 最好的方法是在实践中观察它。此示例创建一对场景和各自的动画内容。通过这 个例子,你将学习使用 Sprite Kit 内容的一些基础技术,包括: • 场景在一个基于 Sprite Kit 的游戏中的角色。 • 如何组织节点树来绘制内容。 • 使用动作让场景内容动起来。 • 如何添加交互到场景。 • 场景之间的过渡。 • 在一个场景里模拟物理。 一旦你完成这个项目,你可以用它来试验其他 Sprite Kit 概念。你可以在这个例子的结尾找到一 些建议。 你应该已经熟悉创建 iOS 应用程序之前通过这个项目工作。欲了解更多信息,请参阅今天开始 开发iOS应用程序的。大多数 Sprite Kit 在这个例子中的代码是相同的 OS X。 让我们开始吧 本次练习需要 Xcode 5.0。使用的单一视图的应用程序模板创建一个新的 iOS 应用程序的 Xcode 项目。 在创建项目时,请使用以下值: • 产品名称:SpriteWalkthrough • ClassPrefix:Sprite • 设备:iPad 添加 Sprite Kit 框架到项目中。
创建你的第一个场景 Sprite Kit 内容被放置在一个窗口中,就像其他可视化内容那样。Sprite Kit 内容由 SKView 类 渲染呈现。SKView 对象渲染的内容称为一个场景,它是一个 SKScene 对象。场景参与响应链, 还有其他使它们适合于游戏的功能。 因为 Sprite Kit 内容由视图对象渲染,你可以在视图层次组合这个视图与其他视图。例如,你可 以使用标准的按钮控件,并把它们放在你的 Sprite Kit 视图上面。或者,你可以添加交互到精灵 来实现自己的按钮,选择权在你。在这个例子中,稍候你会看到如何实现场景交互。 配置视图控制器来使用Sprite Kit   1. 打开项目的 storyboard。它有一个单一的视图控制器(SpriteViewController)。选 择视图控制器的 view 对象并把它的类改成 SKView。 2. 在视图控制器的实现文件添加一个导入行。 #import 3. 实现视图控制器的 viewDidLoad 方法来配置视图。 - (void)viewDidLoad { [super viewDidLoad]; SKView * spriteView =(SKView *)self.view; spriteView.showsDrawCount = YES; spriteView.showsNodeCount = YES; spriteView.showsFPS = YES; }
分享到:
收藏