Я немного экспериментирую с F # и хочу посмотреть, смогу ли я сделать что-нибудь простое с Monogame в F #. Я подумал, что перевод с C# на f # будет простым, но это не так далеко. Код, который у меня есть, пока является простым пустым проектом, который должен быть запущен. Или, по крайней мере, в C#. Однако выполнение этого в F # дает
Unhandled exception. System.InvalidOperationException: No Graphics Device Service
Код, который у меня есть, это то, что действительно не делает ничего сумасшедшего. Я был вынужден использовать изменяемый val для spritebatch, так как вы должны создать его экземпляр в LoadContent по любой причине. У кого-нибудь есть указания на то, что я делаю неправильно? Буду очень признателен.
type GameState =
inherit Game
new() = { inherit Game(); Sb = null; }
member this.Gfx : GraphicsDeviceManager = new GraphicsDeviceManager(this)
val mutable Sb : SpriteBatch
override this.Initialize() =
this.Content.RootDirectory <- "Content"
this.IsMouseVisible <- false
base.Initialize ()
override this.LoadContent () =
this.Sb <- new SpriteBatch(this.Gfx.GraphicsDevice)
base.LoadContent ()
override this.UnloadContent () =
base.UnloadContent ()
override this.Update (gameTime : GameTime) =
base.Update (gameTime)
override this.Draw (gameTime : GameTime) =
this.Gfx.GraphicsDevice.Clear (Color.CornflowerBlue)
this.Sb.Begin()
//draw here
this.Sb.End()
base.Draw (gameTime)
[<EntryPoint>]
let main argv =
let gs = new GameState()
gs.Run()
0 // return an integer exit code