NullReferenceException при создании экземпляра класса Game (OpenTKGameWindow.Initialize)

Я только что установил xamarin и monogame на OSX. Я попытался запустить действительно простой демонстрационный проект, который отлично работает в 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, и когда я запускаю примеры, они, похоже, работают нормально:

введите описание изображения здесь

Я предполагаю, что проблема в моноигре, я установил моноигру, используя шаблон проекта моногеймы xamarin.


person Remo H. Jansen    schedule 10.09.2013    source источник
comment
Это дикая догадка, но я бы сказал, что вам не хватает фреймворка XNA, работающего под моно. Тем более, что в стеке отображаются все задачи для XNA, возникающие в имени файла unknown. Погуглите и убедитесь, что XNA будет работать в моно.   -  person SASS_Shooter    schedule 11.09.2013
comment
XNA не работает под моно. Вот почему они создали MonoGame (порт XNA с открытым исходным кодом). В любом случае, я тоже не очень разбираюсь в сборке на OSX, но похоже, что вам нужно установить OpenTK или Mono, возможно, это: go-mono.com/mono-downloads/download.html.   -  person craftworkgames    schedule 11.09.2013


Ответы (2)


Xamarin подобрал неправильный файл Monogame.Framework.dll. Он пытается загрузить проект WindowsGL или Linux (который использует OpenTKGamePlatform - для MacOS вам нужна MacGamePlatform в этой трассировке стека).

У шаблона Xamarin MonoGame много проблем. Один из них - он всегда выбирает неправильный фреймворк. Вам необходимо вручную перейти к DLL фреймворка в / Users // Library / Application Support / XamarinStudio-4.0 / LocalInstall / Addins / MonoDevelop.MonoGame.3.0.1 / Assemblies / MacOS

Однако с этим все еще есть проблемы, если вы используете версию 3.0.1 - существует конфликт API MonoMac.dll. Я настоятельно рекомендую загрузить последний исходный код MonoGame и самостоятельно собрать проект MonoGame.Framework.MacOS и сослаться на сборку фреймворка там. Вы по-прежнему можете использовать установленный шаблон Xamarin, просто измените ссылку на сборку. Вам также может потребоваться установить действие сборки logo.png на «Содержимое», чтобы полностью приступить к работе.

person Justin Aquadro    schedule 14.09.2013
comment
Сборка моногеймы была способом выяснить несколько проблем. Для справок в будущем я рекомендую проверить github.com/mono/MonoGame/issues/1112 # issuecomment-24255271 - person Remo H. Jansen; 14.09.2013

Для всех, кто может наткнуться на это в будущем, у меня была такая же проблема с Windows. Казалось, что Xamarin выбирает не тот файл MonoGame.Framework.dll, хотя я сам создал версию для github и установил ссылку вручную.

Мне повезло, и я щелкнул правой кнопкой мыши ссылку MonoGame.Framework внутри моей справочной папки проектов и снял флажок "Локальная копия"; Это решило проблему для меня !!

Я снял этот флажок

Удачи!

person demon_ds1    schedule 27.11.2014