【Unity】自作クラスを作って使う(インスペクタでシリアライズ)
Unityでは、new演算子で自作クラスは作れない?作らない方がいいのでしょうか?
決してそんなことはありません
確かにシーンに表示されるオブジェクトはUnityエンジンに任せた方がいいですが、情報管理と処理についてはPureC#で作成した方がいいです
今回は、クラスのインスタンスをインスペクターで実現する方法を学びましょう
C#などコードを学んできた方はどんどんスキルを活かしていきましょう
シーン
- 空のゲームオブジェクトを作成します
- ClassSampleをアタッチします
- Playerクラスはプロジェクトウィンドウに作成したままにします
- インスペクターで初期値を代入します
この値は、シーンファイル(SampleScene.unityファイル)に保存されます
実行結果
二郎 1000
コード
ClassSample
using UnityEngine;
public class ClassSample : MonoBehaviour
{
public Player player;
void Start()
{
Debug.Log($"{player.name} {player.hp}");
}
}
Player
[Serializable]
public class Player
{
public string name;
public int hp;
}
[Serializable]
属性は、このクラスのインスタンスがシリアル化できることを示しています。シリアル化は、オブジェクトの状態をバイトストリームに変換し、データを永続化することができます。これにより、ゲームのセーブデータを保存することができます。
public class Player
は、Playerクラスを定義しています。このクラスには、name
とhp
という2つのメンバ変数があります。
public string name
は、Playerクラスのインスタンスが持つ名前を表します。文字列型のname
変数は、publicキーワードによってアクセス可能になっています。これにより、この変数に外部からアクセスできます。
public int hp
は、Playerクラスのインスタンスが持つ体力ポイントを表します。整数型のhp
変数も、publicキーワードによってアクセス可能になっています。これにより、外部からこの変数にアクセスでき、体力ポイントを変更できます。
このクラスを使用することで、ゲーム内のプレイヤーの情報を管理することができます。例えば、プレイヤーの名前と体力ポイントを保存することができます。
[Serializable]
属性とすることで、インスペクターでの値の代入が可能になります
ディスカッション
コメント一覧
まだ、コメントがありません