我有一個基於SpriteKit的小遊戲。SKLabelNodes drop fps
在這個遊戲中,我使用了很多節點上有字母(或字母組合)的信息,用戶可以四處移動來構建單詞。
這些節點基本上都是帶有SKLabelNodes的SKSpriteNodes。
當我有相當多的節點時,Draw數增加,FPS急劇下降。
顯然,當我刪除SKLabelNodes時,繪製計數保持低。但我仍然需要這些信件。
問題是,在不丟棄FPS的情況下添加這些字母的最佳方式是什麼?
我有一個基於SpriteKit的小遊戲。SKLabelNodes drop fps
在這個遊戲中,我使用了很多節點上有字母(或字母組合)的信息,用戶可以四處移動來構建單詞。
這些節點基本上都是帶有SKLabelNodes的SKSpriteNodes。
當我有相當多的節點時,Draw數增加,FPS急劇下降。
顯然,當我刪除SKLabelNodes時,繪製計數保持低。但我仍然需要這些信件。
問題是,在不丟棄FPS的情況下添加這些字母的最佳方式是什麼?
有三種方式可以做到這一點,每種方式都有不同的妥協。
首先,最容易的是在現有標籤上使用shouldRasterize。 Sprite Kit中的標籤似乎並不存在。 DOH!
將位圖紋理用作對象上的字母,實際上是Sprite,它是Sprite Kit最好處理的東西。這將涉及使用位圖字體生成器,如Whirlwind在評論中指出的優秀BMGlyph。
這樣做並不容易,因爲編碼部分勞動強度會更大一些,但您應該以這種方式獲得絕對最佳的性能。
您也可以交換字母,但您需要將它們視爲紋理的小節而不是字母。將紋理中的每個字母的位置分配給易於記憶的數組或字典都是高性能且易於使用的。但勞動密集型設置。比SKLabelNode更加精確
或者,你可以瘋狂地使用代碼創建紋理,在虛擬對象上使用SKLabelNode,然後將紋理「渲染」或「繪製」到紋理中,然後使用該紋理s)每個字母上的物體/精靈。類似於BMGlyph的工作方式,但更耗時且更不靈活。
BMGlyph是速度和易用性的最佳組合,它也有創造漂亮外觀文字的一些漂亮效果。
將字母繪製成紋理? – matt
@ElleryAree你應該檢查BMGlyph和Glyph Designer。 – Whirlwind
@matt,這可以幫助,我應該試試這個無論如何... 雖然,如果可能我想保留一個可能性來定義任何字母/字母組合的變體,我可以放入節點... –