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 的当前大小不相等,则会发生这种情况
祝你好运!
Apple 论坛上有一个很好的解决方法。
如何修复您的 .sks 文件:
在项目外打开您的 .sks 文件(关闭您的项目并直接从 Finder 打开文件)
你应该看到红色十字而不是精灵,删除所有它们的纹理名称信息。
现在,您应该可以从项目中重新打开文件。
最后,重新输入所有 Sprites 的纹理名称。
我解决了崩溃问题。
问题出在您的@2x 和@3x 图片上。如果存在于您的 Assets.xcassets 文件夹中 - SKS 节点将崩溃 XCODE.
- 仅将 1x 图片添加到您的 Assets.xcassets 文件夹。
- 在您的 SKS 场景中放置一个颜色节点。
- select 一个纹理
- 调整纹理大小。
- 稍后添加您的@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)时,又发生了一件奇怪的事情,它不再崩溃了。
我目前正在使用 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 的当前大小不相等,则会发生这种情况 祝你好运!
Apple 论坛上有一个很好的解决方法。
如何修复您的 .sks 文件:
在项目外打开您的 .sks 文件(关闭您的项目并直接从 Finder 打开文件)
你应该看到红色十字而不是精灵,删除所有它们的纹理名称信息。
现在,您应该可以从项目中重新打开文件。
最后,重新输入所有 Sprites 的纹理名称。
我解决了崩溃问题。
问题出在您的@2x 和@3x 图片上。如果存在于您的 Assets.xcassets 文件夹中 - SKS 节点将崩溃 XCODE.
- 仅将 1x 图片添加到您的 Assets.xcassets 文件夹。
- 在您的 SKS 场景中放置一个颜色节点。
- select 一个纹理
- 调整纹理大小。
- 稍后添加您的@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)时,又发生了一件奇怪的事情,它不再崩溃了。