问题标签 [skscene]
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.
ios7 - 如何停止音频 SKAction?
目标:我要呈现一个新场景:
并结束当前的背景音乐以开始新的背景音乐(2级的新背景音乐)。
问题:出现新场景时,1.场景(level1)的背景音乐一直播放,即使离开小游戏也不会停止,因为整个游戏由几个小游戏组成。
播放的音乐是一个 SKAction:
到下一个级别的转换发生在这里:
在注释代码行中,您可以查看我已经尝试过的内容以及无效的内容。这 :
什么都没做。这:
线路仅停止过渡,但音乐仍在继续。
我尝试了以下方法: - 在 a 上使用了弱或强属性:
保护指向 SKAction 的指针,以便我可以使用“withKey”属性访问它,因为我在“initWithSize”中初始化了 SKAction。有人写道,SKAction 是一个即发即弃的对象,我理解为没有存储指向它的指针,以后访问它是不可能的(直接)。但是,它没有工作/帮助我。
我查看了许多其他 stackoverflow 帖子,但没有一个对我有帮助,或者至少给了我一个线索,为什么会发生这种情况:
SKAction playSoundFileNamed 停止背景音乐
...想法:似乎该动作是通过创建 SKScene 对象来创建的。它与它“挂钩”并在音频持续时间后完成。当我使用 repeatForever 时,它永远不会停止。但是,没有办法暂停或停止它。我还尝试将 SKAction 连接到 SKSpriteNode。当 SKScene 被加载时,动物也会被加载。所以我尝试在 SKSpriteNode 上挂接 SKAction 并使用 SKSpriteNode 中的 removeAllActions 等,但它也不起作用。
我检查了有关 SKAction、SKView、SKScene、SKSpriteNode 的文档,但最后它对我没有多大帮助。
看起来该对象存在于某个运行其操作的地方。
错误不是关于什么:
它不是模拟器或设备相关的错误 - 我已经在模拟器和设备上测试了它,结果相同(错误)。
这不是与项目相关的错误 - 我已经在一个单独的项目中对其进行了测试,它要小得多并且具有相同的结果(错误)。
临时解决方案:我一直在使用 AVFoundation 框架中的 AVAudioPlayer 类。我创建了一个:
这并没有太大帮助,因为我想在加载 level2 时更改背景歌曲,并且我在从嵌套的 SKScene 结构访问属性时遇到了巨大的问题。
任何建议、线索、提示或想法都会有很大帮助。
ios - skscene UIViewController 从 SKScene 发送短信
我试图让玩家在游戏结束时通过短信分享他们的分数。
我已将框架导入到我的项目中。在我的 viewController.h 文件中导入。
这是我的 viewController.h 文件
我也尝试像这样导入 MyScene.h:
当我想显示 SMS 共享时,我在 MyScene.m 文件中使用此代码
但是在这条线上
我收到“'MyScene' 没有可见的@interface 声明选择器'presentViewController:animated:completion:'”错误。
我试图搜索过去几个小时。试试天知道其他帖子/教程中有多少变化和示例(学习一些与此无关的东西很好)。似乎没有什么工作。我开始用完头发拔掉。所以任何帮助都会很棒。我相信对于你们中的一些大师来说,这应该是在公园里散步。谢谢。
编辑:我没有使用情节提要,或按钮/菜单/游戏等的视图控制器......因此我无法从 viewController 本身调用该函数。
编辑: 所以我尝试了 Paulw11 在他的链接中建议的内容。现在我有以下错误。
在我的视图控制器中
我收到“在‘MyScene’类型的对象上找不到属性‘MyViewController’”错误
也在 MyScene.m 中
[_MyViewController 发送短信]; 行我得到一个“‘MyViewController’没有可见的@interface声明选择器‘SendSMS’”
编辑 2: *编辑 2: *编辑 2: *编辑 2: *
我得到它来打开短信。小问题,它不允许我解雇它/取消。
这是我的发送短信代码:
这是我的解雇代码:
编辑 3
以下代码在正确的时间为我提供了 NSLog,但不会关闭窗口。
ios - 奇怪的 EXC_BAD_ACCESS SpriteKit removeSubsprite 崩溃
我是新手SpriteKit
,刚刚制作了我的第一款游戏。在 iOS 7.1 之前,一切都运行良好。现在,经过几次提升到一个新的水平并呈现一个新的Scene
,它崩溃了。我不认为我以不正确的方式呈现它:
我收到一个EXC_BAD_ACCESS
错误,看起来它正在发生removeSubsprite
,但我在我的代码中找不到要删除子精灵的任何地方:
不确定要提供哪些其他信息,因为这只是我更新到 iOS 7.1 SDK 时似乎开始的一个晦涩错误。
ios - 如何完全卸载 SpriteKit 场景
当我在游戏中点击重试按钮时,我希望它重新加载 MainScene。我正在这样做:
但是,这会导致每次重试时内存/CPU 使用率都会增加(很多)。大约重试 10-20 次后,会有明显的延迟。
我将我的所有 SKEmitterNode 和 SKSpriteNode 设为静态并修复了内存问题,所以我怀疑我的精灵、发射器等没有从内存中释放,并且每次重试时都会重新加载,使其翻倍。
我正在像这样加载精灵/发射器:
我是在加载精灵还是重试错误?
ios - 如何从 MenuScene 中的 SKNode 按钮调用排行榜
我收到以下警告:
不兼容的指针类型将“MenuScene”发送到“uiviewcontroller”类型的参数
我想通过单击菜单场景中的此按钮从 Game Center 调用排行榜。
在最后一条车道上,我收到了警告
sprite-kit - 在场景转换之前预卷带有 AVPlayer 的 SKVideoNode?
我正在使用AVPlayer
一个SKVideoNode
附加到场景的。那是唯一的节点SKScene
。我正在播放该视频与一组加载了各种SKSpriteNode
节点的其他场景混合在一起。
我想预先滚动,以便视频在过渡AVPlayer
期间开始播放之前(或)它变得可见。SKScene
然而,如果没有中间的黑色闪光,我似乎无法这样做。
就像包含视频的场景消失一样,我将其重置(我将 AVPlayer 对象填充到SKVideoNode
的用户字典中)。这似乎有效:
当包含视频的场景即将出现时,我这样做:
然后...
如果不从视频前的短暂黑色开始,这将不起作用。
有人成功了吗?
我有一个令人难以忘怀的怀疑,a 上的所有内容SKScene
在其过渡期间都被暂停,并且没有办法绕过它。好吧,除了过渡出当前场景的所有节点,保留当前场景,并SKVideoNode
在其上过渡一个新节点。
ios - 关闭 SKScene 后,内存仍然很高
我使用 dispatch_once NSObject来创建数据指针。所以所有的游戏资源指针都是在主视图控制器出现的时候生成的。为了玩游戏,用户在UIViewController上点击对应于特定级别的UIButton。让我称之为LevelSelectionController。游戏结束后,用户将点击一个标签 ( SKLabel )。并且所有动作和节点都将被删除。
此外,特定关卡的SKScene子类将返回用户到 LevelSelectionController 的任务委托给呈现游戏SKView的视图控制器,如下所示。
我唯一的问题是当用户离开游戏场景(SKScene)时内存仍然很高。游戏需要大量资产。所以当游戏开始时,内存使用会跳到 200 MB。当用户返回到原来的关卡选择视图控制器时,根据Activity Monitor,游戏模拟器仍在消耗 200 MB 。当用户进入不同的关卡时,内存使用量将再跳跃 10 MB。那么一旦用户离开SKScene,如何释放最后一场比赛的内存呢?
我正在使用ARC。Xcode 版本是 5.1。开发目标是iOS 7.1。
谢谢您的帮助。
-- 编辑 1 --
我很笨。我知道问题是什么。当我关闭场景时,我正在创建一个新的 SKView,然后我将其设置为 nil 以退出当前场景。有用。但这不应该是这样做的方式。相反,我需要在呈现它之前将当前的 SKView 设置为一个变量。当我关闭场景时,我需要将该变量设置为 nil。嗯……我没想到。
-- 编辑 2 -- 当前场景以 nil 呈现时几乎没有变化。从 removeFromSuperview 中删除它并没有多大作用。
ios - 如何在 Objective-C 的不同视图中共享本地变量
我现在正在制作休闲游戏。
我想在推特上分享分数。
我的这个工作图像如下。
1.玩家玩游戏后有得分。
2.当游戏进入gameoverscene时,他们可以推推特按钮(使用social.framework)
3.有这样的文字“你得到了xx分数!!” 在推特显示(模态)中。
*我想将 xx 更改为共享分数。
你能给我一些建议吗?我是Objective-C的初学者。所以,简单的方法对我来说更好。渐渐地,我想关注安全性和可扩展性。
[信息] *MainScene 和 GameOverScene 由 SKScene 制作
主场景.m
GameOverScene.m
视图控制器.m
sprite-kit - 如何在 SpriteKit 中调用更新方法?
我的 ViewController.h:
但我不知道如何调用更新方法。
ios - 在 skscene 问题中暂停/播放
我有一个正在开发的演示游戏,并在场景中实现了暂停播放功能。这两个功能都可以正常工作。暂停将停止所有动作,播放将恢复除一个动作之外的动作。以下是我在触摸开始时实现暂停/播放功能的方式:
我还更新了更新方法中的时间,以便考虑当前时间并暂停操作正常工作。
这是僵尸动作方法:
我对这种方法的唯一问题是(正如我之前提到的)在按下播放按钮后移动僵尸的调用[self moveZombieToward:touchLocation];
不起作用,所以在按下播放按钮后我不能再移动角色了。其他动画效果很好,但角色不再通过触摸移动。有人可以帮助了解我做错了什么吗?