0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unityにでてくるプロパティって何?

Last updated at Posted at 2025-12-25

プロパティって何?

プロパティとは、関数と変数のハイブリッド のようなものです。

例を挙げて説明します。

ゲームを作っている中で、「HP」という名前の変数を作ったとしましょう。

そこでこう思います。
「HPが変更されたとき、メッセージを流したい」
「毎回、最大HPとの差を確認したい」

プロパティは、これを関数を使わずに実現できます。

プロパティの文法

プロパティで重要なのは、getsetです。

具体的を通して見ていきましょう。

private int _hp; // 現在の体力を保持するための変数

public int HP
{
    get
    {
        // 参照されたとき:100から現在のHPを引いた値を返す
        return 100 - _hp;
    }
    set
    {
        // 変更されたとき:ログを出力し、値を更新する
        Console.WriteLine("変更されました");
        _hp = value; 
    }
}

get

getは、「プロパティの値が参照されたとき」 に実行されます。
このコードで言うと、他の関数からHPの値を確認しようとした場合、100 - _hpの値が返されます。

もしかすると、「『100 - HP』とは書かないの?」と思ったかもしれません。

100-HPと書いてしまうと、

HPの値を確認しようとする
↓
getが実行される
↓
getの内部で再びHPの値を確認しようとする
↓
getが実行される
・
・
・

という無限ループに入ってしまいます。

そのため、_hpという別の変数を用意するのが正解です。

set

setは、「プロパティの値が変更された時」 に実行されます。
このコードで言うと、HPを変更しようとした場合、「変更されました」というログが出力されます。

ここで、「value」という変数を使っていると思います。
valueはsetで使われる特別な変数で、「変更後の値」 が入っています。

例えばHPを70にしようとした場合、valueには70が格納されます。

よくある使い方

プロパティでよくある書き方の1つに、以下のようなものがあります。

public int HP { get; private set; }

getに何も書かれていないため、値が参照された際は、通常の変数と同様格納されている値を返します。

一方setには「private」と書かれています。
これは、別のクラスから値を変えることができないという意味です。
(同じクラス内からは値を変えることが出来ます。)

つまり、全体で見ると 読み取り専用 のような働きをしています。

単に変数にprivateを付けた、以下の書き方とは何が違うのでしょうか。

private int MP;

この場合、外部のクラスからは 読み取りも変更もできません

先程のプロパティとは働きが異なっています。

おわり

プロパティは、Unityでゲームを作る上でとても強力なツールです。

ぜひ使いこなしていきましょう!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?