2013-03-28 8 views
5

मैं Unity3D के लिए एक fmod प्लगइन का उपयोग कर रहा के साथ पाया विधि नकल। विंडोज और ओएसएक्स के लिए संकलन ठीक है क्योंकि मैं गतिशील रूप से डीएलएल/डाइलिब लोड कर सकता हूं। समस्या तब आती है जब मैं आईओएस के लिए संकलित करता हूं। मैंUnity3D - ios fmod

[DllImport("__Internal")] 

क्योंकि आईओएस को स्थाई रूप से जुड़े पुस्तकालयों की आवश्यकता है। जब मैं हालांकि संकलन मैं एक

SystemException: Duplicate native method found : FMOD_System_CreateSound. Please check your source carefully. 

मैं काफी यकीन है कि मैं प्रतीक नकल नहीं है कर रहा हूँ मिलता है। मुझे लगता है कि इस तथ्य यह है कि एकता FMODs ही आयात करता है और कहा कि दो टकराने जा सकता है की वजह से हो सकता है ... लेकिन अगर यह मामला है, मुझे आश्चर्य है कि FMOD_System_CreateSound पहले एक पकड़ा है हूँ। क्या इसके चारों ओर एक रास्ता है? धन्यवाद!

हमेशा की तरह, मैं किसी भी अतिरिक्त जानकारी प्रदान करने के लिए खुश हो जाएगा!

यहां एक नमूना परियोजना है कि त्रुटि का कारण होगा: Sample Unity Project with FMod

संपादित करें: संघर्ष से आईओएस की अनुमति नहीं दे कार्यों एक ही नाम है भले ही वे एक ही हस्ताक्षर की जरूरत नहीं है कारण होता था। समान नाम वाले कार्य (इस प्रकार कुछ fmod विशेषताएं है कि मैं जरूरत नहीं थी को हटाने) निकालने के बाद, मैं आईओएस के लिए संकलन कर सकते हैं, लेकिन जब शुरु कर रहा है क्योंकि fmod पहले से ही एकता से आरंभ नहीं हो जाता अपेक्षा के अनुरूप, मैं अभी भी कोई त्रुटि मिलती है।

+1

मैं क्योंकि एकता वास्तव में पहले से ही इसे लागू किया एप्पल से एक ही समस्या थी, गम्यता कोड के साथ। क्या आपने यूनिटी एपीआई पर एफएमओडी का उपयोग करने का प्रयास किया था? या क्या एफएमओडी से आपको एक फीचर गुम है जो आपको चाहिए? मैंने पढ़ा है कि एकता ने एफएमओडी की कुछ विशेषताओं का खुलासा किया। – JeanLuc

+1

क्या आपने इसे आजमाया? http://www.squaretangle.com/FMODUnity.html – JeanLuc

+1

यूनिटी एपीआई पर एफएमओडी मुझे आईओएस सैंडबॉक्स के बाहर से डेटा स्ट्रीम करने की अनुमति नहीं देगा। मुझे पूर्ण एफएमओडी एपीआई चाहिए। स्क्वायर टेंगल प्लगइन समस्या को हल नहीं करता है। यह बस विंडोज एपीआई से .cs का उपयोग कर रहा है और उन्हें यूनिटी प्रोजेक्ट में शामिल कर रहा है। साथ ही, यह उस पृष्ठ आप लिंक किए गए है कि यह आईओएस पर काम नहीं करता पर कहते हैं;) –

उत्तर

1

के पूर्ण संस्करण का उपयोग अपने संपादन के संदर्भ में और नमूना को देखने के बाद, यह सच है कि आपके पास नहीं हो सकता कंपाइलर के समान नाम के दो तरीके यह नहीं पहचानेंगे कि किससे लिंक करना है।

आसान ठीक जाहिर है उन्हें अलग ढंग से नाम के लिए है।

आरंभीकरण के लिए, यदि आप fmod एकता 3 डी पहले से बनाए कि उपयोग कर सकते हैं, तो आप यह reinitialize करने के लिए नहीं है।

मुझे लगता है कि उस वस्तु के लिए सूचक डुप्लिकेट आरंभीकरण दूर करने के लिए पर्याप्त होगा। उम्मीद है कि यह स्पष्ट है।

+0

मैंने सिस्टम ऑब्जेक्ट का संदर्भ प्राप्त करने के लिए सी # के बिल्टिन प्रतिबिंब का उपयोग करने की कोशिश कर आज इस समाधान को देखना शुरू कर दिया।यद्यपि यह काफी नहीं मिल सका ... मैंने किसी भी चीज से पहले मुख्य.एमएम में एफएमओडी को आजमाया और शुरू किया और वास्तव में एकता खुश नहीं है कि एफएमओडी शुरू हो गया है! मैं इसे देखता रहूंगा। मैंने यह भी देखा कि आप एफएमओडी में एक स्ट्रीम के रूप में एकता में एक साउंडकिपिप बना सकते हैं, यह ठीक हो सकता है –

2

Unity3D पहले से ही जो संघर्ष आप देख रहे हैं खड़ी कर रहा है यह साथ आ जाते हैं कि एक सीमित fmod के संस्करण, है। दुर्भाग्यवश, इस समय को अक्षम करना संभव नहीं लगता है, ताकि आप FMOD

+1

यह आदमी एकता में fmod निष्क्रिय करने में सक्षम था: http://forum.unity3d.com/threads/124373-Working-FMOD-plugin-for -आईओएस-कौन-दिलचस्पी –

+1

आईओएस के कारण संघर्ष एक ही नाम रखने की अनुमति नहीं दे रहा था, भले ही उनके पास एक ही हस्ताक्षर नहीं है। समान नाम वाले कार्य (इस प्रकार कुछ fmod विशेषताएं है कि मैं जरूरत नहीं थी को हटाने) निकालने के बाद, मैं आईओएस के लिए संकलन कर सकते हैं, लेकिन जब शुरु कर रहा है क्योंकि fmod पहले से ही एकता से आरंभ नहीं हो जाता अपेक्षा के अनुरूप, मैं अभी भी कोई त्रुटि मिलती है। –