Table of Contents

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

初級 プログラマー

スクリプトでパブリック プロパティまたはパブリック フィールドを宣言すると、そのプロパティは 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 属性を次のように使用します。

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

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

パブリック プロパティは [DataMemberIgnore] で非表示になっている

関連項目