未分類

【Unity】Inspectorから値にアクセス可能にするためには。

投稿日:

はじめに

こんにちはsuzukiです。本日はUnityのインスペクターから値を編集するフィールドシリアライゼーションについて説明いたします。

上記のメリットとして、unityでrunしている最中に値の変更を行うことができたり、必要な設定をコード上以外からも編集できるため便利です。
利用する方法として、[SerializeField]を利用するか、publicの装飾子を利用するかとなります。
それぞれ利用パターンが異なるため整理します。

シリアライズ

これからを説明するにはシリアラライズが何かを説明すると、公式の説明では下記の様に説明されており
“シリアライゼーションは、データ構造やオブジェクトの状態を Unity が保存して後で再構成できる形式に変換する自動プロセスです。”
重要なことは上記を行うことにより、Unityのインスペクタからの値の更新を、runしているプログラムに適用できる様になります。

シリアライズ利用するため準拠するルールがあります。

  • public であるか、または SerializeField 属性をもっていること。
  • 静的でないこと。
  • const ではないこと。
  • 読み取り専用でないこと。
  • シリアラル化可能なフィールド型であること。
    • プリミティブなデータ型 (int、float、double、bool、string など) であること。
    • Enum 型 (32 バイト以下) であること。
    • 固定サイズバッファであること。
    • Unity の組み込み型 (例えば、Vector2、Vector3、Rect、Matrix4x4、Color、AnimationCurve) であること。
    • Serializable 属性をもつカスタム構造体であること。
    • UnityEngine.Object から派生するオブジェクトへの参照であること。
    • Serializable 属性を持つカスタムクラスであること。
    • 上記のフィールド型の配列であること。
    • 上記のフィールド型の List であること。

[SerializeField]

[SerializeField] は、その値がシリアライズ可能であることを表す属性です。
インスペクタから値の更新が可能になります
暗黙的にprivate装飾子がついている状態になるため、他のスクリプトからの値の参照ができません。

public

その値がシリアライズ可能であることを表すのはSerializeFieldと同様です
インスペクタから値の更新が可能になります
他のスクリプトから値に参照ができ、上書き等も可能です。

[System.NonSerialized] public

こちらはおまけ的な要素ですが、下記の二つの要素を合わせることで
[System.NonSerialized]:その値がシリアライズ不可を表す属性
public:他のスクリプトから値の参照ができる
インスペクタに表示されず、他のスクリプトからアクセスを可能とします。

まとめ

まとめると下記の様な表になります。不要な参照はない方がいいので、それぞれの要不要を判断しながら適した内容を使っていければと思います。

装飾子 インスペクタからの参照 他のスクリプトからの参照
無・private 不要 不要
[SerializeField] 必要 不要
public 必要 必要
[System.NonSerialized] public 不要 必要

おすすめ書籍

Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座 作って学べる Unity 超入門 スラスラ読める Unity C#ふりがなプログラミング

blog-page_footer_336




blog-page_footer_336




-未分類
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

icon

About us

こんにちは、私たちは五反田周辺にて主に活動しているRE:ENGINESです。 デザイナー、エンジニアが集まり、プロダクトを一貫して制作しております。 また、制作の中で必要な周辺知識も学習し、個々人のス ...

no image

【Unity】StarterAssetのInputSystemを利用KeyBoardとGamePadのアクションを設定してみる

1 はじめに2 InputSystemの概要3 StarterAssetでのアクションの追加3.1 InputActionの変更3.2 StarterAssetsInputs.csの変更3.3 Thi ...

Android CameraXプレビューを実装してみた

1 はじめに2 CameraXとは3 Android Jetpackについて4 Cameraパーミッションの追加5 ソースコード全容6 プレビューの実装7 さいごに8 おすすめ書籍 はじめに こんにち ...

【Unity】TextMeshProで文字の表示と日本語入力

1 はじめに2 プロジェクトに追加3 TextMeshProのプロパティ4 日本語を使うには5 さいごに6 おすすめ書籍 はじめに こんにちはsuzukiです。unityをアップデートしたらTextが ...

laravel logo

Laravel-debugerbarを使ってみた

1 はじめに2 インストール3 主な項目3.1 Messages3.2 Timeline3.3 Queries3.4 N+1 Queries3.5 Session3.6 Request4 さいごに5 ...

フォロー

blog-page_side_responsive

2023年10月
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。