タワーデータ
Coddyの「Unityゲーム:タワーディフェンス」コースのレッスン 14/25。
2つ目の塔、大砲が登場します。独自の数値を持っています。敵と同じように、ステータスはアセットに移されます。アセットは種類ごとに1つずつ用意され、TowerDataを使います。このプロジェクトにはArrowData(コスト50、ダメージ2、射程4.5、fireRate 1.5)があります。プレハブには塔の見た目が保持され、Towerスクリプトはそのアセットを参照します。
ScriptableObjectクラスの上にある[CreateAssetMenu]を使うと、Unityの「作成」メニューに項目が追加され、エディターで新しいアセットを作成できます。敵のアセットにも次のように指定されています。
[CreateAssetMenu(fileName = "NewEnemy", menuName = "Tower Defense/Enemy Data")]
public class EnemyData : ScriptableObjectチャレンジ
中級各タワーのステータスをTowerDataアセットに移します。
TowerData.csで、[CreateAssetMenu]と、公開フィールドtowerName(文字列)、costとdamage(整数)、rangeとfireRate(浮動小数点数)を追加します。Towerで、これら4つのフィールドをpublic TowerData data;に置き換え、data.range、data.damage、data.fireRateを読み取ります。BuildManagerで、towerPrefab.data.costを支払います。
「プレイ」を押します。Arrowはこれまでどおり戦いますが、今度はArrowDataからデータを取得します。次に「確認」を押します。
自分で試してみよう
using UnityEngine;
// 後で登場:ある種類のタワーのステータスをアセットとして定義します。
public class TowerData : ScriptableObject
{
}
Unityゲーム:タワーディフェンスのすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド