Unity3D では、フィールドをパブリックとしてマークすることで、エディター内でフィールドにアクセスできるようにすることができます。これにより、ハードコーディングする代わりに GUI でフィールドの変数を割り当てることができます。たとえば、この C# コードは、開発中に手動で編集できる「速度」フィールドを表示します。変更しないままにしておくと、デフォルトで 10 になります。
public class Example : MonoBehaviour {
public float speed = 10.0F;
}
自動プロパティを使用してF#でこれを試しました:
type Example() =
inherit MonoBehaviour()
member val speed = 10.f with get,set
しかし、これは機能しません。ただし、明示的なプロパティを使用すると機能します
[<DefaultValue>] val mutable speed : float32
ただし、これには、同じ式でデフォルト値を指定できないという欠点があります。
明示的なプロパティと自動プロパティは同じものにコンパイルされますが、唯一の違いは、明示的なプロパティが常にゼロに初期化されるということではありませんか? また、F# で C# コードと同等のものを宣言するにはどうすればよいでしょうか?