gpt4 book ai didi

ios - Sprite Kit 纹理表现有趣

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:07:56 25 4
gpt4 key购买 nike

好吧,这个让我对着墙尖叫......所以请耐心等待。

我开始使用 Xcode 中的 SpriteKit 模板编写一个简单的游戏。

我将两个 PNG 添加到名为 Stage01.atlas 的文件夹中,并将其拖到项目中。不记得我是否选择了哪个选项,因为它在项目导航器中显示为蓝色文件夹图标(可能是因为它有扩展名?)。

接下来,我使用实例化了几个 Sprite

[[SKSpriteNode alloc] initWithImageNamed:@"My_Image_Name_Without_The_@2x_Or_Extension"];

起初,它没有用,因为我忘记在build设置中启用纹理图集。然后,它就像一个魅力,但是......

接下来,我向图集中添加了第三个 PNG 以显示一种新的 Sprite 。

新 Sprite 无处可寻。

我尝试全新安装:从设备中删除应用程序,清理,构建。

现在所有的 Sprite 都被渲染成一个白色的四边形,有一个后边框,里面有一个大的红色“X”。我还收到如下控制台消息:

SKTexture: Error loading image resource: "My_Image_Name_Without_The_@2x_Or_Extension"

我尝试删除 .atlas 文件夹并重新添加它,作为“为任何添加的文件夹创建组”“为任何添加的文件夹创建文件夹引用” (这可能导致将资源放置在子文件夹中而不是包根目录中,因此它通常对 UIImage 等很重要),无济于事

我用这个替换了 Sprite 创建代码:

SKTexture* texture = [SKTexture textureWithImageNamed:name];
SKSpriteNode* body = [[SKSpriteNode alloc] initWithTexture:texture];

...并放置断点以查看纹理是否为nil不是

那么,是什么给了?

旁注:与模板捆绑在一起的“宇宙飞船”纹理渲染良好。

旁注 2:有人创建了标签“spritekit”(因此不允许我使用它“因为它已经存在”但它没有作为建议出现)。

最佳答案

要使用纹理图集纹理,首先需要加载纹理图集:

SKTextureAtlas* atlas = [SKTextureAtlas atlasNamed:@"Stage01"];

然后你可以从它的纹理创建 Sprite :

SKTexture* texture = [atlas textureNamed:@"My_Image_..."];
SKSpriteNode* body = [SKSpriteNode spriteNodeWithTexture:texture];

最初这可行的事实可能是因为图像是在没有生成 .atlas 的情况下添加的,即使您随后从项目中删除图像,它们仍将保留在已部署的应用程序包中,因为 Xcode 不会从中删除资源一个应用程序包。所以 Sprite Kit 最初使用的是非图集图像,而不是它找不到这些图像,它不会自动在纹理图集中寻找它们,也不会自动加载图集。

关于ios - Sprite Kit 纹理表现有趣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19862828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com