存储 Sprite Kit 级别数据

2024-02-18

我正在开发一个项目,其中屏幕上会出现一组目标。目标应该同时出现一定数量,并且每次出现之间有一定的延迟。我的问题是如何正确存储该游戏的关卡数据。我正在考虑使用 csv 文件来存储关卡数据(目标类型、位置、延迟等),但我想知道是否有更好的方法来做到这一点。我也考虑过制作一个关卡对象来存储关卡信息,但我不确定。苹果说使用“精灵节点档案”,但我似乎不知道这意味着什么。有什么想法吗?


您是否考虑过使用 plist 文件?这将是最容易解析的。您可以拥有一组目标(字典),然后定义位置、绝对延迟以及您想要的其他内容。

然后将其读入数组:

NSArray *targets = [NSArray arrayWithContentsOfFile:plistPath];
for (NSDictionary *dictionary in targets) {
    CGPoint position = CGPointMake([dictionary[@"positionX"] floatValue], 
                                   [dictionary[@"positionY"] floatValue]);
    float delay = [dictionary[@"time"] floatValue];
    // Do something with this information, maybe create a Target instance etc.
}

您也可以对 CSV 文件执行相同的操作,但解析它们会稍微困难一些(不过也不是太难)。

关于档案,Apple 的意思是所有 Sprite Kit 类都支持 NSCoding。这意味着它们可以存档到文件(或 NSData 对象)中,然后从该存档中取消存档。然而,这与您想要做的不同。存档将创建游戏当前状态的单个“快照”。因此,当用户离开时,保存游戏会很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

存储 Sprite Kit 级别数据 的相关文章

  • iOS 应用程序在被杀死之前平均在后台运行多长时间?

    我需要通过 API 检查后端的应用程序设置更新 因此我不确定在启动时执行此类检查是否足够 或者我需要在应用程序进入前台后立即执行此类检查 当然 这取决于打开的应用程序数量 设备功能 但是关于应用程序可以在后台存活多长时间直到被杀死 有什么一
  • 在 iPad 上使用 UIActionSheet

    Apple 的 UIActionSheet 文档让我感到困惑 首先 在 iPad 人机界面指南中 它说 要了解有关在代码中使用操作表的更多信息 请参阅 iPad 编程指南中的 使用弹出窗口显示内容 但在 使用弹出窗口显示内容 部分中 它根本
  • 将 NSOperation 子类化为并发且可取消

    我无法找到有关如何子类化的良好文档NSOperation并发并支持取消 我阅读了苹果文档 但找不到 官方 示例 这是我的源代码 synthesize isExecuting isExecuting synthesize isFinished
  • 与在后台运行应用程序的一台设备进行多点连接

    我想使用多点连接框架连接 2 台设备 其中一台设备在后台运行应用程序 就像 Firechat 一样 我无法确认这是否有效 我已将其安装在 iPhone 5S 和 4 上 但是他们只是找不到彼此 但我在某处读过这有效 实现这一目标的最佳方法是
  • ALAssetPropertyDate 返回“错误”日期

    我目前正在开发一个项目 需要读取一些 纬度 经度和日期 EXIF 数据 位置数据似乎是正确的 但我得到的日期似乎是 上次修改日期 日期 CLLocation loc asset valueForProperty ALAssetPropert
  • 为什么 Objective-C 数组参数不使用冒号表示法?

    我目前正在从大牧场指南书中学习一些 Objective C 我的理解是 具有多个参数的方法使用冒号来分隔每个参数 但是在阅读有关创建数组的内容时 我发现了以下代码片段 NSArray dateList NSArray arrayWithOb
  • SpriteKit 的相机抖动效果

    有谁知道一些开箱即用的库可能会提供相机抖动等效果SKNode 如果没有 是否有一种简单的方法可以使用动作来实现相机抖动 Thanks 我发现了一种使用 SKAction 的优雅方法 可以摇动你的节点 例如 水平摇动 void shake N
  • 如何正确使用CCSpriteFrameCache和CCSpriteBatchNode?

    我不明白当我将 CCSpriteFrameCache 或 CCSpriteBatchNode 添加到我的 cocos2d 应用程序时我到底做了什么 有人可以解释一下以下几点吗 如果你能解释一些的话会很有帮助 请根据你回答的问题在你的答案前写
  • 如何让 iPhone 发出蜂鸣声?

    什么代码可以让我在 iPhone 上发出标准的蜂鸣声 好吧 这取决于您想要什么样的声音 以下是如何使用 AVFoundation 音频框架播放声音 import
  • 推送通知中的设备令牌

    我只想向某些用户发送推送通知 根据我在苹果文档中所经历的内容 注册推送通知的代码是这样的 void applicationDidFinishLaunching UIApplication app other setup tasks here
  • 将字符串编码为 HTML 字符串 Swift 3

    如何快速编码字符串以删除所有特殊字符并将其替换为其匹配的 html 编号 假设我有以下字符串 var mystring This is my String That s it 然后用它的html编号替换特殊字符 38 39 gt 62 但我
  • 如何从静态图像中读取二维码

    我知道你可以使用AVFoundation使用设备的摄像头扫描 QR 码 现在问题来了 我该如何从静态中做到这一点UIImage object Neimsz 的 Swift 4 版本answer https stackoverflow com
  • 如何在 xcode 中从 nib 文件创建视图?

    我有以下代码来创建视图并将其放入滚动视图中以允许分页代码工作正常 但是我不能做的是从 nib 文件加载视图 换句话说 我想使用 initWithNibName 而不是 initWithFrame void createPageWithCol
  • cllocation 和 mkreversegeocoder

    我尝试使用 cllocation 和 mkreversegeocoder 检索城市名称 在我的 viewdidload 方法中 我是 cllocationmanager self locManager CLLocationManager a
  • 在 iphone safari 浏览器中禁用浏览或选择文件按钮

    我想知道为什么select file or choose file在 iphone safari 中查看网页时 该按钮被禁用 谁能告诉我为什么会发生这种情况有什么方法可以启用它吗 谢谢 因为您无法从 iPhone 上传文件
  • AVAudioPlayer 重置当前播放的声音并从头开始播放

    我在使用 AVAudioPlayer 时遇到问题 我想重置当前正在播放的播放器并再次播放 我尝试以下但没有运气 声音播放一次 但第二次我选择按钮时它会停止声音 第三次再次启动声音 Stop the player and restart it
  • 应用程序图标上的快捷方式项目不适用于 iOS 13

    为了支持应用程序图标上的快捷方式项目 我们在中实现了以下方法SceneDelegate func windowScene windowScene UIWindowScene performActionFor shortcutItem UIA
  • -[MyClassName copyWithZone:] 无法识别的选择器发送到实例

    我的应用程序崩溃了 原因是 MyClassName copyWithZone 无法识别的选择器发送到实例 我有两节课 假设 Class1 和 Class2 Class1 看起来像 Class1 h interface Class1 NSOb
  • 使用 CommonCrypto 的 Swift AES 加密

    我正在开发一个 iOS 应用程序代码7 1 with 斯威夫特2 1我正在尝试进行简单的加密AES 128 位 and PKCS7填充使用通用加密库 该代码有效 但每次我尝试投射NSData反对NSString然后对于 String 我得到
  • 如何查看iOS11屏幕录制是否开启?

    为了检测 iOS11 屏幕录制功能的开或关 我使用了 isCaptured 和 UIScreenCapturedDidChange 通知 当我第一次启动应用程序并在 iOS11 内置屏幕录制功能上时 它会通知选择器方法 值为 True 但是

随机推荐