我刚开始使用Mono和.NET的东西,在阅读了一些关于F#的内容后,我决定尝试在F#和MonoGame上使用这个简单的游戏教程:
http://bruinbrown.wordpress.com/2013/10/06/making-a-platformer-in-f-with-monogame/
在整理出我从博客上复制粘贴的代码的许多语法错误后,我得到了这段代码:
module desnovro
open Microsoft.Xna.Framework
open Microsoft.Xna.Framework.Graphics
type Game1 () as x =
inherit Game()
do x.Content.RootDirectory <- "Content"
let graphics = new GraphicsDeviceManager(x)
let mutable spriteBatch = Unchecked.defaultof<SpriteBatch>
override x.Initialize() =
do spriteBatch <- new SpriteBatch(x.GraphicsDevice)
do base.Initialize()
()
override x.LoadContent() =
()
override x.Update (gameTime) =
()
override x.Draw (gameTime) =
do x.GraphicsDevice.Clear Color.CornflowerBlue
()
[<EntryPoint>]
let main argv =
use g = new Game1()
g.Run()
printfn "Desnovro!!!"
0
在MonoDevelop解决方案中,我创建了一个F#项目,引用了:
我添加了名为Program.fs
的上述文件。我能够成功编译项目,但是当我尝试运行它时,我得到以下异常:
Unhandled Exception: System.TypeLoadException: Could not load type 'Game1' from assembly 'game, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type 'Game1' from assembly 'game, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
我的第一次尝试是将类定义和主函数放在分离的文件中(如教程中所示),但得到了相同的结果。如果我在主函数中注释掉Game1
和g
的引用,程序将执行并打印我的消息“Desnovro !!!”成功。
有什么问题以及如何解决?
我是这个.NET的完全初学者,但我认为,因为我知道Haskell并且喜欢函数式编程,所以我很快就能用MonoGame和F#开发游戏。我正在使用Ubuntu 13.10。
答案 0 :(得分:0)
尝试在命名空间而不是模块中定义Game
类型。遗憾的是,WPF
和C#反射都很难在模块内定位类型。