首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使SKAction(name:)可靠地工作?

如何使SKAction(name:)可靠地工作?
EN

Stack Overflow用户
提问于 2015-08-27 00:37:53
回答 2查看 764关注 0票数 5

我一直在研究DemoBots示例,并且在所有设备上都遇到了很多困难。

https://developer.apple.com/library/prerelease/ios/samplecode/DemoBots/Introduction/Intro.html

目前我遇到的问题是,在iPad Mini上,应用程序会启动,但在加载动画时会崩溃。它在从文件加载操作的行中崩溃:

代码语言:javascript
复制
let bodyAction: SKAction?  
if let name = bodyActionName {
    // crash here  
    bodyAction = SKAction(named: name)  
}  
else {  
    bodyAction = nil  
}  

调试该应用程序显示,它试图加载一个名为“SKAction”的ZappedShake,但它使用的是一个超出界限的异常数组。

在iPhone 5S上,它运行得很好。我最好的猜测是它具有更快的iPhone 5S的竞争条件,它正在加载包含在其中序列化的操作的文件,并且当执行到达此点时,该操作是可用的。但是在单一核心的旧iPad上,文件尚未加载,调用失败。

这两者都是运行iOS9 13A4325c的真正硬件,在XCode版本7.0 beta 4 (7A165t)上编译。

使问题更加困难的是,我无法看到创建"ZappedShake“的文件-- ReferenceActions.sks --实际上是在哪里加载的。它被ReferenceScene.sks所引用,但是在任何代码中,或者在项目中的任何其他地方,我都可以看到该文件被引用。

是否有某种名称约定神奇的SKActions文件加载机制?为什么它在iPhone 5S上工作而不是在iPad上工作呢?

更新:在这里找到更多信息:http://asciiwwdc.com/2015/sessions/604

另外,今年我们的重点是参考和实例。我们知道你花了很多时间为你的游戏设计高质量的内容和动画,我们希望你能让你在任何你想要的地方重用这些内容。

我们允许您为节点和操作创建序列化的数据文件,然后将它们作为引用添加,而不只是将它们加载到场景中。

这样,每次您对源资产进行更改时,都会自动反映在游戏的内容中。

如何对节点执行此操作?对于节点,我设计了场景的一部分,可能是背景元素,或者是编辑器中的一些场景,使用Xcode,然后我可以将这些文件拖放到我的Xcode主场景中,它将自动创建一个引用,并且它都为您设置好了。

如果您想在代码中这样做,您也可以手动构造一个SKReferenceNode,为它分配一个文件名,甚至一个URL,当该内容首次出现在您的游戏中时,我们将根据包中文件的最新版本加载该内容。我们也可以为行动做同样的事情。使用actions,可以查看我们伟大的新动作编辑器,除了在Xcode中创建和组合动作之外,您还可以给出它们的所有名称。

这些名字是在游戏中使用它们的关键。我们在SKAction中添加了一个名为actionNamed的选择器。这就像对SKTexture和textureNamed一样。

你以你想要的行动的名义传递。我们将在所有序列化操作文件中自动查看应用程序包的内部,找到一个具有适当名称的文件,然后将其显示给应用程序。

这看起来很棒,但我无法在上面找到任何文档,或者找出当它出错时如何调试它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-30 05:54:22

当使用Xcode版本7.0beta 6 (7A192o)编译时,DemoBots游戏似乎运行可靠。

用另一台机器(我的家用笔记本电脑)重新安装Xcode,问题就解决了。我还注意到,当我第一次尝试时,我不得不做一些次要的编译修复,比如将CGPoint.zero重命名为CGPoint.zeroPoint,我想这应该会敲响警钟,提醒我们存在某种版本冲突。这一次的新安装,它编译,并运行出盒。

我仍然不完全理解引用操作是如何被获取的,但是至少我现在有了多个Demobots的工作版本,所以我可以在那里复制工作代码。

票数 0
EN

Stack Overflow用户

发布于 2015-11-14 16:53:23

不是你,是iOS。有一个带有操作引用的错误影响32位设备(比如iPad Mini)。

根据苹果开发者论坛上的这个帖子: iOS 9.2Beta 1已经解决了这个问题:https://forums.developer.apple.com/thread/17267

尝试在模拟器中运行最新的64位设备(如iPhone 6)。或者尝试将你的iPad Mini升级到iOS 9.2Beta1,或者等待下一个iOS版本来解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32238883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档