2015-08-27 19 views
5

Tôi đã làm việc thông qua ví dụ DemoBots và gặp rất nhiều sự cố khi làm cho nó hoạt động trên tất cả các thiết bị.Cách nhận SKAction (tên :) để hoạt động đáng tin cậy?

https://developer.apple.com/library/prerelease/ios/samplecode/DemoBots/Introduction/Intro.html

Vấn đề hiện nay tôi đang gặp là trên một iPad Mini ứng dụng khởi chạy nhưng bị treo khi tải hình ảnh động. Nó bị treo trong AnimationComponent.swift trên dòng tải một hành động từ một tập tin:

let bodyAction: SKAction? 
if let name = bodyActionName { 
    // crash here 
    bodyAction = SKAction(named: name) 
} 
else { 
    bodyAction = nil 
} 

Debugging ứng dụng cho thấy nó cố gắng để tải một SKAction gọi là "ZappedShake" nhưng đâm với một mảng nằm ngoài giới hạn ngoại lệ.

Trên iPhone 5S, nó chạy tốt. Đoán tốt nhất của tôi là tình trạng cuộc đua của nó với iPhone 5S nhanh hơn đang tải tệp với hành động được tuần tự hóa trong đó và do việc thực hiện thời gian đạt đến điểm này, hành động có sẵn. Nhưng trên iPad lõi cũ, tập tin chưa được tải và cuộc gọi không thành công.

Cả hai đều là phần cứng thực chạy iOS9 13A4325c, được biên dịch trên XCode Phiên bản 7.0 beta 4 (7A165t).

Làm cho vấn đề trở nên khó khăn hơn là tôi không thể thấy nơi tệp đã tạo ra "ZappedShake" - ReferenceActions.sks - thực sự được tải. Nó được tham chiếu bởi ReferenceScene.sks nhưng không nơi nào trong bất kỳ mã nào hoặc bất cứ nơi nào khác trong dự án, tôi có thể thấy tệp đó đang được giới thiệu đến.

Có một số loại quy ước đặt cơ chế tải tệp ma thuật cho SKActions không? Tại sao nó hoạt động trên iPhone 5S chứ không phải trên iPad?

UPDATE: Tìm thấy thêm về điều này ở đây: http://asciiwwdc.com/2015/sessions/604

Cũng trong năm này, chúng tôi tập trung vào việc tham khảo và instancing. Chúng tôi biết bạn dành nhiều thời gian để thiết kế nội dung và hoạt ảnh chất lượng cao cho trò chơi của mình và chúng tôi muốn bạn cho phép bạn sử dụng lại nội dung đó ở bất cứ nơi nào bạn muốn.

Chúng tôi cho phép bạn tạo tệp dữ liệu được tuần tự hóa cho các nút và hành động của bạn và sau đó thêm chúng dưới dạng tham chiếu thay vì chỉ tải chúng vào cảnh của bạn.

Bằng cách này, mỗi khi bạn thực hiện thay đổi đối với nội dung nguồn được tự động phản ánh trong nội dung trò chơi của bạn.

Làm cách nào để thực hiện việc này cho các nút? Đối với các nút, tôi thiết kế một phần cảnh của mình, có thể là phần tử nền hoặc một số cảnh trong trình chỉnh sửa của chúng tôi bằng Xcode và sau đó tôi có thể kéo và thả các tệp đó vào cảnh chính của tôi trong Xcode và nó sẽ tự động tạo tham chiếu và là tất cả được thiết lập cho bạn.

Nếu bạn muốn thực hiện điều này bằng mã, bạn có thể tạo SKReferenceNode theo cách thủ công, gán tên tệp hoặc thậm chí URL và nội dung đó được hiển thị lần đầu tiên trong trò chơi của bạn. nội dung đó dựa trên phiên bản mới nhất của tệp có trong gói của bạn. Chúng tôi cũng có thể làm điều tương tự cho hành động. Với các hành động, hãy xem trình chỉnh sửa hành động mới tuyệt vời của chúng tôi và ngoài việc tạo và soạn các hành động trong Xcode, bạn có thể cung cấp cho tất cả các tên đó.

Những tên này là chìa khóa để sử dụng chúng trong trò chơi của bạn.Chúng tôi đã thêm bộ chọn vào SKAction được gọi là actionNamed. Điều này hoạt động giống như đối với SKTexture và textureNamed.

Bạn chuyển vào tên của hành động bạn muốn. Chúng tôi sẽ tự động xem bên trong gói ứng dụng của bạn trong tất cả các tệp tác vụ được tuần tự hóa, tìm tệp có tên thích hợp và sau đó hiển thị nó cho ứng dụng.

Điều này có vẻ tuyệt vời nhưng tôi không thể tìm thấy bất kỳ tài liệu nào về tài liệu đó hoặc tìm hiểu cách gỡ lỗi khi gặp sự cố.

Trả lời

0

Trò chơi DemoBots dường như chạy đáng tin cậy khi được biên dịch bằng Xcode Phiên bản 7.0 beta 6 (7A192o).

Sử dụng một máy khác (máy tính xách tay tại nhà) của tôi với cài đặt Xcode mới mà sự cố sẽ biến mất. Tôi cũng lưu ý rằng lần đầu tiên tôi thử có một vài sửa đổi biên dịch nhỏ mà tôi phải làm như đổi tên CGPoint.zero thành CGPoint.zeroPoint mà tôi cho là có tiếng chuông cảnh báo rằng có một số loại xung đột phiên bản. Lần này với cài đặt mới được biên dịch và chạy ra khỏi hộp.

Tôi vẫn chưa hoàn toàn hiểu cách các hành động tham chiếu được chọn nhưng ít nhất tôi hiện có nhiều phiên bản làm việc của Demobots để tôi có thể sao chép mã làm việc ở đó.

1

Không phải bạn, đó là iOS. Có một lỗi với sự tham khảo hành động ảnh hưởng đến các thiết bị 32-bit

Vấn đề này đã được cố định trong iOS 9.2 Beta 1, theo chủ đề này trên diễn đàn các nhà phát triển của Apple (như iPad Mini.): https://forums.developer.apple.com/thread/17267

Thử chạy trên thiết bị 64 bit mới hơn (như iPhone 6) trong trình mô phỏng. Hoặc thử nâng cấp iPad Mini lên iOS 9.2 Beta 1. Hoặc chỉ cần đợi bản phát hành iOS tiếp theo để khắc phục sự cố.

Các vấn đề liên quan