2013-11-02 15 views
5

Sprite Kit'in OS X sürümündeki bir oyunu test ediyorum ve bazı dokuların boyutlarını yanlış bildirdiklerini tespit ediyorum. Başka birinin bu sorunu görüp görmediğini ve bunun için bir açıklama olup olmadığını merak ediyorum.Sprite Kiti OS X: SKTexture boyut özelliği hatalı

Sadece bir hata olarak bildirmeden önce diğer sorunları devre dışı bırakmak için. Bu bilinen bir hata ise, lütfen öyle söyle. Bu doku yükleme ediyorum

, boyutu 256x256 piksel: Ben bu görüntüden oluşturulan SKTexture oturum açtığınızda, daha sonra SKTexture açıklama bana doğru boyutu ama size özelliğini verir

enter image description here

öyle değil, resmin 204.8 x 204.8 olduğunu söylüyor.

tex = <SKTexture> 'Tileset_GeometryB.png' (256 x 256) 
tex.size = {204.80000000000001, 204.80000000000001} // Huh? WTF?!? 
tex.textureRect = {{0, 0}, {1, 1}} 

iOS Simülatörü ve cihaz üzerinde aynı kodu kullanarak aynı doku yük - boyut özelliği her zaman doğrudur: 256x256.

Ayrıca, bu dokuları olası yan etkilerden kaçınmak için başka bir şeyden önce yüklemeyi denedim. Yine de doku boyutu yanlış.

Bu, tüm dokularda bunun gerçekleşmediğini, ancak yüklediğim tüm 256x256 dokularda gerçekleştiğini belirtmek ister. Bir 128x256 doku, boyutunu doğru olarak bildirir.

Ayrıca temiz bir yapı yaptım ve Xcode 5.0.1 (5A2053) ile Mavericks (13A603) üzerinde test yapıyorum.

+0

Bunu Apple için bir hata olarak bildirdim. Hata ID: 15377856 – LearnCocos2D

+0

Tamam, bunu yaptıktan hemen sonra tekrar kaydetmek için Seashore'da PNG'yi açtım. Bundan sonra boyut özelliği doğrudur. – LearnCocos2D

cevap

3

neden

[tempTexture preloadWithCompletionHandler:^{}]; 

Bu aynı zamanda açıklayabilir, benim durumumda Inkscape hep suçlu.

Inkscape tarafından oluşturulan PNG dosyalarının düzgün çalıştığı ortaya çıktı, ancak Sprite Kit'in boyutu yanlış bildirmesine neden oldu. Her durumda bu bana oldu, düzeltme sadece PNG dosyasını yeniden kaydetmek için programı zorlamak için Seashore, sonra aynı dosya adı altında "Farklı Kaydet" PNG dosyasını açmak oldu.

Açılış ve kaydetme diğer görüntü programları ile de işe yarayabilir, belki de Önizleme bu veya PNGCrush gibi bir komut satırı aracı düzeltmek için yardımcı olabilir.

Belirli bir tutarlılık da vardır, çünkü Inkscape doku boyutu% 20 daha az, yani 256 doku için 204.8 veya 1 pikselli bir doku için 0.8 olarak bildirilmiştir. Sorun, Inkscape'in ppi (inç başına düşen piksel) ayarında olduğu gibi 90 ppi'nin altındaki değerlere izin vermeyecek gibi görünüyor. Ancak Photoshop'un varsayılan değeri tam olarak% 20 daha az olan 72 ppi'dir. Sprite Kit'in PNG'yi 72 ppi olarak aldığını, 90 ppi görüntü aldığını ve dolayısıyla yanlış (veya doğru olarak?) PNG'nin boyutunu gerçekte olduğundan% 20 daha az olarak hesapladığını kabul ediyorum.

+0

Güzel bul. Görünüşte SVG (ala inkscape) 90 dpi, diğer çoğu program 72 dpi kullanıyor. Sanırım altta yatan suçlu NSImage vs UIImage'ın davranışı, çok sinir bozucu. – bw1024

0

Normal yöntemlerle doku oluşturuyor musunuz yoksa ekranda gerçekten gösteriliyor mu? Günümüzde animasyonlarla ilgili benzer bir sorun yaşadım ve bence bu, tembel doku kaplamaları ile ilgili. Bunları kullanmak zorunda olduğunuz süreye kadar aslında yüklemiyorlar. Bu kullanarak ve boyutunu kontrol etmeyi deneyin: rect Anlaşılan bu konu uyumsuz görüntü programlarıyla kaynaklanır 0,0,1,1

+0

Hayır, aynı sonuç.Doku recti doğru btw'dir, genişlik/yükseklik 1'in tüm genişlik/yükseklik anlamına geldiği faktörde ifade edilir. – LearnCocos2D