Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode 11.2场景编辑器是否允许添加组件?_Ios_Swift_Xcode_Sprite Kit_Gameplay Kit - Fatal编程技术网

Ios Xcode 11.2场景编辑器是否允许添加组件?

Ios Xcode 11.2场景编辑器是否允许添加组件?,ios,swift,xcode,sprite-kit,gameplay-kit,Ios,Swift,Xcode,Sprite Kit,Gameplay Kit,使用Xcode 11.2,我可以使用“游戏”模板创建一个新项目。我可以包括“游戏技术”SpriteKit和检查“集成游戏工具包”。如果我现在在iPhone11Pro iOS13.2模拟器上运行代码,我会看到“Hello,World!”标签。如果我进入库并在运行时在位置(0,0)向GameScene.sks文件中添加颜色精灵,我会看到红色精灵。当我添加一个包含内容的Swift文件时,我的问题就出现了 import GameplayKit class MovementComponent : GKC

使用Xcode 11.2,我可以使用“游戏”模板创建一个新项目。我可以包括“游戏技术”SpriteKit和检查“集成游戏工具包”。如果我现在在iPhone11Pro iOS13.2模拟器上运行代码,我会看到“Hello,World!”标签。如果我进入库并在运行时在位置(0,0)向GameScene.sks文件中添加颜色精灵,我会看到红色精灵。当我添加一个包含内容的Swift文件时,我的问题就出现了

import GameplayKit

class MovementComponent : GKComponent {

    override func update(deltaTime seconds: TimeInterval) {
        print(seconds)
    }
}

并使用Xcode中的组件编辑器将此组件添加到颜色精灵中。当我运行这个时,我得到一个灰色屏幕。当我检查GameViewController文件时,我使用调试器看到scene.rootNode为nil。怎么了?我只是想看看如何使用组件编辑器将组件与颜色精灵集成。这些东西能用吗?或者这只是为了WWDC演示?

似乎是Xcode 11.2中的一个bug。按照上述步骤,Xcode 10.3的行为似乎是正确的。填写了苹果反馈FB7427190。感谢Knight0fDragon帮助确定问题所在。

似乎是Xcode 11.2中的一个bug。按照上述步骤,Xcode 10.3的行为似乎是正确的。填写了苹果反馈FB7427190。感谢Knight0fDragon帮助确定问题所在。

我想我今天的帖子是这篇帖子的翻版

似乎Xcode 11.3.1中仍然存在这个问题

如果在场景编辑器中没有将任何组件添加到SKSpriteNode,我会看到该场景完全加载为GameSecene.sceneDidLoad


如果在场景编辑器中添加了一个组件。未加载游戏场景-从未调用GameSecene.sceneDidLoad

我想我今天的帖子是这个帖子的翻版

似乎Xcode 11.3.1中仍然存在这个问题

如果在场景编辑器中没有将任何组件添加到SKSpriteNode,我会看到该场景完全加载为GameSecene.sceneDidLoad



如果在场景编辑器中添加了一个组件。未加载游戏场景-从未调用GameSecene.sceneDidLoad

您是否保留该实体?您需要正确地调用场景来生成组件,然后保留它们。我使用场景编辑器添加了一个颜色精灵,并向该颜色精灵添加了一个我编写的组件(如上所示)。就这样。没有其他代码。直接来自苹果的模板。当Apple的代码甚至没有保留场景时,我应该在哪里添加代码来保留实体。rootNode?我还没有使用11.2,但是当创建GKSecene时,需要提取实体并将其保存在访问实体(或保存GKSecene)所需的位置。这通常是现场。如果您的场景不是自定义的,则将其隐藏在该场景的用户数据中!游戏场景?{sceneode.entities=scene.entities;sceneode.graphs=scene.graphs;…}。如果scene.rootNode为nil,则几乎不起作用,但如果我理解您所写的内容,则这似乎是您的建议。除了MovementComponent.swift文件,我没有使用任何自定义文件。我的问题包括我用来确定这些东西不起作用的每个步骤(除了命名项目)。scene.rootNode不应为nil。如果为nil,则您没有有效的场景,因此您的组件系统将失败。是否保留实体?您需要正确地调用场景来生成组件,然后保留它们。我使用场景编辑器添加了一个颜色精灵,并向该颜色精灵添加了一个我编写的组件(如上所示)。就这样。没有其他代码。直接来自苹果的模板。当Apple的代码甚至没有保留场景时,我应该在哪里添加代码来保留实体。rootNode?我还没有使用11.2,但是当创建GKSecene时,需要提取实体并将其保存在访问实体(或保存GKSecene)所需的位置。这通常是现场。如果您的场景不是自定义的,则将其隐藏在该场景的用户数据中!游戏场景?{sceneode.entities=scene.entities;sceneode.graphs=scene.graphs;…}。如果scene.rootNode为nil,则几乎不起作用,但如果我理解您所写的内容,则这似乎是您的建议。除了MovementComponent.swift文件,我没有使用任何自定义文件。我的问题包括我用来确定这些东西不起作用的每个步骤(除了命名项目)。scene.rootNode不应为nil。如果是nil,那么你没有一个有效的场景,所以你的组件系统将失败。我收到了苹果的一些反馈。他们希望我尝试显式地重写所需的initWithCoder,并支持将GKComponent用作超类的每个类的securecoding方法。这似乎解决了我的一个场景的问题,但不是两个都解决了。这对我也很有效。我刚刚在我的每个组件中添加了以下内容:
override init(){super.init()}required init?(coder:NSCoder){super.init(coder:coder)}override class var-supportsSecureCodeing:Bool{true}
@DonovanVoss-holy crap-真管用!只需要这一行
覆盖类var supportsSecureCoding:Bool{true}
。您应该将此作为答案发布。苹果公司截至2020年7月3日的最新状态是“软件工程需要修复此漏洞,但尚未修复。”嗯。我有一个项目,其中添加这些覆盖适用于许多带有组件的.sks文件,但不是所有文件。我将覆盖代码添加到项目中的所有组件中,但仍有一些.sks文件无法加载(rootNode为nil),尽管在其他情况下,所有文件都可以正常加载。我收到了苹果的一些反馈。他们希望我尝试显式地重写所需的initWithCoder,并支持将GKComponent用作超类的每个类的securecoding方法。这似乎解决了问题