default-value-changes-ignored-at-runtime.md 2.0 KB

既定値の変更が実行時に無視される

スクリプトをコンポーネントとしてプロジェクトに追加すると、[Property grid]にそのパブリック変数が一覧表示されます。これらは、実行時に使用される値です。

しかし、その後、スクリプトで既定値を変更した場合、コンポーネントは新しい値に更新されません。

たとえば、スクリプトに既定値が 5.0f である変数 SpeedFactor が含まれるものとします。このスクリプトをコンポーネントとしてプロジェクトに追加します。その後、スクリプトで SpeedFactor 変数の既定値を 6.0f に変更し、スクリプトを保存して、プロジェクトを実行します。この場合、コンポーネントはスクリプトによる変更で更新されず、変数 SpeedFactor の値は 5.0f のままです。

修正方法

プロジェクトで、スクリプト コンポーネントをいったん削除して追加しなおします。

または、コンポーネントのプロパティの値をスクリプトで変更した後で Game Studio によってそれが更新されるようにしたい場合は、追加コードで行うことができます。これを適用するプロパティごとに新しいコード行を追加する必要があります。

  1. スクリプトの先頭に using System.ComponentModel を追加します。

  2. 更新する変数の上に、[DefaultValue()] を追加します。たとえば、変数が SpeedFactor の場合は、次のようにします。

    [DefaultValue(6.0f)]
    public float SpeedFactor { get; set; } = 6.0f;
    

値を変更するときは、SpeedFactorDefaultValue の両方を同じ値に更新します。

[!NOTE] これは両方向には動作しません。[Property grid]で DefaultValue 以外の値を設定した場合、Game Studio は値をアセットに保存して、実行時に既定値をオーバーライドします。