見出し画像

【Unity】3Dローグライクゲームの作り方〜Step9&10-12〜

前回の記事はこちら
前回はアイテムを投げられるようにしました。

EItemの定義

今回からアイテムのデータファイルを作成していきたいと思います。ですがその前に、IDを見ただけで何のアイテムであるかをわかりやすくするために、アイテムIDの列挙定数を定義したいと思います。
EItemスクリプトを作成して下さい。以下のように記述します。

/**
* アイテム定数
*/
public enum EItem
{
   NONE = 0,

   // 装備アイテム
   WEAPON01 = 1,
   ARMOR01 = 11,

   // 消費アイテム
   FOOD01 = 1001,
   FOOD02 = 1002,
   FOOD03 = 1003,
   FOOD04 = 1004,
   FOOD05 = 1005,
   PORTION01 = 1021,
   PORTION02 = 1022,
   PORTION03 = 1023,
   PORTION04 = 1024,
   PORTION05 = 1025
};

なお、この定数は自由に変更して頂いても構いません。ただし、装備アイテムと消費アイテムを区別できるようにするために、消費アイテムは1001番以降を使用するようにしましょう。

EItemTypeの定義

アイテムの種類で分岐させる為に、列挙定数を定義しておきたいと思います。
EItemTypeスクリプトを作成して下さい。そこに、以下のように記述します。

/**
* アイテム種類定数
*/
public enum EItemType
{
   Unknown,
   Weapon,
   Armor,
   Food,
   Portion
};

追加のアイテムモデルのインポート

(2D画像を使用する場合は、この段は飛ばしても大丈夫です)

いつまでも果物のアイテムばかり使用するのもあれなので、新たにアイテムモデルをインポートすることにしました。
使用するものは以下の通りです。

スクリーンショット 2020-05-16 1.47.59

(ただ、このアセットはアセットストアで検索しても出てこなくなっているので、前にダウンロードしたことがある方以外は、すみませんが別のアセットを使用するようにして下さい)

後はこれも使用させていただきます。

スクリーンショット 2020-05-16 2.05.00

こちらは「Female Ankle Boots - Photoscanned」で検索すると出てきます。
追加でインポートしたら、スクリプトをアタッチして、プレハブ化しておきましょう。

アイテム用のデータファイルの作成

用意ができたところで、Excelにデータを記述していきたいと思います。
まずは装備アイテムからです。筆者は以下のようになりました。

スクリーンショット 2020-05-17 14.30.16

ユニティちゃんに蹴って攻撃させているので武器は靴にしました。
dmgは投げた時に与えるダメージ度合いです。
なお、このシートの名前は「Equipments」にしておきましょう。
次に消費アイテムを記述します。筆者は以下の通りになりました。

スクリーンショット 2020-05-17 14.31.42

hpは回復する体力量、foodは回復する満腹度合いを表します。
このシート名は「Goods」にしておいて下さい。
出来上がったら、「ExcelItemData」の名前にして、XLSX形式で保存して下さい。

ExcelItemDataスクリプトの作成

出来上がったファイルをDatasフォルダの中に入れて、手順通りスクリプトを作成します。このスクリプトもDatasフォルダの中に入れましょう。
以下のようなスクリプトができたらOKです。

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[ExcelAsset]
public class ExcelItemData : ScriptableObject
{
	//public List<EntityType> Equipments; // Replace 'EntityType' to an actual type that is serializable.
	//public List<EntityType> Goods; // Replace 'EntityType' to an actual type that is serializable.
}

という訳で、短いですが今回はここまでにします。
次回はこのスクリプトを変更して、データを読み込めるようにしていこうと思います。

この記事が気に入ったらサポートをしてみませんか?