私はC#とUnityを学び始めたばかりですが、慣れないことが1つあります。
なぜ、いつ使用する必要があります[SerializeField]
か?
[SerializeField]
ユニティインターフェイスを使用しているにもかかわらず、変数をハードコーディングしたままにして、テキストボックスを増やすのは悪いことですか?
何卒ご理解とご協力を賜りますようお願い申し上げます。
なぜ、いつ[SerializeField]を使用する必要がありますか?
SerializeField
属性を使用すると、Unityは任意のprivate
変数をシリアル化します。これは、C#の静的変数とプロパティには適用されません。
SerializeField
変数を設定する必要があるprivate
だけでなく、エディターに表示する場合にも、この属性を使用します。
たとえば、これはエディタに表示されません。
private float score;
これはprivate
変数であるためですが、以下のものがエディターに表示されます。
[SerializeField]
private float score;
これは、適用SerializeField
し、Unityにシリアル化してエディターに表示するように指示しているためです。
private
変数はUnityよりもC#と関係があることに注意してください。パブリック変数変数もあります。変数にマークprivate
を付けるということは、別のスクリプトがその変数にアクセスできないようにすることを意味します。public
修飾子もあります。変数にマークpublic
を付けるということは、他のスクリプトがその変数にアクセスできるようにすることを意味します。
他のスクリプトが別のスクリプトから変数にアクセスできるようにしたいが、public
変数をエディターに表示したくない場合があります。属性を使用してpublic
変数を非表示にでき[HideInInspector]
ます。
これはエディターに表示されます:
public float score;
これはエディターには表示されません。
[HideInInspector]
public float score;
[SerializeField]を使用しているにもかかわらず、変数をハードコーディングしたままにして、ユニティインターフェイスにテキストボックスを追加するのは悪いことですか?
はい、それは特に新しいユーザーにとってはほとんど悪いことです。UnityとC#のプログラマーにとって、これは長い間大したことではないはずです。これが悪い理由は、以下のコードがある場合です。
[SerializeField]
private float score = 5f;
デフォルト値は5
エディターにあります。スクリプトを保存すると、この変数はエディターで5として更新されます。問題は、これをエディターからに変更できることです14
。エディタから変更しても、スクリプトの値はそのままです5
が、実行すると、Unityはエディタで設定した値であるを使用します14
。これにより、スクリプトで設定されたデフォルト値が使用されることを期待しているときに、エディターで設定された別の値が使用されているという理由だけで問題にならない問題のトラブルシューティングに多くの時間を費やす可能性があります。
score
変数をデフォルトの変数にリセットする唯一の方法は、変数の5
名前を別の名前に変更するか、エディターからリセットすることです。あなたから値を変更しても、それは変わらないだろう5
に3
、スクリプトから。名前を変更するか、エディターからリセットする必要があります。知っておく価値はありますが、Unityに慣れれば、これについて心配する必要はありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加