public-properties-and-fields.md 3.5 KB

パブリック プロパティとフィールド

初級 プログラマー

スクリプトでパブリック プロパティまたはパブリック フィールドを宣言すると、そのプロパティは Game Studio 内でスクリプト コンポーネント プロパティからアクセスできるようになります。

Property in Game Studio

同じスクリプトを複数のエンティティにアタッチし、エンティティごとに異なるプロパティ値を設定できます。

[!NOTE] パブリック プロパティまたはフィールドを Game Studio で使用するには、シリアル化可能である必要があります。

パブリック プロパティまたはフィールドを追加する

次のスクリプトにはパブリック プロパティ (DelayTimeOut) があります。

public class SampleSyncScript : StartupScript
{
	// このパブリック メンバーは Game Studio に表示される
	public float DelayTimeOut { get; set; }
}

DelayTimeOut プロパティはスクリプト コンポーネントのプロパティに表示されます。

Public property appears in the property grid

[!NOTE] 原則として、Game Studio でプロパティまたはフィールドを表示したい場合、ゲッターおよびセッターは可能な限り何も行わないようにする必要があります。たとえば、メソッドを呼び出したり、Stride のランタイム API にアクセスしたりしないようにする必要があります。

たとえば、以下のコードは、実行時にのみ使用できる Entity.Components にアクセスしようとしているため、問題になります。

>public class SampleSyncScript : StartupScript
>{
>   private float delayTimeOut;
>   // このパブリック メンバーは Game Studio に表示される
>   public float DelayTimeOut
>   {
>       get { return delayTimeOut; }
>       set
>       {
>           delayTimeOut = value;
>           Entity.Components.Add(new SkyboxComponent());
>       }
>   }
>}
>```
>このようなコードをプロパティまたはフィールドに組み込む場合は、Game Studio がそれを表示しないように非表示にします (後述を参照)。

## プロパティ グリッドでプロパティまたはフィールドを非表示にする

プロパティ グリッドにプロパティを表示したくない場合は、次の方法でできます。

* メンバーを内部またはプライベートとして宣言します
* または、[DataMemberIgnore](xref:Stride.Core.DataMemberIgnoreAttribute) 属性を次のように使用します。

cs

// このパブリック プロパティは Game Studio では使用できない [DataMemberIgnore] public float DelayTimeOut { get; set; }

```

プロパティが表示されなくなります。

関連項目