我還沒有找到任何好方法來設計面向協議的遊戲項目體系結構。如何以面向協議的方式創建我的遊戲架構?
繼承人的第一個版本對於結構:
protocol Usable {
func useItem()
}
protocol Item {
var name: String { get }
var amount: Int { get }
var image: String { get }
}
struct Sword: Item, Usable {
var name = ""
var amount = 0
var image = ""
func useItem() {
}
}
struct Shield: Item, Usable {
var name = ""
var amount = 0
var image = ""
func useItem() {
}
}
的問題,這是我要複製粘貼它們的代碼在多個項目有很多的變量。
繼承人的第二個版本帶類:
protocol Usable {
func useItem()
}
class BaseItem {
var name = ""
var amount = 0
var image = ""
}
class SwordClass: BaseItem, Usable {
func useItem() {
}
}
這看起來相當不錯,但問題是這些都是引用類型和我寧願他們是值類型。
解決此問題的正確方法是什麼?
大概事情確實有不同的名稱,數量和圖像需要設置在某個地方?你有沒有考慮過使用擴展? – Wain
我正在考慮解析一些JSON並動態設置名稱,圖像文件。在任何情況下,首次初始化時,金額始終爲0。協議擴展不會存儲價值屬性不幸的 – Esqarrouth