问题标签 [sktexture]

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 投票
0 回答
440 浏览

ios - 我应该在精灵套件的属性中缓存纹理吗?

我正在为我的游戏中的图像资产使用地图集。我在我的游戏场景开始时预加载了我所有的地图集,SKTextureAtlas preloadTextureAtlases这在我开始使用它时产生了很大的不同。这是我的问题:

我是否应该为每个将一次又一次地应用于生成的怪物或拾取精灵的纹理创建一个属性?还是因为我在我的游戏场景中预加载了我的地图集,所以它完全没有必要的开销?

下面是 Monster 类中的 2 个非常简单的示例。

缓存纹理:

不要缓存纹理。

0 投票
1 回答
136 浏览

swift - 为什么我无法使用 SKPhysicsBody 构造函数?

我正在快速使用 spritekit(ios8,xcode 6)。当我使用物理体构造函数self.physicsBody = SKPhysicsBody(texture: myTexture, size: myTexture.size())时,它每次都失败,并出现以下错误:

但是,当我切换回像 'SKPhysicsBody(rectangleOfSize: ...)' 这样的物理体构造函数时,它工作得很好......但是,我想使用基于纹理的物理体。为什么会发生此错误,我该如何解决?

0 投票
1 回答
181 浏览

ios - 场景编辑器:没有@2x 无法指定纹理名称

我正在设置一个测试 Sprite Kit 场景文件 (*.sks),我计划将它用于 iPhone6 和 iPhone6 Plus。我的 Spaceman 艺术作品有两个版本,称为:

  • Spaceman@2x.png(50 x 50 像素,25 x 25 点)
  • Spaceman@3x.png(75 x 75 像素,25 x 25 点)

我希望场景编辑器能让我只指定“Spaceman”,然后根据我正在运行的设备选择正确的图像(有点像你在没有指定@2x 或 .png 的代码中所做的那样) . 但似乎我必须按其全名选择纹理的图像。

我注意到,如果我选择“Spaceman@3x.png”,它会按比例缩小并在 iPhone6 上以 25 x 25 点正确显示,但通过这种方式,我根本不需要理会@2x 图像。

谁能指出我正确的方向,我是在 iPhone6 上使用@2x,在 iPhone6 Plus 上使用@3x,还是我只使用@3x 图像而我们使用它们?

在此处输入图像描述

0 投票
2 回答
949 浏览

ios - 如何将两个 SKTexture 合二为一

我正在尝试为游戏创建一个背景并有两个背景图像。我可以使用两个不同的 SKSpriteNode()、SKTexture、SKAction.sequence..etc 和一些数学将它们拼接在一起,但结果有点不稳定,而且我似乎无法正确计算数学。它们应该能够组合成一个长时间变化的背景,但它总是会抵消。

有人可以告诉我如何将两种纹理组合成一个,这样我就不必为数学而烦恼。或者,如果有人在我的数学中发现了一些错误,你能指出来吗?两个背景的宽度相同,均为 1200 像素

}

0 投票
1 回答
74 浏览

swift - 无法可靠地验证 SKSpriteNode 的纹理

我正在尝试编写一个测试来验证我的场景中的 SKSpriteNode 具有正确的纹理。测试看起来像这样:

SKTexture的sameAs方法通过以下扩展实现:

问题是有时测试通过,有时测试失败。我已经更改了代码,以便在失败时保存图像,并发现测试失败,因为即使第一个图像是正确的,第二个图像也是完全黑色的。怎样做才能使测试可靠地通过?此故障发生在 iPad2 的模拟器上。

0 投票
1 回答
155 浏览

ios - 如何规避这个讨厌的 SKTexture 错误?

在启动我的 iOS SpriteKit 项目后,我在后台预加载了一些精灵。NSGenericException每 10 次左右的方法都会以inside失败main。我怀疑[SKTexture loadImageData]与问题直接相关,因为它通过查找纹理来枚举集合。

我知道这个问题,但提出的解决方案并没有真正帮助。这是我的堆栈跟踪,感谢您的任何评论。

更新

在为子类 sprite 的副本明确地重新使用相同的纹理后,异常只发生在 main 中(但仍然具有相同的频率)。这就是我构建节点树的方式:

  1. 显示菜单时预SKSpriteView加载最后播放的关卡。


    /li>
  2. 在 中LEGameplaySceneLEWorldBuilder从包含节点位置的 csv 文件中获取数据。


  1. 解析 CSV 并通过调用的LEWorldBuilder方法创建精灵,LESpriteFactory然后将其添加到“根”世界节点的不同层和/或将它们分组到数组中以动态添加(对象剔除)。

LESpriteFactory处理新对象的创建,如下所示:

虽然每个精灵缓存并重复使用它SKTexture的副本:

0 投票
1 回答
145 浏览

swift - SKPhysicsBody 仅使用 SKTexture 的一部分

我正在使用带有图像的 SKTexture 并设置SKPhysicsBody. 像那样:

现在开始游戏后,我注意到physicsBody 设置错误。我已激活该showPhysics属性,我的图像如下所示:

在此处输入图像描述

如您所见,唯一使用的SKPhysicsBody是左中角的小部分(蓝色边框)。

如何更改它以便使用整个图像?

0 投票
1 回答
711 浏览

sprite-kit - SpriteKit:你如何突出显示场景的一部分,就像在教程中一样?

我正在尝试在游戏中创建一个教程,该教程通过部分 UI 并突出显示它们,同时使场景的其余部分变暗。

我想我可以用 Sprites 和 SKBlendMode 做到这一点,但这些在苹果参考指南中解释得不好。

任何想法?

0 投票
2 回答
4308 浏览

ios - 来自 UIImage 的 SKTexture 尊重纵横比

我正在将图像设置为 a 的背景,其SKScene代码类似于以下内容

这可以将图像作为场景的背景插入,但如果图像与background节点的纵横比不同,则会拉伸以填充它。

(左边是裁剪图像以适应 的纵横比时SKSpriteNode的结果,右边是图像具有不同纵横比时的结果)

有没有办法让 SKSpriteNode 尊重图像的原始纵横比,以 aUIImageView可以设置为使用的方式UIViewContentModeScaleAspectFill

编辑 将提及更改UIViewContentModeScaleAspectFitUIViewContentModeScaleAspectFill,将它们混淆了。

0 投票
1 回答
372 浏览

swift - Swift 多维纹理数组

我正在尝试将一堆动画纹理从纹理图集中加载到数组中,但是在尝试将帧附加到数组时出现错误。

基本上我想要一个多维纹理数组,其中每一行代表一个动画,它是一个帧数组。像这样的东西:

我初始化了一个这样的数组:

但是当我尝试像这样将纹理附加到数组中时

我在这一行收到一条错误消息:

关于如何解决这个问题的任何想法?