這取決於你做了什麼以及每個角色除了使用組件之外還做了什麼。 使用gameplayKit我可能更喜歡創建實體類而不僅僅是類。
你是否考慮過只使用1個玩家實體,而不是當你改變角色時你只是爲那個角色移除/添加組件。
說你從攻擊一到跳一個改變,你可以刪除攻擊組件
player.removeComponent....
,並添加跳躍成分
let jumpingComponent = ...
player.addComponent(jumpingComponent)
一般來說,你要確保你的組件儘可能靈活和通用。 例如,您的spriteComponent應該在其init方法中使用圖像字符串/紋理,以便您可以將相同的組件添加到每個實體,但使用不同的圖像。現在
class SpriteComponent: GKComponent {
let node: SKSpriteNode
init(texture: SKTexture) {
node = SKSpriteNode(texture: texture, color: SKColor.clearColor(), size: texture.size())
}
}
您可以同時使用不同的圖像
let character1Texture = SKTexture(imageNamed: "Character 1 image"
let spriteComponent = SpriteComponent(texture: character1Texture)
addComponent(spriteComponent)
也是一樣的動畫和其他組件的同一組件添加到每個字符。
我對待它的方式就是這樣。
說我有一個遊戲,我有10種類型的敵人差不多相同。我可能會試着讓所有10個敵人使用的所有組件都有1個敵方實體類。比我會添加使每個動態唯一或基於我將在init方法中傳遞的enumType的相關組件。
另一方面說,我有3個主要人物,都做了非常獨特的事情,也許它更容易和更乾淨,只是創建3個實體類。另外不要忘記子類化,所以你可以創建1個實體類與所有的共享組件,而不是其他2個實體的子類。
Apple在DemoBots中執行此操作,它們具有TaskBot實體,並且它們都是TaskBot的子類的FlyingBoy實體和GroundBot實體。
它真的取決於你。
這可能是,但是3個角色對於每個動作(例如與wizzard,騎士和bowman的派對)有不同的精靈和動畫,以優化內存和處理管理將不利於移除視覺組件每次添加另一個具有不同參數的視覺** **玩家點擊一個按鈕?或者只是一個可視化組件,其中有3種方法可以在字符之間進行切換,並且在我們決定使用4+的情況下在這個相同的組件中添加另一個,這將是一個好的解決方案嗎感謝您的回答。對問題的答覆我會選擇這個答案作爲解決方案= D –
很難確定最佳的方法是什麼,有很多可能性。你可以使用3個實體。你的Sprite組件應該在它的init方法中傳遞一個圖像名稱字符串,這樣你可以給3個實體使用相同的Sprite組件,但是具有不同的紋理。不僅僅是爲實體創建動畫組件等。您可以再次創建1個實體,並使用不同的組件在您的GameScene中創建3個實例。我更喜歡使用除組件外代碼很少的實體子類,因此可能創建3個實體即可 – crashoverride777