クラフトゲーム開発(クラフトまわり)
クラフト要素を実装していきます。前回までで TopDown Engine のインベントリの扱い方はわかったので、それを応用すれば実装できると思っています。
クラフトの基本
クラフト操作の流れを書き出すと
- クラフトする建物を右クリックし、専用 UI を開く。
- クラフト対象のボタンへのカーソルオーバーで詳細情報がわかる。
- クリックで1回クラフトする。
- 矢などは1回のクラフトで 20 本くらい作られるようにする。
↓Necesse より
実装方針
とりあえずクラフト用のデータ構造を定義します。
基本的にはこの2種類のデータ構造があればよさそうです。
建物名
- この建物でクラフトできるアイテム名 x nアイテム名
- クラフト時に消費するアイテム名, 数 x n
これを YAML で定義するとこんな感じになります。
CraftTables:
- Name: Workbench
Required: {}
Recipes:
- Wood
- WoodenPlank
Items:
- Name: Log
- Name: Wood
Required: { Log: 1 }
ProducedCount: 5
- Name: Wooden Plank
Required: { Wood: 2 }
ProducedCount: 3
これを読み込む処理は YamlDotNet for Unity アセットを使ってこんな感じにしました。
アイテムについては、説明や他の情報も含めた方がよさそうなので必要に応じて追記していきます。
アイテムが消耗品か、装備品か。それぞれでどう処理すべきかとかは、また後で考えます。Lua スクリプトで直接消耗品の効果を記述しても良い気もするのですが、もう少し考えます。
それから、さっきの YAML ファイルを読み込んで表示する UI とか、クラフトボタンを押した処理はまた後で実装します。
まとめと今後の予定
クラフトまわりの実装に着手しました。よいです。
次回は、クラフトの残りを引き続き実装していきます。がんばります。