我刚刚在 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 类实例时出现 NullReferenceException (OpenTKGameWindow.Initialize),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727035/