2016-12-03 18 views
0

그래서 사이드 스크롤러에서 작업하고 있습니다. 각 레벨에는 맞춤 클래스 플레이어가있는 스프라이트가 있습니다. 스프라이트가 유휴 애니메이션으로 설정되는 것을 결정하는 텍스처가 있지만 각 레벨의 텍스처를 참조 용으로 적용했습니다.텍스처를 추가하면 크래시가 발생합니다 ... (캐치되지 않는 예외 'NSInvalidArgumentException')

각 레벨에서 제대로 작동하는 것 같습니다.

예. 내 레벨 2는 내 레벨의 주요 플레이어 인 원숭이 스프라이트와 같습니다.

enter image description here

그러나, 두 가지 수준에서이 선수 스프라이트에 대한 변경은 게임 충돌이 발생합니다. 나는 untextured sprite로서 그 일을 맡겨야 만한다. 어떤 종류의 변화라도 게임은 충돌을 일으킨다. 예를 들어 새로운 텍스처를 추가하면 다음 오류가 발생합니다.

예. 여기서 그것은 untextured하게해야합니다 또는 나는 충돌을 얻습니다. enter image description here

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid size specified: {6, -2.6005233764648423}' 
*** First throw call stack: 
(
    0 CoreFoundation      0x00000001041a534b __exceptionPreprocess + 171 
    1 libobjc.A.dylib      0x000000010389e21e objc_exception_throw + 48 
    2 CoreFoundation      0x000000010420e265 +[NSException raise:format:] + 197 
    3 SpriteKit       0x0000000104d5060c -[SKSpriteNode initWithTexture:color:size:] + 204 
    4 SideScrolleriOS      0x00000001030248e5 _TFC15SideScrolleriOS8PlatformcfT7textureGSqCSo9SKTexture_5colorCSo7UIColor4sizeVSC6CGSize_S0_ + 661 
    5 SideScrolleriOS      0x00000001030785e6 _TFC15SideScrolleriOS14MovingPlatformcfT7textureGSqCSo9SKTexture_5colorCSo7UIColor4sizeVSC6CGSize_S0_ + 246 
    6 SideScrolleriOS      0x00000001030786e6 _TToFC15SideScrolleriOS14MovingPlatformcfT7textureGSqCSo9SKTexture_5colorCSo7UIColor4sizeVSC6CGSize_S0_ + 86 
    7 SpriteKit       0x0000000104d5157a -[SKSpriteNode initWithColor:size:] + 25 
    8 SideScrolleriOS      0x0000000103026ac4 _TTOFCSo12SKSpriteNodecfT5colorCSo7UIColor4sizeVSC6CGSize_S_ + 36 
    9 SideScrolleriOS      0x000000010301f440 _TFCSo12SKSpriteNodeCfT5colorCSo7UIColor4sizeVSC6CGSize_S_ + 96 
    10 SideScrolleriOS      0x000000010301e9c6 _TFC15SideScrolleriOS8Platform13setUpPlatformfCS_6PlayerT_ + 2166 
    11 SideScrolleriOS      0x0000000103077609 _TFC15SideScrolleriOS14MovingPlatform13setUpPlatformfCS_6PlayerT_ + 73 
    12 SideScrolleriOS      0x00000001030a9b0e _TFC15SideScrolleriOS9GameScene7didMovefT2toCSo6SKView_T_ + 12430 
    13 SideScrolleriOS      0x00000001030b6aaa _TToFC15SideScrolleriOS9GameScene7didMovefT2toCSo6SKView_T_ + 58 
    14 SpriteKit       0x0000000104d12c57 -[SKScene _didMoveToView:] + 198 
    15 SpriteKit       0x0000000104d3152e -[SKView presentScene:transition:] + 364 
    16 SideScrolleriOS      0x000000010309018d _TFC15SideScrolleriOS4Home8loadGamefT_T_ + 13805 
    17 SideScrolleriOS      0x000000010308cb1f _TFC15SideScrolleriOS4Home13pressedSelectfT_T_ + 4159 
    18 SideScrolleriOS      0x0000000103054cff _TFFC15SideScrolleriOS4Home12touchesBeganFTGVs3SetCSo7UITouch_4withGSqCSo7UIEvent__T_U_FTCSo6SKNodeGSpV10ObjectiveC8ObjCBool__T_ + 1375 
    19 SideScrolleriOS      0x0000000103043774 _TTRXFo_oCSo6SKNodedGSpV10ObjectiveC8ObjCBool___XFdCb_dS_dGSpS1____ + 68 
    20 SpriteKit       0x0000000104d4a946 -[SKNode _processSearchTokens:visited:usingBlock:stopPointer:] + 2729 
    21 SpriteKit       0x0000000104d4a083 -[SKNode _processSearchTokens:visited:usingBlock:stopPointer:] + 486 
    22 SpriteKit       0x0000000104d49d3a -[SKNode _enumerateChildNodesWithName:usingBlock:stopPointer:] + 1127 
    23 SpriteKit       0x0000000104d49612 -[SKNode enumerateChildNodesWithName:usingBlock:] + 58 
    24 SideScrolleriOS      0x0000000103054591 _TFC15SideScrolleriOS4Home12touchesBeganfTGVs3SetCSo7UITouch_4withGSqCSo7UIEvent__T_ + 737 
    25 SideScrolleriOS      0x0000000103054e96 _TToFC15SideScrolleriOS4Home12touchesBeganfTGVs3SetCSo7UITouch_4withGSqCSo7UIEvent__T_ + 102 
    26 SpriteKit       0x0000000104d2f6d6 -[SKView touchesBegan:withEvent:] + 1145 
    27 UIKit        0x0000000104feba21 -[UIWindow _sendTouchesForEvent:] + 2043 
    28 UIKit        0x0000000104fed3cf -[UIWindow sendEvent:] + 4011 
    29 UIKit        0x0000000104f9a63f -[UIApplication sendEvent:] + 371 
    30 UIKit        0x000000010578c71d __dispatchPreprocessedEventFromEventQueue + 3248 
    31 UIKit        0x00000001057853c7 __handleEventQueue + 4879 
    32 CoreFoundation      0x000000010414a311 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
    33 CoreFoundation      0x000000010412f59c __CFRunLoopDoSources0 + 556 
    34 CoreFoundation      0x000000010412ea86 __CFRunLoopRun + 918 
    35 CoreFoundation      0x000000010412e494 CFRunLoopRunSpecific + 420 
    36 GraphicsServices     0x0000000108cb4a6f GSEventRunModal + 161 
    37 UIKit        0x0000000104f7c964 UIApplicationMain + 159 
    38 SideScrolleriOS      0x0000000103109ecf main + 111 
    39 libdyld.dylib      0x000000010c7c568d start + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 

내 레벨 2를 복제하고, 원숭이 스프라이트와 카메라를 제외한 모든 삭제 (그리고 자녀의), 다음 문제 수준에서 모든 것을 붙여

  1. 하여 오류를 해결하기 위해 노력했습니다 (untextured sprite와 그것의 카메라를 제외하고). 오류가 계속 발생합니다.

Xcode 7에서 문제가 발생하지 않았지만 Swift 3 및 Xcode 8로 전환하면 이상한 오류가 발생했습니다.

나는이 두 가지 문제를 모두 시도했다. 나는 그것을 이해할 수 없다. 게임 빌드는 잘 풀지 않으면 그대로 작동합니다. 장면 편집기에서 텍스처를 추가 할 수 있습니다. 하지만 빌드가 충돌합니다.

하지만 편집 참조를 위해 스프라이트를 텍스처링하는 것이 도움이 될 것입니다. 누구든지 아이디어가 있습니까?

+0

텍스처 크기가 6, -2.6 – Knight0fDragon

+0

예외를 해결할 때 '잘못된 크기 지정 : {6, -2.6005233764648423}'과 같이 '이유'다음 부분에주의하십시오. 텍스처의 높이는 -2가 될 수 없습니다. 어쩌면 클래스에 잘못된 텍스쳐 크기를 계산하는 레벨을 관리하는 코드가있을 수 있습니다. 또한 예외 중단 점을 설정할 수도 있습니다. http : // stackoverflow.com/questions/17802662/exception-breakpoint-in-xcode; 문제가 어떤 라인에서 왔는지 보여줍니다. –

답변

0

예외 브레이크 포인트를 추가해도 문제의 원인이되는 코드 줄이 표시되지 않았습니다.

오류와 마찬가지로 내 코드의 일부가 음수 크기를 계산하고있었습니다. 내가 발견 한 방법은 자산을 "나쁜 수준"에서 실무 수준으로 조금씩 복사하는 방법이었습니다. 나는 물건이 추락 할 때까지 이것을했다. 이렇게함으로써 문제를 하나의 자산 유형으로 분리했습니다.

내 코드의 일부가 내 플레이어 텍스처 크기에 의존하여 계산됩니다. 이 계산은 거의 음수가되지 못했지만 ... 그 두 가지 수준에서 발생했습니다. 그래서 플레이어 텍스처를 제거하는 것은 빼기가 아닌 숫자가 음수가되는 것을 방지하기 때문에 임시 수정으로 작동했습니다.