TVOS spritekit游戏数据存档位置

时间:2017-01-02 19:06:01

标签: swift sprite-kit archive tvos

我一直试图将舞台的数据保存为我的TVOS游戏的SKScene档案。我让它在模拟器上工作。但是,TVOS显然没有本地存储来存档。

我可以计算出存档的唯一其他地方是捆绑包本身(由于某种原因不赞成)和云(这似乎很傻,需要连接到云来读取真正应该只是游戏数据来玩游戏)。

我现在还不确定正确的方法是什么。

3 个答案:

答案 0 :(得分:1)

tvOS确实有本地存储空间。但是,它限制为4 GB。

截至2017年1月12日 - Apple现在正在接受最大4GB的tvOS应用程序包。请参阅此处的公告:Now Accepting Larger tvOS Binaries

  

tvOS应用程序包的大小限制已从200 MB增加到4 GB,因此您可以在提交中包含更多媒体,并在安装时提供完整,丰富的用户体验。此外,tvOS应用程序可以使用按需资源在App Store上托管最多20 GB的其他内容。

2017年1月12日之前 - 限制为200 MB。 Apple的文档已经更新,以反映这一变化。

来自documentation

  

您应用的本地存储空间有限

     

tvOS应用包的最大大小 200 MB 4 GB 。此外,您的应用程序只能访问设备本地的500 KB持久存储(使用NSUserDefaults类)。在此有限的本地存储之外,当空间不足时,操作系统必须清除所有其他数据。您可以使用以下几种方法来管理这些资源:

     
      
  • 您的应用可以在iCloud中存储和检索用户数据。

  •   
  • 您的应用可以将所需数据下载到缓存目录中。应用程序运行时不会删除已下载的数据。但是,如果空间不足且您的应用未运行,则可能会删除此数据。不要使用整个缓存空间,因为这会导致不可预测的结果。

  •   
  • 您的应用可以使用按需资源打包只读资源。然后,在运行时,您的应用程序会请求所需的资源,操作系统会自动下载和管理这些资源。了解如何以及何时加载新资产同时保持用户参与对于创建成功的应用程序至关重要。有关按需资源的信息,请参阅On-Demand Resources Guide

  •   
     

这意味着为新Apple TV开发的每个应用都必须能够在iCloud中存储数据并以提供良好客户体验的方式检索它。

如果您的捆绑包超过 200 MB 4 GB 限制,则必须使用Apple上述选项之一。正确的进行方式取决于您的游戏架构,更具体地说,该架构如何处理按需资产。

答案 1 :(得分:1)

UserDefaults有500kb,iCloud KVS有1mb。其他一切都需要在iCloud中。

我会看到你的场景图中的plist / dict有多大,并确定从那里保存它的位置。

  

Apple TV上的存储空间有限,并且无法保证用户下次打开应用时存储在设备上的信息可用。此外,为了跨多个设备共享用户的数据,您需要将用户的信息存储在Apple TV以外的其他位置。 Apple为Apple TV提供了两种共享存储选项:iCloud键值存储(KVS)和CloudKit。

     

对于1 MB以下的小型存储需求,您的应用可以使用iCloud KVS。 iCloud KVS自动同步所有用户设备的信息。只有应用程序的所有者才能访问iCloud KVS存储的信息。您应用的其他用户无法访问此信息。有关更多信息,请参阅在iCloud中设计键值数据。

     

对于大于1MB的大型存储需求,您的应用需要实施CloudKit。 CloudKit允许一个用户存储的信息被另一个用户访问。这在一个用户的操作影响另一个用户的选项的情况下非常有用;例如,用户在游戏期间采取的动作直接影响另一个用户。

https://developer.apple.com/library/content/documentation/General/Conceptual/AppleTV_PG/iCloudStorage.html#//apple_ref/doc/uid/TP40015241-CH10-SW1

如果它很小,我会使用UserDefaults因为它快速而简单,并且将跨平台使用相同的代码。

答案 2 :(得分:1)

  

我一直试图将舞台的数据保存为我的TVOS游戏的SKScene档案。我让它在模拟器上工作。但是,TVOS显然没有本地存储来存档。

你有少量的本地存储...

  

我可以设想将存档放入其中的唯一其他地方是捆绑包本身(由于某种原因不赞成)

您有UserDefaults 500kb本地和iCloud KVS 1mb(最多1024个密钥)用于其他小型存储。

  

和云(这似乎很傻,需要连接到云才能读取真正应该随游戏一起提供的游戏数据)。​​

当你使用Apple库时,你习惯于做傻事,最终:{

  

我现在还不确定正确的方法是什么。

根据图表的大小,使用UserDefaultsCloudKit,然后给Apple写一封愤怒的电子邮件(我们都应该这样做)。