Xcode 9 在 Spritekit 的 SKScene 中设置纹理时崩溃

Xcode 9 Crashing while setting a Texture in SKScene in Spritekit

我目前正在使用 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 文件并在这个文件中设置了我所有的纹理。然后我将节点复制并粘贴到首选的 SKS 文件中。

OHM,找到原因了 如果您的图像与故事板上 skspritenode 的当前大小不相等,则会发生这种情况 祝你好运!

A​​pple 论坛上有一个很好的解决方法。

如何修复您的 .sks 文件:

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

  • 你应该看到红色十字而不是精灵,删除所有它们的纹理名称信息。

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

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

我解决了崩溃问题。

问题出在您的@2x 和@3x 图片上。如果存在于您的 Assets.xcassets 文件夹中 - SKS 节点将崩溃 XCODE.

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

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

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

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

在将图像设置为纹理之前从图像中去除元数据。

例如,使用ImageMagick:

convert oldImage.png -strip newImage.png

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

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

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

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

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

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