作者m9731526 (#3371)
看板GameDesign
標題[程式] 請教 RPG 的基礎問題:items
時間Fri Mar 25 23:11:55 2016
目前在試著Unity+C#做一個2D RPG,
系統原型參照Elona,精神參照照Mabinogi。
才剛開始而已,想請教各位,
一般都是怎麼寫物品這種大量項目的?
Item
- Consumable
-- Potion
-- Throwable
- Equipment
- Tool
這樣子逐級繼承類別的方式,應該沒什麼問題?
但是如果要逐一為每個物品寫 class 感覺效率不佳……
我是在想製作一個方法專門讀 物品設定清單 文字檔的方法(只供開發使用)去讀跟pars
e字串來將所有物品編入一個放在ItemManager這個class裡的List<Item>,然後將ItemMan
ager序列化存為二進位檔,每次啟動遊戲載入這個檔案,這樣的做法OK嗎?
另外,如果能分享一些 RPG 的經驗談或相關建議就更好了,感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.8.2
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1458918717.A.F9B.html
※ 編輯: m9731526 (42.72.8.2), 03/25/2016 23:18:16
1F:推 wix3000: 雖然看不太懂 但我自己的方式是用裝飾模式生成物品實例03/25 23:32
查了一下裝飾模式,學到東西了,謝謝
舉例來說
我編一個items.txt
內容是一行一個 物品名稱/耐久/品質
在程式內做一個方法來讀 items.txt 為每個物品生成物件後存成二進位檔案(實際的物
品資料庫)
相當於一個迷你開發工具?這樣子我就可以快速地用文字檔編寫總數龐大的所有物品
不太清楚怎麼表達
呃我的問題其實是大家一般都怎麼做比較好?
當然有其他設計模式、資料結構等能教我也非常感謝
※ 編輯: m9731526 (42.72.8.2), 03/26/2016 00:16:20
2F:推 ddavid: 試試版上有大大分享過的組件式架構03/26 00:12
3F:→ ddavid: 版上keyword:組件式03/26 00:12
感謝,了解中
※ 編輯: m9731526 (42.72.8.2), 03/26/2016 00:17:59
4F:推 wix3000: 那我感覺你也可以把物品生成UNITY的腳本物件 03/26 01:48
5F:→ wix3000: 這樣好管理、直觀、而且可以直接對其他組件序列化03/26 01:48
生成Unity的腳本物件?
是指每個物品一個script嗎?
不太懂
6F:推 KanoLoa: 推組件式。道具功能method種類做好,用script設定道具屬03/26 01:48
7F:→ wix3000: 當然缺點就是當你要大改物品系統時會很辛苦03/26 01:49
8F:→ KanoLoa: 性會比較管理。純文字到後面動態實測的時候有夠不方便03/26 01:49
9F:→ KanoLoa: 阿 剛好一起推文 不好意思03/26 01:50
※本來不方便看影片
現在看過影片大概了解了
先試試看組件式
※ 編輯: m9731526 (42.73.133.232), 03/26/2016 09:48:50
※ 編輯: m9731526 (42.73.133.232), 03/26/2016 09:50:10
10F:推 wix3000: 關於我說的你可以查一下 scriptableobject 看看 03/26 10:17
11F:推 ronin728: 能用JSON之類的腳本,存物品資訊與行為函數名稱03/26 10:55
※ 編輯: m9731526 (114.136.4.228), 03/26/2016 11:49:58
12F:推 jasonlu00: ScriptableObject比較快,在editor裡面也比較容易修改03/26 13:42
13F:推 ddavid: Unity就是寫好的組件式架構了 03/26 18:41
14F:推 wix3000: ScriptableObject真的是個坑,一玩就停不下來了 XDD 03/26 21:31
我現在大概的做法是
一個Entity:Monobehavuour來嵌在畫面上的實體上(所有地圖上的物件)
再在這個Entity內建一個List<Components>來管理我自己寫的物品系統、生命值、Buff、
技能之類的組件
請問各位覺得這樣子,會有什麼問題嗎?
※ 編輯: m9731526 (42.73.123.9), 03/27/2016 13:52:44
※ 編輯: m9731526 (42.73.123.9), 03/27/2016 13:54:31