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

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

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

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

## 修正方法

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

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

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

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

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

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

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