我刚刚在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/