【问题标题】:Xcode 9 Crashing while setting a Texture in SKScene in SpritekitXcode 9 在 Spritekit 的 SKScene 中设置纹理时崩溃
【发布时间】:2018-04-03 09:55:33
【问题描述】:

我目前正在使用 Xcode 在 Spritekit 中构建游戏。更新到 Xcode 9 后,我发现每次通过 .sks 文件设置纹理时,Xcode 都会立即崩溃。我重新启动了计算机,更新了应用程序,重新加载了纹理,但没有任何改变。我有 2017 Macbook Prof 13" w/touch bar。以下是诊断:

Process:               Xcode [577]
Path:                  /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier:            com.apple.dt.Xcode
Version:               9.0.1 (13249)
Build Info:            IDEFrameworks-13249000000000000~2
App Item ID:           497799835
App External ID:       823984564
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           Xcode [577]
User ID:               501

Date/Time:             2017-10-22 17:30:06.029 -0400
OS Version:            Mac OS X 10.12.6 (16G29)
Report Version:        12
Anonymous UUID:        0537A8C3-9FB2-836A-088B-E5D2B7FEB3EB


Time Awake Since Boot: 100 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: SKCRenderer_resource_queue

Exception Type:        EXC_BAD_ACCESS (SIGBUS)
Exception Codes:       KERN_PROTECTION_FAILURE at 0x000000012ceef7b8
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Bus error: 10
Termination Reason:    Namespace SIGNAL, Code 0xa
Terminating Process:   exc handler [0]

VM Regions Near 0x12ceef7b8:
    MALLOC_LARGE           000000012ceaf000-000000012ceef000 [  256K] rw-/rwx SM=PRV  
--> mapped file            000000012ceef000-000000012cf22000 [  204K] r--/rw- SM=COW  
    MALLOC_LARGE           000000012cf31000-000000012cf71000 [  256K] rw-/rwx SM=PRV  

Application Specific Information:
Sending userDidChangeValue: to <SKInspectorTextureProperty: 0x7fadb2219440> from <NSComboBox: 0x7fadb221ad80>
ProductBuildVersion: 9A1004
Performing @selector(userDidChangeValue:) from sender NSComboBox 0x7fadb221ad80

【问题讨论】:

  • 您需要删除并重建您的 SKS 文件

标签: xcode sprite-kit xcode9 sktexture


【解决方案1】:

我解决了崩溃问题。

问题在于您的@2x 和@3x 图像。使用 Assets.xcassets 文件夹中的那些 - SKS 节点将使 XCODE 崩溃。

  1. 仅将 1x 图像添加到您的 Assets.xcassets 文件夹中。
  2. 在您的 SKS 场景中放置一个颜色节点。
  3. 选择纹理
  4. 调整纹理大小。
  5. 稍后添加您的@2x 和@3x 文件。

此解决方案每次都 100% 有效。

【讨论】:

  • 为此感谢您 100 次!由于这个原因,我被困在几个项目的编辑变通方法上几个月了......将资产移动到@1x,并且可以再次编辑而不会崩溃。
  • 几个月后,我从头开始为另一个皮肤/他们重新创建了新的 .sks 文件,这让我为每个皮肤花费了太多时间。现在你救我!!!
【解决方案2】:

哦,我找到了原因 如果您的图像与情节提要上 skspritenode 的当前大小不相等,则会发生这种情况 祝你好运!

【讨论】:

  • 嗯...我的 SpriteNode 的图像和大小都是 110x110,所以比例为 1:1,它仍然崩溃。
  • 您是否尝试在不更改大小的情况下保存它?只是将图像通过编辑器会导致图像元数据发生变化,而 Xcode 似乎对图像元数据很敏感。
【解决方案3】:

在将其设置为纹理之前从图像中剥离元数据。

例如,使用ImageMagick:

convert oldImage.png -strip newImage.png

【讨论】:

    【解决方案4】:

    我发现清理构建工作一次,在此之前我将图像放入 Photoshop 并将它们导出为 PNG,然后将它们放入 assets 文件夹中,这似乎工作了一段时间。但是自从 Mojave 和最新的 Xcode 更新以来,这似乎不再起作用了。我已经向 Apple 提交了 3 个崩溃报告,我花了将近一个小时才能在屏幕上获得 2 个具有正确纹理的精灵。并不是说听起来粗鲁,但苹果需要停止在这个上做一堆橘子,尽快修复!!

    【讨论】:

      【解决方案5】:

      我找到了一个可能有效也可能无效的解决方法,它不可靠,但总比完全不工作要好。我创建了一个空的 SKS 文件并在这个文件中设置了我的所有纹理。然后我将节点复制并粘贴到首选的 SKS 文件中。

      【讨论】:

      • ....这正是我所评论的,这不是解决方法。您的 SKS 文件已损坏
      • 这对我不起作用,如果我创建一个空的 SKS,拖动一个新的 Sprite 并设置它的纹理,仍然会崩溃。为了让它发挥作用,你究竟做了什么? @BCode
      • 当我发布此内容时,我能够制作一个新的 .sks 文件,在该场景中添加我的精灵,然后将它们复制到我想要它们的场景中,但现在它不起作用.我目前的策略是在放入纹理之前清理构建(Shift + Cmd + K),然后立即保存。它大约有 25% 的时间有效,不幸的是,我无法找到真正的解决方法。
      • 我做了你所做的,而且效果很好。到目前为止一切顺利,但是当我退出 Xcode 并想在第二天左右再次在现场工作时,我完全无法打开文件。它太有问题了!您是否也找到了解决方法?
      • 不——我没有遇到过这个问题。尝试复制文件。 Xcode 真的被这些 bug 杀死了。
      【解决方案6】:

      Apple 论坛上有一个很好的解决方法。

      如何修复您的 .sks 文件:

      • 在项目外打开您的 .sks 文件(关闭您的项目并直接从 Finder 打开文件)

      • 您应该看到红色十字而不是 Sprite,删除所有这些的纹理名称信息。

      • 现在,您应该可以从项目中重新打开文件了。

      • 最后,重新输入所有 Sprite 的纹理名称。

      【讨论】:

        【解决方案7】:

        我只有一个精灵纹理有这个问题,导致 Xcode 精灵编辑器崩溃(即使在删除 @2x 和 @3x 图像之后)。它的图像 DPI 为 300 像素/英寸。我将其更改为与其他精灵纹理匹配的 72 像素/英寸。没有更多的崩溃。

        我希望这对某人有所帮助。 Xcode 的 sprite 编辑器中的这个错误已经存在于相当多的 Xcode 版本中,并且是真正的生产力杀手。继续向苹果提交这些错误报告。

        【讨论】:

          【解决方案8】:

          我想是因为你的电脑:MacBook Pro(13 英寸,2017 年),这也是我现在的工作站。

          我在以下安装了 Mojave 10.14 和 Xcode 10.1 的计算机上测试了相同的项目(仅由具有相同纹理图像的游戏模板创建):

          Mac mini 服务器(2012 年末) iMac,27 岁(2011 年中) MacBook Pro,13(2014 年中) MacBook Air,13(2014 年中) MacBook Pro,15(2014 年中) 上述所有计算机都运行良好。

          当我通过 AirPlay 投影我的 MacBook Pro(13 英寸,2017 年)时,发生了一件更奇怪的事情,它不再崩溃了。

          【讨论】:

            【解决方案9】:

            我遇到了同样的问题,对我有用的是绕过使用 .xcassets 一起。我只是在我的项目中添加了一个文件夹并将图像导入到该文件夹​​中。之后,在场景编辑器中分配纹理不再导致 Xcode 崩溃

            【讨论】:

              猜你喜欢
              • 2014-03-21
              • 1970-01-01
              • 2018-03-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-10-08
              • 1970-01-01
              相关资源
              最近更新 更多