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でのC#文法 〜アクセス修飾子編

Posted at

はじめに

UnityでC#を書くとき、変数のアクセス制御とシリアライズの関係を理解しておくことはとても重要です。
間違った使い方をすると、意図せず値を変更されたり、Inspectorに表示されなかったりして困ることがあります。

publicとprivate

この2つが、Unityで基本的に用いられるアクセス修飾子です。

public

public int health;

主な特徴として、他のクラスから自由にアクセスできること、Inspectorに表示されて編集可能という点が挙げられます。

ただし、どこからでも変更できてしまうため、安全性に欠ける部分があります。
他のスクリプトから値を読み書きしたい時に使うといいでしょう。

private

private int health;

privateが使われている変数や関数は、そのクラス内だけで使うことができます。
Inspectorにも表示されないため、外部から直接触らせたくない内部データを保護することができます。

C#ではカプセル化の観点から、なるべくprivateを使うことが推奨されます。
外部から勝手に値を変更されるのを防ぎ、バグを発見しやすくなります。

シリアライズ

Unityには、変数をシーンやPrefabに保存し、Inspector上で編集できるようにする仕組みがあります。
これをシリアライズといいます。

しかし、基本的にその対象となるのはpublicなフィールドのみです。

「外部から値は変更されたくないけど、Inspector上では編集したい」といったとき、これでは困ってしまいます。

SerializeField

ここで登場するのが、SerializeFieldです。

[SerializeField] private int speed = 5;

これを付けた変数や関数は、「Inspectorに表示されるが、他クラスからはアクセスできない」という状態になります。

安全性を維持しつつも、作業性も向上させることができます、

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?