Android: كيفية جعل ملفات أصول اللعبة قابلة للقراءة من رمز C ++ باستخدام NDK
-
21-09-2019 - |
سؤال
أقوم بإنشاء لعبة باستخدام منفذ محرك الرسومات Irrlicht C ++ 3D إلى منصة Android. محرك الرسومات مكتوب في C ++. يجب أن أكون قادرًا على تحميل الشبكات والقوام وما إلى ذلك من رمز C ++. تتمثل خطتي الحالية في وضع جميع ملفات أصول اللعبة إما في دليل RES/RAW أو دليل الأصول ، ثم عند بدء التشغيل ، قم بنسخ هذه الملفات إلى SDCARD بحيث يمكن الوصول إليها من رمز IRRLICHT C ++. هل هذه هي أفضل طريقة لجعل ملفات وسائط اللعبة متاحة من C ++؟
المحلول
هناك عدة طرق للقيام بذلك ... كل منهم لديه قيودهم الخاصة ، لذلك لا يمكنني تقديم توصية جيدة دون معرفة المزيد عن وضعك. فيما يلي بعض الروابط للمناقشات مع بعض النصائح التي قد تساعدك على الخروج:
http://groups.google.com/group/android-ndk/browse_thread/thread/842ca9d7d82995b0
يمكنني أن أقدم لكم المزيد من الاقتراحات المحددة إذا كنت أعرف أ) عدد الموارد التي تحتاجها للوصول ب) حجم أكبر مورد ستواجهه ، وبشكل أكثر تحديداً ، هل كل مواردك <1 ميجابايت غير مضغوطة؟
نصائح أخرى
من الناحية النظرية ، يمكنك تمرير InputStream إلى رمز C ++ الأصلي وجعله يدعو أساليبه. يمكنك حتى تنفيذ isTream على رأس هؤلاء. ومع ذلك ، لا أعتقد أن هذا هو ما تتبعه.
ضع في اعتبارك أن ملفات الأصول في APK لا يتم تخزينها ، حسناً ، ملفات. إنها مضغوطة ومؤرشفة - APK هو في الواقع ملف zip أعيد تسميته. لذلك أوصي بنسخ الأصل إلى مجلد بيانات من داخل Java ، ثم تمرير اسم الملف لتلك النسخة إلى C ++.
هذا ، بالمناسبة ، يستبعد تمامًا الكتابة إلى تلك الأصول.