2013-09-23 10 views
5

Próbuję utworzyć prosty program z MonoGame w Xamarin Studio 4.0.10 (kompilacja 5). Ale gdy próbuję załadować niektórych tekstur za pomocą Content.Load metody Otrzymuję wyjątek System.MissingMethodException z komunikatemJak naprawić MissingMethodException podczas Content.Load <Texture2D> w Xamarin Studio na MacOS X?

Method not found: 'MonoMac.AppKit.NSImage.AsCGImage'. 

Rzeczywiste wiersze kodu używam to:

protected override void LoadContent() 
{ 
    //some stuff here 

    Texture2D freezeTexts = new Texture2D[5]; 
    for (int i = 0; i < 5; i++) { 
     freezeTexts[i] = Content.Load<Texture2D>("freeze"+i); // exception here 
    } 

    //some other stuff here 
} 

Zrobiłem trochę googling i okazało się, że dzieje się tak z powodu pewnych zmian API, których Xamarin Studio jeszcze nie wdrożyło (przynajmniej to zrozumiałem). Moje pytanie brzmi: jak mogę rozwiązać ten problem?

Odpowiedz

6

Możesz skompilować monomac z najnowszego źródła, aby zaktualizować API.

To całkiem proste - ten blog ma kilka dobrych instrukcji.

EDIT

Wydaje trzeba cofnąć się w czasie z Monoman dostać wersję zgodną z aktualnym wydaniu MonoGame (co jest dość stary - 3.0.1 został wydany w dniu 6 marca 2013).

Lepiej byłoby skompilować samą MonoGame ze źródła. Udało mi się to zrobić przez rozwidlenie ich repo i skompilowanie rozwiązania MonoGame.Framework.MacOS.

Odwołanie się do zespołu, który powstaje w miejsce wydanego MonoGame.Framework.dll, umożliwia mojej aplikacji testowej tworzenie i uruchamianie.

+0

Postępowałem zgodnie z instrukcjami, aby skompilować MonoMac.dll, a następnie dodałem to jako odniesienie do projektu zamiast istniejącego MonoMaca, ale wciąż mam ten sam wyjątek. Mam nadzieję, że muszę znaleźć konkretne zobowiązanie do zbudowania? –

+0

@AntonGuryanov Zobacz moją zmianę. Nie wiem, czy to jest zalecane rozwiązanie, czy nie, ale powinno ci ono pomóc. – TheNextman

+1

Dzięki, teraz działa! Trzeba tylko wspomnieć, że nie trzeba ich przekierowywać, po prostu klonować i budować. –

Powiązane problemy