ふりかえり
前回は、SourceTreeとGitHubを連携し、Unityプロジェクトのバージョン管理環境を整えました!
5歩目 Playerデータの作成
いよいよ今回から、実際にゲームの中身を作っていきます!
記念すべき最初の実装は、プレイヤーのデータ作成です。
スクリプトをまとめるフォルダを作成
まず、スクリプトを整理するためのフォルダを作成します。
- Unityエディタの左上にある「+」ボタンをクリックします。
- 表示されたメニューから「Folder」を選び、新しいフォルダを作成します。
- フォルダ名を Scripts に変更しましょう。


プレイヤーの基礎データクラスを作る
続いて、Scripts フォルダ内に プレイヤーのデータを定義するクラスを作成します。
- Scripts フォルダを開き、「+」ボタンをクリック
- 「C# Script」を選択し、スクリプト名を PlayerData に設定します。

以下が、PlayerData.cs のコードです:
[System.Serializable]
public class PlayerData
{
public string name;
public int level;
public int maxHP;
public int currentHP;
public int attack;
public int defense;
}
プレイヤーを管理するスクリプトを作る
次に、プレイヤーデータを初期化・管理するスクリプト PlayerManager を作成します。
using UnityEngine;
public class PlayerManager : MonoBehaviour
{
public PlayerData player;
void Start()
{
// 仮データで初期化
player = new PlayerData
{
name = "勇者",
level = 1,
maxHP = 100,
currentHP = 100,
attack = 10,
defense = 5,
};
Debug.Log($"{player.name}が作成されました。HP:{player.currentHP}/{player.maxHP}");
}
}
スクリプトをアタッチする
スクリプトは、ゲームオブジェクトにアタッチしないと動作しません。
PlayerManager を動かすために、以下の手順でゲームオブジェクトを作成しましょう。
- Hierarchyビューの「+」をクリック
- 「Create Empty」を選択
- 作成されたゲームオブジェクトの名前を PlayerManager に変更
- Scripts フォルダ内の PlayerManager.cs を、このゲームオブジェクトにドラッグ&ドロップでアタッチ
アタッチした後、PlayerManagerをInspectorで確認すると以下のように表示されます。

ゲームを再生し、Consoleに以下のようなログが表示されれば成功です!

まとめ
今回は、プレイヤーのデータ作成と初期化を行い、ゲームオブジェクトにスクリプトをアタッチする手順を体験しました。
これらの操作は今後も頻繁に登場するので、ぜひ慣れておきましょう!
次回は、敵キャラクター(モンスター)を作成していきます。
お楽しみに!
お役立ち
プレイヤーの基本データクラス(PlayerDataなど)を作るメリットはたくさんあります。簡単にまとめると、以下のようなポイントです!
プレイヤーの基本データクラスを作るメリット
1. データの管理がしやすい
プレイヤーの情報(名前、HP、攻撃力など)を一か所で管理できるので、後からまとめて変更・拡張しやすいです。
2. スクリプト同士でデータを共有しやすい
他のスクリプト(例:UI表示スクリプト、戦闘スクリプト)からも、このクラスのインスタンスを使って簡単にプレイヤー情報を取得できます。
3. 可読性・保守性が向上する
例えば、PlayerManagerの中に直接「名前」「HP」「攻撃力」などの変数を並べるより、PlayerDataクラスにまとめる方がスッキリして見やすいです。
4. 機能追加や拡張が楽
新しいステータス(例:魔法攻撃力、会心率など)を追加するとき、PlayerDataに項目を増やすだけでOK。
他のスクリプトはPlayerDataの情報をそのまま使っているので、大きな変更をしなくて済みます。
5. ScriptableObjectやJSONとの連携も簡単に
PlayerDataをそのままScriptableObjectとして使えば、エディタ上でプレイヤーデータを作れるし、JSONに保存してロードするのも楽になります!
イメージ例
もしクラスを作らずにバラバラに変数を持つと
public class PlayerManager : MonoBehaviour
{
public string name;
public int level;
public int maxHP;
public int currentHP;
public int attack;
public int defense;
}
だと散らばってしまい、「プレイヤーのデータはどれ?どのスクリプト?」が分かりにくい。
でも
public class PlayerManager : MonoBehaviour
{
public PlayerData player;
}
なら、「playerがすべてのデータを持っている」と分かりやすくなるんです!
まとめると、クラス化することで「見やすい・共有しやすい・後で直しやすい」というメリットがあります!
コメント