Unityでpublicなメンバ変数をInspectorで編集できないようにする方法
当分はUnity関係の内容になりそうです・・・。
ということでUnityの内容!
基本的なことからコツコツといきます!
publicなメンバ変数をInspectorで編集できないようにしたい
設計的にはpublic変数だがInspectorで編集できないようにする方法がありました!
調べたらふつーに出てきました!!
UnityのAttribute(属性)の1つである「HideInInspector」というのがありました。
Test.cs
using UnityEngine; using System.Collections; public class Test : MonoBehaviour { [HideInInspector] public int publicVariable_A = 0; public int publicVariable_B = 1; void Start () { } void Update () { } }
おお~!
「publicVariable_A 」はInspectorに表示されていない!
ふむふむ!!!
UnityのInspectorでアタッチしたC#ファイルの変数を編集する方法
ブログを開設して最初の記事です!
今自分の中で熱いUnityについての個人的な忘備録から始めようと思います!
少し触ったことはあるのですがとりあえず基礎から見直して少しずつ進歩できたらなと・・・
UnityのAttribute(属性)の1つである「SerializeField」
設計ではPrivate変数なんだけどInspectorでお手軽に編集したい時には
UnityのAttribute(属性)の1つである「SerializeField」を使うとInspectorにPrivate変数が表示されて編集できる。
Test.cs
using UnityEngine; using System.Collections; public class Test : MonoBehaviour { [SerializeField] private int privateVariable = 0; public int publicVariable = 0; void Start () { } void Update () { } }
Private変数も表示された!
Protected変数も表示できる
抽象クラスの作成
ATest.cs
using UnityEngine; using System.Collections; public abstract class ATest : MonoBehaviour { [SerializeField] protected int protectedVariable = 0; void Start () { } void Update () { } }
ATest.csを継承したクラス。
Test01.cs
using UnityEngine; using System.Collections; public class Test01 : ATest { [SerializeField] private int privateVariable = 1; void Start () { } void Update () { } }
Test02.cs
using UnityEngine; using System.Collections; public class Test02 : ATest { [SerializeField] private int privateVariable = 2; void Start() { } void Update() { } }
両方表示された!!!
「SerializeField」ってあるけど「Serialize」ってなに?
検索してみた・・・
シリアライズとは|serialize|シリアライゼーション|serialization - 意味/定義 : IT用語辞典
●Serialize[シリアライズ]
→ソフトウェア内部で扱っているデータを丸ごと、ファイルで保存したりネットワークで送受信することができるように変換すること。
●Deserialize[デシリアライズ]
→ファイルに保存されているシリアライズされたデータや、ネットワークを通じて送られてきたシリアライズされたデータを、
ソフトウェアで扱うことのできる元のデータ形式に復元すること
ふむふむ・・・ふむふむ・・・
(セーブデータ的な感じ?・・・)
とりあえず今回はここまでです。
ほのぼのこんな感じで続けられたらと思います。
誤解して書いている事柄などがあればご指摘ください!