VS2012

2013-01-24 16 views
7
साथ Monogame का उपयोग कर लोड करने के लिए सामग्री प्राप्त नहीं कर सकता

मेरे कोडVS2012

new GameFont(Content.Load<SpriteFont>("LoadingFont"), "LoadingFont")

है कि मैं क्या पढ़ा है के अनुसार, आप, .xnb प्रारूप में अपनी संपत्तियों को संकलित करने के लिए VS2010 उपयोग करने के लिए जो मैं किया है, और उन्हें अपनी बिन निर्देशिका में सामग्री सबफ़ोल्डर में रखें, जिसे मैंने भी किया है। हालांकि, मुझे यह कहते हुए एक त्रुटि मिल रही है कि "लोडिंगफॉन्ट संपत्ति लोड नहीं हो सका!"।

मुझे सच में यकीन नहीं है कि और क्या करना है। मैंने एक बहुत पुरानी पोस्ट पढ़ी है कि एक्सएनए 4 का उपयोग करके बनाई गई संपत्ति काम नहीं करेगी, लेकिन मुझे नहीं पता कि यह अभी भी सच है या एक्सएनए के मेरे संस्करण को 3.1 में कैसे बदला जाए।

कोई विचार? शायद वीएस -2010 का उपयोग किए बिना एक बेहतर तरीका है?

+0

आपका लक्ष्य क्या प्लेटफ़ॉर्म है? विंडोज 7 या निचला, विंडोज 8, आदि। मोनोगेम की नवीनतम रिलीज XNA 4.0 संगतता प्राप्त कर रही है ताकि आप XNA 3.1 पर वापस नहीं जाना चाहें। – borrillis

उत्तर

11

क्या आपने अपनी प्रोजेक्ट के सामग्री फ़ोल्डर में सामग्री जोड़ा है और बिल्ड एक्शन टू कंटेंट (प्रॉपर्टी विंडो में) सेट किया है।

मुझे बिल्कुल यकीन नहीं है कि .xnb प्रारूप में संपत्ति का उपयोग करने की प्रक्रिया क्या है। मुझे पता है कि यह इस तरह से किया जा सकता है लेकिन मैं आम तौर पर कच्चे छवि को जोड़ता हूं और फ़ाइलों को सीधे अपने सामग्री फ़ोल्डर में जोड़ता हूं। हालांकि इस तरह से करने के लिए फ़ॉन्ट थोड़ा मुश्किल हो सकता है।

संपादित करें: 2015

चीजों का एक बहुत बदल गया है के बाद से इस सवाल का लिखा गया था। इन दिनों मोनोगेम के पास एक्सएनबी फाइलों में सामग्री प्रोसेसिंग के लिए Pipeline tool है। कोशिश करने वाली पहली चीज़ नई पाइपलाइन का उपयोग करके अपने SpriteFont को संसाधित करना होगा। इस तरह आप पूरी तरह से एक्सएनए पर निर्भर रहने की आवश्यकता से बच सकते हैं।

वैकल्पिक रूप से, मोनोगेम में फ़ॉन्ट समस्याओं को प्राप्त करने का एक और तरीका उन्हें BMFont टूल का उपयोग करके बनावट में प्रस्तुत करना है और MonoGame.Extended का उपयोग अपने गेम में प्रस्तुत करने के लिए करना है।

एक बार जब आप installed MonoGame.Extended आप बस के रूप में आप एक SpriteFont BMFont के साथ बनाया फोंट लोड लेकिन इसके बजाय BitmapFont वर्ग का उपयोग कर सकते हैं है।

_bitmapFont = Content.Load<BitmapFont>("my-font"); 

फिर तो जैसे कुछ पाठ प्रस्तुत करना:

_spriteBatch.Begin(); 
_spriteBatch.DrawString(_bitmapFont, "Hello World", new Vector2(100, 200), Color.Red); 
_spriteBatch.End(); 

मैं एक full tutorial on my blog

+1

यह बहुत अधिक है। जाहिर है, उन्होंने वास्तव में समाधान में होने के लिए/bin/content में होने के कारण मोनोगेम के एक संस्करण में इसे कैसे किया है। समाधान में इसे जोड़ना इसे ठीक कर दिया गया है :) – NibblyPig

+4

बिल्ड कॉपी प्रॉपर्टी को फ़ाइल पर स्वयं "कॉपी करें अगर नई" पर सेट करना, मेरे लिए काम किया। – Mastro

+0

@ ashes999 मैंने लिंक को अपडेट किया है जो काम करता है। 2013 से इस सवाल से पूछा गया था कि चीजें बदल गई हैं। – craftworkgames

1

@craftworkgames की तरह है मैं तुम्हें एक पूरा जवाब नहीं दे सकता। लेकिन एक्सएनए 3.1 के साथ आए पारंपरिक सामग्री पाइपलाइन 4 में चली गई है। इसलिए किसी भी संपत्ति को थोड़ा अलग तरीके से लोड करने की आवश्यकता है। उदाहरण के लिए, एक स्प्राइट मैं क्या प्रदर्शित करने के लिए निम्नलिखित एक .png संपत्ति लोड करने के लिए:

rock = Texture2D.FromStream(GraphicsDevice, TitleContainer.OpenStream(@"Rock-Large-Stones-PT.png")); 

और सामान्य रूप समाधान के लिए .png फ़ाइल जोड़ें। मुझे यकीन है कि यह फोंट के लिए कुछ समान होगा, लेकिन मुझे अभी तक यह पता नहीं लगा है;)

8

मैं बिना किसी परेशानी के वीएस2012 में मोनोगेम का उपयोग कर रहा हूं; Content.Load<T>("myContent") अभी भी मेरे लिए काम करता है। एक चीज जो मुझे हाल ही में पकड़ रही है (टिप: नींद से वंचित होने पर कोड न करें) यह है कि आपको अपनी संपत्तियों को जांचना होगा "समाधान निर्देशिका में कॉपी करें" समाधान एक्सप्लोरर में, या अन्यथा जब खेल बनाता है, परिसंपत्तियां इसके साथ नहीं जाएंगी, यही कारण है कि आपको वह त्रुटि मिलती है - यह लोड नहीं कर सकता है जो वहां नहीं है! अपनी संपत्ति पर राइट-क्लिक करें और गुणों के अंतर्गत देखें। अगर वे "कॉपी न करें" पर सेट हैं तो आप इसे बदलना चाहेंगे।

+0

विंडोज के लिए विकास करते समय यह सब ठीक है लेकिन अन्य प्लेटफार्मों (जैसे एंड्रॉइड, आईओएस, विन 8) के लिए काम नहीं करेगा – nathanchere

+1

मुझे सुनने की ज़रूरत थी "टिप: नींद से वंचित होने पर कोड न करें" और फिर उसने मुझे मारा^^ धन्यवाद! – BjarkeCK

0

मुझे इसी तरह की समस्या थी लेकिन 'विंडोज 8 स्टोर' के साथ एक लक्षित मंच के रूप में ... जबकि विंडोज ओपन जीएल संस्करण के साथ सब कुछ ठीक था। विंडोज 8 पर मुझे सामग्री की कोशिश करने पर "गैर-सामग्री फ़ाइल के रूप में लोड नहीं किया जा सका"। लोड ("फ़ॉन्ट्स/टेस्टफॉन्ट")।

मैंने मोनोगेम डीएलएल को मोनोगेम के साथ अपने समाधान में बदल दिया। विन्डोज़ 8 प्रोजेक्ट (मैंने कोडप्लेक्स से स्रोत डाउनलोड किए) और मैंने कुछ डीबगिंग किया ... और पाया कि मोनोगेम बिन में सामग्री फ़ोल्डर की तलाश में है ... \ डीबग \ AppX फ़ोल्डर ... निर्माण के दौरान सामग्री फ़ोल्डर को अलग-अलग जगह पर कॉपी किया गया है। इसलिए जब मैंने मैन्युअल रूप से ऐपएक्स फ़ोल्डर में सामग्री फ़ोल्डर की प्रतिलिपि बनाई, तो त्रुटि आई है और मेरा गेम प्रोटोटाइप ठीक काम करता है।

मुझे लगता है कि मुझे या तो ऐपएक्स से संबंधित परियोजना प्राथमिकताओं में कुछ सेटिंग याद आई है (संभवतः यह फ़ोल्डर विंडोज 8 डिवाइस एमुलेटर के लिए आवश्यक है?) या ... मोनोगेम को विभिन्न जगहों पर सामग्री फ़ोल्डर की तलाश करनी चाहिए ... वैसे भी मैं अब सामग्री फ़ोल्डर को मैन्युअल रूप से नवीनीकृत कर दूंगा क्योंकि संकलन के दौरान इसे गलत स्थान पर कॉपी किया गया है।

मेरे पास मेरे प्रोजेक्ट में सामग्री फ़ोल्डर है और बिल्डिंग सही ढंग से सेट की गई है (सामग्री) ... और 'हमेशा कॉपी करें' चुना जाता है लेकिन बिल्ड (शिकायत) के दौरान सामग्री फ़ोल्डर को प्रतिलिपि बनाई जाने पर डीबग फ़ोल्डर में कॉपी किया जाता है डीबग \ AppX फ़ोल्डर को अन्यथा MonoGame इसे नहीं ढूंढ सकता है। (मैं शायद सही रास्तों के साथ कुछ गलत है क्योंकि मैं काम पर वर्तमान में कर रहा हूँ और इस मुद्दे को अपने घर पीसी पर है)

शायद यह मेरी दृश्य स्टूडियो में सिर्फ कुछ विन्यास मुद्दा है 2012

आशा इस जानकारी में मदद करता है।

1

मुझे एक ही समस्या नहीं थी, अगर आपको यह हल हो गया है या नहीं, लेकिन यहां मैंने जो किया है।

"सामग्री" फ़ोल्डर के तहत मोनोगेम सामग्री पाइपलाइन पर क्लिक करें।

अपने स्प्राइटफॉन्ट या बनावट में जोड़ें।

Monogame सामग्री पाइपलाइन है कि आप से कार्रवाई में बदलाव होने पर आप बस सामग्री लोड करना चाहते हैं

"बनाएँ" के लिए "कॉपी" तो फिर में सुनिश्चित करें; बनावट = सामग्री। लोड ("texture.png");

उम्मीद है कि यह मदद करता है :)