5歩目 Playerデータの作成 Unityで1日1ステップ!ノンフィールドRPG開発日記

1日1歩開発日記

ふりかえり


前回は、SourceTreeとGitHubを連携し、Unityプロジェクトのバージョン管理環境を整えました!

5歩目 Playerデータの作成

いよいよ今回から、実際にゲームの中身を作っていきます!

記念すべき最初の実装は、プレイヤーのデータ作成です。

スクリプトをまとめるフォルダを作成

まず、スクリプトを整理するためのフォルダを作成します。

  1. Unityエディタの左上にある「+」ボタンをクリックします。
  2. 表示されたメニューから「Folder」を選び、新しいフォルダを作成します。
  3. フォルダ名を Scripts に変更しましょう。

プレイヤーの基礎データクラスを作る

続いて、Scripts フォルダ内に プレイヤーのデータを定義するクラスを作成します。

  1. Scripts フォルダを開き、「+」ボタンをクリック
  2. 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 を動かすために、以下の手順でゲームオブジェクトを作成しましょう。

  1. Hierarchyビューの「+」をクリック
  2. Create Empty」を選択
  3. 作成されたゲームオブジェクトの名前を PlayerManager に変更
  4. 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がすべてのデータを持っている」と分かりやすくなるんです!

まとめると、クラス化することで「見やすい・共有しやすい・後で直しやすい」というメリットがあります!

コメント

タイトルとURLをコピーしました