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



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,当我运行示例时,它们似乎运行良好:



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

最佳答案

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构建动作设置为“内容”才能完全开始。

关于c# - 创建Game类的实例(OpenTKGameWindow.Initialize)时发生NullReferenceException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18727035/

10-10 01:52