问题标签 [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.
swift - 如何为使用 imageFromFile 创建的 SKTexture 着色?
我创建了几种形状的png图像,例如六边形和星星,它们都是白色的。
我想为这些 SKSpriteNodes 或 SKTextures 着色,以便我可以分配任何颜色,而不是为我需要的每种颜色创建形状图像并将这些纹理加载到内存中。我需要高分辨率的图像,因此拥有多个图像并将它们加载到内存中并不是一个好的选择,因为我收到了来自 XCode 的内存警告。根据需要将它们加载到内存中也不起作用,因为它们会导致我的游戏延迟大约 0.25 秒。
那么,有什么方法可以创建 1 个 SKTexture 并在需要更改颜色时为 SKSpriteNode 的图像纹理着色?
ios - SpriteKit中“非均匀缩放的纹理”是什么意思?
在SKCropNode
类参考中,给出了一些指定掩码的示例。
他们来了:
这意味着裁剪节点可以使用从一件艺术品派生的简单蒙版,但它也可以使用更复杂的蒙版。例如,以下是您可以指定掩码的一些方法:
将内容限制在场景的矩形部分的无纹理精灵。
带纹理的精灵是精确的每像素蒙版。但也要考虑非均匀缩放纹理的好处。您可以使用非均匀缩放的纹理为可调整大小的用户界面元素(例如健康栏)创建蒙版,然后用动态内容填充蒙版区域。
一组节点可以动态生成一个复杂的掩码,该掩码在每次渲染帧时都会发生变化。
第二个例子介绍了非均匀缩放的纹理:这是什么意思?
这无助于我理解第二个例子!
xcode - 为什么 XCode 比 Illustrator 或 Photoshop 更好地缩放矢量图像?
我尝试使用 XCode 的新 PDF 功能,该功能基本上将图像缩放为 1x、2x 和 3x。不幸的是,我也在使用 Spritekit,所以我宁愿使用 SKTextureAtlases 而不是资产目录。
我的问题是 pdf 的光栅化版本看起来比从 Adobe Illustrator(或使用智能对象的 Photoshop)导出的任何内容都要好。
这是一个带有示例的Imgur 专辑的链接。
具体来说,从 Illustrator 导出的图像有 2 个正方形大小:60 像素和 90 像素。Xcode 中的图像都具有相同的名称,但位于两个不同的图集中:atlas@2x.atlas 和 atlas@3x.atlas。PDF 从 Illustrator 以 30px 正方形导出,然后 Xcode 将其缩放为 2x 和 3x 版本。
那么为什么 Xcode 版本看起来更清晰(尤其是在圆角和平边之间的交界处)?
sprite-kit - 如何正确预加载 SKScenes?
我遇到了与此处描述的完全相同的问题,但是建议的解决方案不起作用。简而言之,当在场景之间转换时,中间的转换被完全跳过,因为演示者加载时间太长。现在我正在寻找一种方法来正确预加载场景的所有内容。我要做的是:
- 在应用程序启动时分配/初始化场景
- 预加载场景之后包含的所有纹理
- 几秒钟后,呈现现场。
第一次触发转换时,它总是被跳过,所有后续尝试都按预期工作。
这是我如何分配/初始化和预加载场景的示例(在启动时):
其中preload
是 SKScene 的一个类别:
我知道加载是异步执行的,并且preload
会立即返回(这是预期的),所以我可以在加载完成之前导致转换,但不管我等待多长时间,它总是滞后。
非常感谢任何提示/帮助!
objective-c - 更改 SKSpriteNode 图像的颜色?
我想知道是否有办法以编程方式更改 SKSpriteNode 的颜色?假设我有一个 SKSpriteNode 的纹理,它是一个具有黑色轮廓和白色填充颜色的框。我如何能够以编程方式将白色填充颜色更改为不同的颜色?(我在想可能是一种自定义方法,它在纹理中搜索白色像素,然后用不同的颜色替换像素)我什至不知道这是否可能。
ios - 精灵套件:imageNamed:或纹理:?
我目前正在开发一个简单的 2d sprite kit 游戏。当我创建背景“图像”对象时,我使用 SKSpriteNode 便利 imageNamed: 初始化器对其进行了初始化。然而,在浏览了一些 spriteKit 文档后,我发现也可以通过使用纹理而不是纹理来设置背景精灵的“图像”:初始化程序。
我想知道哪一个最适合我的场景,一般来说,在哪里使用一个而不是另一个。
这是我目前正在使用的代码 -backgroundImage = SKSpriteNode(imageNamed: "BackgroundImage")
这是我可以用纹理代替的代码:initializer-
var backgroundTexture = SKTexture(imageNamed:"BackgroundImage")
backgroundImage = SKSpriteNode(texture: backgroundTexture)
objective-c - 由于iOS9升级SpriteKit图像不再正确显示
我刚刚更新到 iOS 9,却发现我的应用程序中的多个图像不再显示。由于某种原因,所有 SpriteKit 文本都是黄色的(之前是白色的)。
有问题的图像是 2D 精灵,在 Sprite Kit 中渲染,但显示与不显示之间似乎没有太大的一致性。当然,没有背景显示,并且一些图像显示为白色框(虽然没有红色 X)。
其他精灵是颠倒的,或者在 Y 轴上翻转,就好像坐标系统已经反转了一样。粒子效果似乎不再显示。
我应该在不久前尝试测试版,因为这会破坏我的实时应用程序(我现在已经删除了)。但是有没有其他人经历过类似的事情?或者可能知道出了什么问题?在我看来,这主要是一个 SpriteKit 问题,但是,纹理图集中的所有精灵似乎都工作正常。
更新:
我意识到这是我所有的精灵都不在纹理图集中。我在这里找到了一个论坛帖子:https ://forums.developer.apple.com/thread/13358,上面说 iOS9 需要为代码中的每个资产名称添加“.png”扩展名,或者您可以删除并重新添加所有资产目录中的资产。难以置信的!
This post遇到了类似的问题,显然解决方案是将所有图集添加到XCAssets,然后将您的目标设置为最新的iOS。但是你失去了与 iOS8 的向后兼容性。
ios - 将生成的 SKTexture 保存到文件
我现在已经为下面的问题提交了一个错误。有人有好的解决方法吗?
我尝试保存一个SKTexture
文件,然后再次加载它,但我没有成功。可以将以下代码片段复制到Xcode 启动项目中的GameScene.m中。
我使用textureFromNode
in generateTexture
,这似乎是我的问题的根本原因。如果我使用精灵的纹理,代码可以工作,并且可以看到两艘宇宙飞船。
此代码在 iOS 8 中有效,但在 Xcode7 和 iOS 9 中停止工作。我只想在提交错误报告之前验证这是一个错误。我担心的是我做错了什么NSKeyedArchiver
。
它发生在模拟器和设备上。
雨东更新:
这可能是一个更相关的例子,但想象一下场景由 4 层组成,有很多精灵。当游戏结束时,我想存储比赛结束场景的缩略图。图像将用作按钮上的纹理。按下该按钮将开始播放比赛的重播电影。会有很多带有旧游戏图像的按钮,所以我需要将每个图像存储在文件中。
解决方案/解决方法:
受罗素代码的启发,我做了以下事情。有用!