8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unity初心者が知っておきたいTips:Serializableを使おう

Posted at

Serializableとは??

クラスをシリアル化できることを示す属性です。
Unityで使用すると、インスペクターに サブプロパティを埋め込むことができるようになります。
Unityリファレンス
Microsoftリファレンス

どんな風に使う??

  • 例えば、以下のような形でCharacterクラス(キャラクターのクラス)とStatusクラス(ステータスのクラス)でクラスを分けて、以下のような形で定義します。
  • この際、StatusクラスにSerializable属性 を付与します。
Status.cs

using UnityEngine;
using System;

namespace QiitaGame
{
    [Serializable]
    public class Status
    {
        [SerializeField]
        private int _hp;
        [SerializeField]
        private int _mp;
        [SerializeField]
        private int _attackPower;
        [SerializeField]
        private int _defensePower;

        public int Hp { get => _hp; set => _hp = value; }
        public int Mp { get => _mp; set => _mp = value; }
        public int AttackPower { get => _attackPower; set => _attackPower = value; }
        public int DefensePower { get => _defensePower; set => _defensePower = value; }
    }
}

Character.cs

using UnityEngine;

namespace QiitaGame
{
    public class Character : MonoBehaviour
    {
        [SerializeField]
        private Status _status;

        public Status Status { get => _status;}
    }
}

  • Characterクラス(コンポーネント)をヒエラルキー上のオブジェクトにアタッチすると、インスペクタに以下のように表示されます。

スクリーンショット 2021-11-11 8.32.23.png

  • 「Status」の▷をクリックして展開すると・・・

スクリーンショット 2021-11-11 8.32.33.png

  • サププロパティが展開されましたね!
8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?