質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

4515閲覧

インスペクター上で手動設定したpublic変数を[HideInInspector]した時に内容をクリアする方法について

buibui80

総合スコア1033

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2016/06/06 13:23

インスペクター上で変数の値を手動設定したかったのでpublic変数を用意しました。

C#

1public string TestName = "";

インスペクター上で値を手動設定した状態のまま、
手動設定が不要となったので以下の様にインスペクター上に表示しない様にしました。

C#

1[HideInInspector] public string TestName = "";

非表示になった時点で変数の値は初期化("")されるものと思っていましたが、
[HideInInspector]を削除して再表示すると手動設定の内容が残っていることを確認しました。

プログラムとEditorを別人が担当している場合、
プログラム側では関与しないまま手動設定が隠れた初期値となってしまい、
しかもEditor側では項目が非表示なので確認・修正ができない問題も生じて
問題発見までの時間がかかることが想像されます。

そこで質問ですが、
[HideInInspector]を行った時点で手動設定の内容をクリアする方法はないでしょうか?

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

確かにHideInInspectorアトリビュートはインスペクター上で非表示にするだけですので、値はPrefabやシーン上には保存されてままになってしまいます。
Public変数の値の情報をクリアするのでしたら、System.NonSerializedアトリビュートの方をお使いいただければと思います。

System.NonSerializedアトリビュートは値のシリアライズをさせないようにするため、インスペクター上には表示されませんし、保存もしません。
インスペクター上では通常のPrivate変数の同じ扱いにすることができます。

[System.NonSerialized] public string TestName = "";

お試しくださいませ。

投稿2016/06/06 14:00

urahimono

総合スコア714

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

buibui80

2016/06/06 14:24

ご回答ありがとうございます。 NonSerialized で期待する動作になりました。 どうなることかと思いましたが助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問