问题标签 [skreferencenode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
248 浏览

swift - Swift/SpriteKit - 任何方式来池/缓存 SKReferenceNodes?

有没有办法使用 Swift 在 SpriteKit 中池/缓存 SKReferenceNodes?

我正在使用 xCodes 视觉关卡编辑器创建游戏。我正在使用可视级别编辑器创建不同的 .sks 文件,而不是在需要时调用代码。我在代码中调用它们是因为我正在使用它们来创建随机关卡或障碍物,因此我不需要将所有它们一次添加到场景中。

目前我正在这样做

我为 SKReferenceNodes 创建了一个令人信服的 init 方法来使用 URL 对其进行初始化。我这样做是因为有某种错误直接通过文件名调用 SKReferenceNodes ( https://forums.developer.apple.com/thread/44090 )。使用这样的扩展使代码更简洁。

}

而不是在我的场景中,我可以创建它们并像这样添加它们(大约每 10 秒)

这工作正常,但我在创建这些时遇到了一些滞后/口吃。所以我使用 GCD 将其减少到基本上没有口吃。它运作良好,但我想知道是否可以先预加载所有 .sks 文件。

我尝试使用数组来执行此操作,但我遇到了崩溃,它似乎不起作用(我还收到一条消息,已经添加了具有父节点的节点)。

我试图在应用启动时像这样预加载它们

而不是在我需要的时候使用数组。但是这不起作用,我在尝试使用这样的代码时崩溃了

有没有人做过类似的事情?还有另一种方法可以池/缓存这些参考节点吗?我在这里错过了什么吗?

0 投票
1 回答
3001 浏览

swift - 在 SpriteKit SWIFT 中获取 SKReferenceNode 的子节点

我在一个 SKSpriteNode(名称:正方形)和一个 SKLabel(名称:标签)内创建了一个场景 Case.sks(使用关卡编辑器)。在我的主要场景 GameScene.sks 中,我使用带有“Case”的 SKReferenceNode 作为参考。

我需要从我的主场景中访问“方形”精灵。

我的第一个想法是直接调用子节点:

但我得到了:

所以我尝试了:

但我上了 firstSquare 线:

如何获得参考场景的子节点?

0 投票
2 回答
1489 浏览

swift - 将 SKReferenceNode/SKScene 添加到 SpriteKit 中的另一个 SKScene

我想在我的主 GameScene 中添加一个 SKScene。SKReferenceNode 似乎是一个很好的解决方案。

我有: - GameScene.sks(主场景) - Countdown.sks(添加到 GameScene 的场景) - Countdown.swift(自定义类,如何初始化它?SKScene?SKReferenceNode?SKNode)

我不知道如何使用我的类 Countdown 以编程方式添加我的倒计时。

我试过了:

但我有以下错误:

我还尝试了一些更简单的方法,例如:

但我不知道如何使用 Countdown.sks 文件来初始化课程。

我知道我也有可能创建一个 SKNode 类,并以编程方式 100% 初始化它,但使用关联的 .sks 文件以使用 Xcode 场景编辑器对我来说非常重要。

0 投票
1 回答
251 浏览

swift - 以编程方式使用 SKReferenceNode 时遇到问题

我打算制作一个街机游戏,其中屏幕分为两半。每次玩家开始游戏时,这一半的背景都会有所不同。

我想将我的背景设计成不同的 .sks 文件,然后以编程方式使用 SKReferenceNode 将其中两个随机加载到我的 GameScene 中。

问题是 sks 内容被视为 SKScene,因此显然不能将其添加为我的场景的子项:

我想知道是否有办法让编译器将我的 SKReferenceNode 视为 SKSpriteNode,但由于 SKReferenceNode 和 SKSpriteNode 不相关,因此尝试向下转换不起作用。

我知道每当我创建一个更大的 sks 场景、拖动两个 SKReferenceNodes 然后将它们的引用设置为单个背景时它都会起作用,但问题是我想随机选择两个每次都不同的背景,所以我必须找到一种以编程方式而不是通过场景编辑器解决此问题的方法。

有什么建议么?

0 投票
1 回答
80 浏览

swift - 裁剪 SKReferenceNode

我已经设置了一个 SKScene 用作 SKReferenceNode。雪橇是一个 SKSpriteNode,在参考节点场景中定义了一个自定义类,所有的狗都是雪橇精灵的孩子。自定义类和使用参考节点都很好,我的问题是我无法“裁剪”场景以仅显示 N 条狗。就好像在将参考节点放入另一个场景之后,该父场景忽略了参考节点的宽度/高度参数,只显示其中的所有内容。那么问题来了,这可能吗?或者 SKReferenceNodes 在父场景中使用时是否不遵守场景宽度和高度属性?

第一张图像是全视图参考场景 (70x425)。第二张图片是当我只希望显示底部的 2 只狗时,当我以编程方式更改高度时框架应该是什么样子。

在此处输入图像描述在此处输入图像描述

0 投票
0 回答
98 浏览

ios - 将延迟添加到 SKEmitter 或 SKReference 到场景编辑器

我正在尝试使用场景工具包来简化一些动画。我想SKEmitter在延迟一段时间后到达现场。生成发射器的SKEmitter数量有限,所以它只在 1 秒内,但我想要这个动画在 2 秒其他动画之后。我可以用代码实现这一点,但如果不是一个不成熟的工具(我的观点),我也会学习场景编辑器的一些简化。任何想法?

0 投票
1 回答
157 浏览

swift - 在 SKReferenceNode 中投射 SKSpriteNode

我在 Xcode 的场景编辑器中构建了一个 Scene1。我已经引用了另一个场景,该场景对此 Scene1 有动画。

现在,我正在尝试丢弃位于 SKReferenceNode 内的 SKSpriteNode。我试图在一个被引用的场景上投射的 SKSpriteNode 的名称是:“sc01eyelid”。

有什么建议我可能会在这里做错吗?

先感谢您。

0 投票
1 回答
69 浏览

swift - 从 GameViewController 更改 SKReferenceNode

我正在使用 SpriteKit 框架在 Swift 中开发游戏。在这个应用程序中,我有 GameScene.sks,其中显示了我的 UI。在该 .sks 文件中,底部菜单有一个 SKReferenceNode。如果用户从 iPhone X 运行游戏,底部菜单将更改其高度。

但是,我在达到这一点时遇到了一些麻烦。我将菜单设置为 SKReferenceNode,因为它用于多个场景 - 所以如果我更改菜单,它将在所有场景中更改(GameScene.sks、GameScene1.sks、GameScene2.sks 等等......)

解决这个问题的最佳方法是什么?如果这是一个明显的问题,我很抱歉,但我一直在看这个问题。

0 投票
1 回答
96 浏览

swift - SpriteKit - Change SKReferenceNode coordinate system

I am currently working at a 2D endless runner in SpriteKit. I create new Level sequences using the Scene Editor and then add them as a SKReferenceNode to the main scene.

The problem is, that I need to get the position of the single nodes inside of the SKReferenceNode, but the ones I get, are relative to the SKReferenceNodes coordinate system and not the main one.

How can I get the position of the nodes relative to the main scene?

0 投票
1 回答
235 浏览

swift - 如何访问 SpriteKit 场景编辑器参考节点上自定义类中包含的 Swift 中的变量?

首先,我想说我是完全自学的,我在互联网上找到了尽可能多的教程,所以如果有某些我不太熟悉的概念,请提前道歉。

好吧,我想就困扰我好几天的事情寻求帮助。

我在 SpriteKit 场景(GameScene)中有一个引用节点(referenceNode),
该引用节点引用了另一个 SpriteKit 场景(referenceScene),
并且这个场景有一个自定义类(referenceClass.swift)。

我在 referenceClass.swift 中有一个名为 trueOrFalse 的布尔变量,我希望能够从我在 gameScene.swift 中的代码中更改值。

我已经尝试通过创建实例来从 SceneEditor 转换为我的代码,就像你会做 SKSpriteNode 和 SKLableNodes 一样,但这似乎不起作用

这是我的自定义课程

这只是我制作的一个小示例项目,因此我可以通过尝试可以找到的不同解决方案来了解这个概念,但没有成功。我意识到我可以创建全局变量,但我试图保持我的代码干净,因为与此节点相关的所有功能都保留在此参考类中。我也被告知它的编程不好?

任何帮助将不胜感激 :)

巴尼