创建Game类实例时的NullReferenceException(OpenTKGameWindow.Initialize)

时间:2013-09-10 19:12:10

标签: c# macos mono xamarin monogame

我刚刚在OSX上安装了xamarin和monogame我试图运行一个非常适合在Windows上运行的基本演示项目。但是我收到以下错误:

enter image description here

System.NullReferenceException: Object reference not set to an instance of an object
  at Microsoft.Xna.Framework.OpenTKGameWindow.Initialize () [0x00000] in <filename unknown>:0
  at Microsoft.Xna.Framework.OpenTKGameWindow..ctor () [0x00000] in <filename unknown>:0
  at Microsoft.Xna.Framework.OpenTKGamePlatform..ctor (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0
  at Microsoft.Xna.Framework.GamePlatform.Create (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0
  at Microsoft.Xna.Framework.Game..ctor () [0x00000] in <filename unknown>:0
  at test.Game1..ctor () [0x00057] in /Users/remojansen/Desktop/test/test/Game1.cs:37
  at test.Program.Main () [0x00001] in /Users/remojansen/Desktop/test/test/Program.cs:19

代码没有错,所以我必须丢失DLL或其他东西?你对可能遗失的东西有任何想法吗?

谢谢:)

[编辑]

反汇编在第二行显示错误:

00000155   callvirt IWindowInfo OpenTK.NativeWindow:get_WindowInfo ()
0000015a   ldnull 
0000015b   callvirt Object System.Reflection.PropertyInfo:GetValue (Object, Object[])
00000160   unbox.any System.IntPtr
00000165   stfld 
0000016a   call GraphicsMode OpenTK.Graphics.GraphicsMode:get_Default ()
0000016f   ldarg.0 
00000170   ldfld 
00000175   callvirt IWindowInfo OpenTK.NativeWindow:get_WindowInfo ()
0000017a   newobj Void OpenTK.Graphics.GraphicsContext:.ctor (GraphicsMode, IWindowInfo)

我还手动编译了OpenTK,当我运行这些示例时,它们似乎工作正常:

enter image description here

我猜问题是monogame,我使用xamarin monogame项目模板安装了monogame。

2 个答案:

答案 0 :(得分:1)

Xamarin选错了Monogame.Framework.dll。它正在尝试加载WindowsGL或Linux项目(使用OpenTKGamePlatform - 对于MacOS,您希望在该堆栈跟踪中使用MacGamePlatform)。

MonoGame Xamarin模板存在很多问题。其中之一是它总是会选择错误的框架。您需要手动浏览到/ Users // Library / Application Support / XamarinStudio-4.0 / LocalInstall / Addins / MonoDevelop.MonoGame.3.0.1 / assemblies / MacOS

中的框架dll

但是,如果您使用的是3.0.1版本,则仍存在问题 - 存在MonoMac.dll API冲突。我强烈建议您下载最新的MonoGame源代码,并自己构建MonoGame.Framework.MacOS项目,并在那里引用框架程序集。您仍然可以使用您安装的Xamarin模板,只需更改程序集引用即可。您可能还需要将logo.png构建操作设置为“内容”以完全开始。

答案 1 :(得分:0)

对于任何可能在将来偶然发现这一点的人,我在Windows上遇到了同样的问题。 Xamarin似乎选错了MonoGame.Framework.dll,即使我自己构建了github版本并手动设置了引用。

我很幸运,右键单击了我的项目参考文件夹中的MonoGame.Framework参考,并取消选中了表示&#34; Local Copy&#34 ;;这解决了我的问题!!

I unchecked this checkmark

祝你好运!