Sprite Atlas 和 @2x 图像

2023-11-24

当使用纹理图集(iPhone5)时,我是否必须包含正常和正常@2x尺寸的精灵图像(即使我只针对视网膜设备)。我以为我可以只添加 @2x 版本,但遗憾的是,当我运行应用程序时,精灵出来的效果比应有的要大得多(接近 4x),当我添加正常版本(@ 1x) 图像也添加到图集中。

EDIT:

在Xcode中启动一个新的项目文件,如果您希望图像填充整个设备显示屏(iPhone5/5S在最大分辨率下),您需要使用@2x扩展名(在这种情况下,Xcode 项目中没有“background_003.png”,因此只需 @2x 版本即可)

    // SETUP BACKGROUND FRAME IS {320, 568} POINTS
    // IMAGE "[email protected]" = 640 x 1136 Pixels
    SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"background_003"];
    [background setAnchorPoint:CGPointZero];
    [background setPosition:CGPointZero];
    [self addChild:background];

enter image description here

如果您在没有 @2x 的情况下添加正确大小的图像 (640 x 1136),Xcode 会获取该图像并按设备 2.0 点大小错误地对其进行缩放,从而导致图像大小是显示屏的两倍。

    // SETUP BACKGROUND FRAME IS {320, 568} POINTS
    // IMAGE "background_001.png" = 640 x 1136 Pixels
    SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"background_001"];
    [background setAnchorPoint:CGPointZero];
    [background setPosition:CGPointZero];
    [self addChild:background];

enter image description here

RESULT:

经过今天早上的一些测试后,我现在意识到我的问题是在没有 @2x 后缀的图集中添加精灵帧,然后将它们重命名以包含丢失的 @2x 的结果。看起来,当使用folder.atlas时,Xcode会在引用文件的地方创建一个plist,我找不到这个,并且它似乎只有在您第一次将图集添加到项目中时才会更新。删除并重新添加图集后,Xcode 开始以正确的比例正确显示 @2x 图像。

因此,这个故事的寓意是:如果您更改图集或其内容,请制作一个副本,将其从 Xcode 项目中删除,然后重新添加。以视网膜分辨率创建所有艺术品,并将 @2x 后缀添加到所有文件中,您只需要任何视网膜文件(如果您的目标是非视网膜设备,则不需要 @2x)最后,在代码中引用艺术资源时,不要使用@2x postfix,所以即使你的怪物精灵艺术被称为“[电子邮件受保护]“你应该在代码中将其称为“Monster_0001”,Xcode会在幕后为你计算出@2x位,如果你使用PNG(你应该是),它甚至还会为你添加“.png” 。

// THE ART ASSET ON DISK IS CALLED: "[email protected]"
SKSpriteNode *spriteMonster = [SKSpriteNode spriteNodeWithImageNamed:@"Monster_0001"];

如果您只支持 Retina 设备,只需添加不带 @2x 的文件就可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sprite Atlas 和 @2x 图像 的相关文章

  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • iPhone 的翻译器?

    我对为 iPhone 制作一个解释器很感兴趣 这将是一个实验性的想法 但可能会很棒 我喜欢让我自 己的语言适合移动计算和数学的想法 我查阅了很多资料 发现有关 iPhone 上的口译员的信息很复杂 苹果会允许什么 我见过这个应用程序 这是一
  • 检测 iPhone 屏幕是否打开/关闭

    有没有办法检测 iPhone 的屏幕是打开还是关闭 例如 当按下手机的屏幕锁定按钮时 我一直在使用 void applicationWillResignActive UIApplication application 为此类事件做准备 在大
  • iPhone Dev:从子控制器和 TabBar 中的另一个控制器重新加载表视图的数据

    我正在实现一个笔记管理器应用程序 它在 tabBar 中有一个 tableView 其中显示其笔记的主要信息 访问一个注释时 您可以编辑其属性 在 tabBar 的一个按钮中 您可以选择注释在 tableView 中的显示方式 我遇到的问题
  • 使用标识符启动 iPhone 应用程序

    我正在尝试在我的应用程序中启动应用程序 例如 如果我按下 testApp1 中的按钮 它应该打开 testApp2 有没有办法用应用程序标识符来做到这一点 我听说过一种名为的未记录方法launchApplicationWithIdentif
  • 增加 iPhone 的推送通知徽章

    是否可以在收到通知时增加徽章值 或者我应该将计数作为有效负载发送吗 如果我每次都将徽章值发送为 1 那么如果应用程序未打开 我如何增加应用程序图标中的徽章值 我已经使用了这段代码 但不起作用 void application UIAppli
  • 移动物体而不实际接触物体

    我是 iPhone 开发的初学者 我一直在寻找这个问题的答案 但还没有找到任何东西 我想做的是允许用户移动对象而无需实际触摸该对象 他们可以触摸屏幕上的任何位置 并且当他们移动时 对象将从原来的位置向用户的方向移动移动但不会跳到他们的触摸位
  • 刷新单元格的 UITableView 队列

    我想知道如果调用 UITableView reloadData 时 UITableView 队列被刷新 是否有人可以回复我 我正在尝试这样做 但这对我没有帮助 有什么建议吗 如果你查看 UITableView 的头文件 你可以看到有一个名为
  • 如何打开/关闭 iPhone 相机闪光灯 swift 2?

    我正在寻找如何打开 关闭 iPhone 的相机闪光灯 我发现了这个 IBAction func didTouchFlashButton sender AnyObject let avDevice AVCaptureDevice defaul
  • iOS:GMail API - 通过电子邮件发送附件

    我能够成功发送没有附件的电子邮件 但是 当我尝试使用 GTLUploadParamaters 上传附件时 出现 501 错误 我尝试添加照片库中附件的 NSData 以及仅发送图像的 URL 在这两种情况下我都得到了同样的错误 Create
  • 是否可以通过 UIActivityViewController 共享图像并保留 exif 数据?

    我有一个应用程序 可以通过以下方式将图像保存到相机胶卷中的自定义相册中 library writeImageToSavedPhotosAlbum newTestImage CGImage metadata metadata completi
  • 以编程方式进行排序时检索 ViewController 堆栈

    static func showMenuView parentVC UIViewController let storyboard UIStoryboard name Main bundle nil let resultController
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • 核心蓝牙在后台进行广告和扫描

    我一直在尝试设置一个应用程序 使设备既扫描外围设备又作为外围设备进行广告 目标是当两个设备通过蓝牙发现彼此靠近时在后台被唤醒 从 Apple 文档来看 您似乎应该能够在后台运行 BLE 启用蓝牙中心和蓝牙外设后台模式 并且当一台设备位于前台
  • UITextField 字体大小在开始或停止输入字符时发生变化

    我见过很多线程 但没有找到解决这个问题的任何具体解决方案 我使用 XIB 创建了 UITextfield 尚未以编程方式对该字段执行任何操作 一旦我开始打字 文本字段的字体就会改变 一旦我将焦点移出文本字段 并且随着键盘消失 字体大小就会减
  • iOS 上每个选项的带有图像的操作表

    有没有办法在 iOS 上将图像添加到操作表中 与苹果在应用程序商店或苹果音乐应用程序上所做的一样 我对苹果文档的基本搜索表明我没有在操作表中子类化或添加子视图 UIActionSheet 并非设计为子类化 也不应向其层次结构添加视图 苹果文
  • 为什么单个 Vec4 乘法会大大减慢我的 ogl es 2 片段着色器的速度?

    我正在为 iOS 设备编写 2D OpenGL 游戏 现在 我正在研究 iPad 第一代 上的性能 该游戏有 ogl 1 1 和 2 0 的代码路径 我可以通过 define 使用 ogl 2 0 时 分析器告诉我 我的渲染器利用率 相当稳
  • iPhone 上的最大蓝牙连接数是多少?

    如果您对此有任何见解 那么了解连接之间是否存在很大的延迟也会很高兴 蓝牙协议规定连接是点对点的 因此称为 配对 但不同的站可以同时使用不同的配置文件 每个配置文件一次仅支持一个连接 您可以同时与汽车建立立体声耳机连接并与笔记本电脑建立数据连
  • 维护 UISegmentedControl 中的选择

    我可以保持 UISegmentViewControl 段的选定状态吗 即 即使用户选择了另一个段 也可以保持一个段显示为选中状态 我似乎在任何地方都找不到任何可以做到这一点的东西 这是不可能开箱即用的 看如何才能选择 UISegmented
  • 为什么 GDB 调试器不断冻结 Xcode 4?

    这真是一个奇怪的错误 我正在开发一个使用相机源的 iPhone 项目 并通过 OpenGL 着色器运行它以对其应用效果 然而 每次我在代码中简单地创建一个新的 GLfloat 时 调试器都会在启动时冻结 我无法复制和粘贴文本 因为整个 XC

随机推荐

  • CSS - 将整个图像显示为背景而不裁剪

    我正在尝试设置一个带有背景图像的 div 上面有一些文本 背景图像需要拉伸视口的整个宽度 我已经成功地做到了这一点 这是我的CSS intro header padding top 50px padding bottom 50px colo
  • TestFlight 不接受使用 TestFlight SDK 进行构建

    尝试使用 TF SDK 上传构建版本时 我看到以下错误消息 抱歉 我们不再接受任何使用 TestFlight SDK 的新版本 请删除 SDK 并重新上传 有人知道这方面的信息吗 这样的情况还要持续多久呢 它会被修复吗 难道我做错了什么 有
  • Grails 2.3.2 不工作

    早上好 我创建了一个新项目 Grails 2 3 2 Java JDK 1 7 0 45 当我运行命令时 grails run app 看到以下错误 Configuring classpath nov 09 2013 1 52 27 PM
  • 有没有可行的方法使用JS触发CSS关键帧动画?

    当然 我们可以使用关键帧创建 CSS 动画 并从那里控制它 但是 理想情况下 我想通过单击按钮来触发此动画 因此按钮单击将是一个事件 keyframes fade in 0 opacity 0 100 opacity 1 现在 点击时 我想
  • 通过jdbc执行的存储过程

    我在 mysql 数据库上创建了一些存储过程 但是当我尝试执行它们时 我得到 User does not have access to metadata required to determine stored procedure para
  • 为什么我们不能在COM中使用“虚拟继承”?

    我读过一些模糊的说法虚拟继承没有提供COM所需的内存结构 所以我们必须使用普通的继承 虚拟继承的发明是为了处理钻石问题 有人可以向我展示这两种继承方法之间内存结构细节差异的说明吗 还有关键原因为什么虚拟继承不适合COM 最好有照片 非常感谢
  • 如果激活了多个驱动程序,是否可以获得使用 Selenium 和 Appium 打开的活动驱动程序的 session_id?

    在自动化过程中 我会打开多个浏览器 例如 Firefox driver1 webdriver Firefox driver2 webdriver Firefox driver3 webdriver Firefox 有没有办法获得sessio
  • 如何在 Intellij 15 中降级 Kotlin

    对于我的一个项目 我需要使用 Kotlin 1 0 0 1038 测试版 但要安装它 我可能需要卸载较新版本的 kotlin 但它没有应有的卸载按钮 如何降级 Kotlin IntelliJ IDEA 15 0 4 重要更新 正如 yole
  • 适用于 iOS 的 Google+ SDK 以编程方式添加登录按钮

    至于 G 文档在这里 https developers google com mobile ios sign in 可以使用 XIB 或以编程方式在 UIViewController 中添加登录按钮 我有一个 TableViewContro
  • Asp.net Mvc:列出具有特定属性的控制器上的所有操作

    我试图列出所有控制器及其具有特定属性的操作 以创建动态谷歌站点地图 这样我就可以用属性 标记 某些操作 以便它们显示在站点地图中 Here我找到了如何获得所有控制器 但我不确定如何获取具有特定属性的所有操作 我尝试了 GetMethods
  • Mongoose 检测数据库未准备好

    是否可以检测到数据库未与 Mongoose 一起运行 您只需检查即可判断 mongoose 是否已连接 mongoose connection readyState 0 no 1 yes
  • 同一功能中的“活得不够长”错误

    我希望这段代码能够工作 因为所有绑定都在同一范围内 fn main let mut foobar vec foo let bar bar to string foobar push bar 但我收到此错误 error bar does no
  • 当数组为空时处理错误 9

    我正在编写一个脚本 它将循环遍历 Excel 电子表格并查找所选单元格是否有重复项 如果存在重复项 则该函数将返回一个数组 其中的行是重复的 并创建一条注释来告诉我这些行 我已经能够处理错误 0 但现在当我使用 UBound 函数检查数组中
  • 结构末尾未命名位字段的用途是什么

    我正在学习C C 底漆 我看到一个位域的例子如下 struct box props bool opaque 1 unsigned int fill color 3 unsigned int 4 bool show border 1 unsi
  • 如何从多个列表中获取所有组合? [复制]

    这个问题在这里已经有答案了 我不确定我的问题是否正确 但我不知道如何解释它 所以我有一些清单 比如 a 11 12 b 21 22 c 31 32 我需要得到类似的东西 result 11 21 31 11 21 32 11 22 31 1
  • 查找两个字符变量之间的公共子字符串

    我有两个字符变量 对象名称 我想提取最大的公共子字符串 a lt c blahABCfoo blahDEFfoo b lt c XXABC 123 XXDEF 123 我想要以下结果 1 ABC DEF 这些作为输入的向量应该给出相同的结果
  • 如果 MATLAB 函数返回可变数量的值,我如何才能将所有这些值作为元胞数组获取?

    我正在编写一个函数来从元胞数组中删除一些值 如下所示 function left remove cells item left cells cellfun i isequal item i cells 但是当我运行这个时 left仅具有第一
  • 使用 TeamCity REST API 跟踪构建进度

    我使用 TeamCity 7 0 REST API 来允许开发人员触发自定义构建 我将构建添加到队列中 如下所示 http teamcity httpAuth action html add2Queue buildTypeId name p
  • web.xml 中 servlet 映射的 URL 模式

    我需要在 web xml 中使用此 URL 映射来解决此问题 以创建带有字母 后跟 后跟字母数字字符的任意组合的 URL 我想将 servlet 映射到如下所示 something 代替 something 对不同的 JSP 使用不同的 东
  • Sprite Atlas 和 @2x 图像

    当使用纹理图集 iPhone5 时 我是否必须包含正常和正常 2x尺寸的精灵图像 即使我只针对视网膜设备 我以为我可以只添加 2x 版本 但遗憾的是 当我运行应用程序时 精灵出来的效果比应有的要大得多 接近 4x 当我添加正常版本 1x 图