WPF < -> XNA - كيفية الجمع بين هاتين التقنيتين؟

StackOverflow https://stackoverflow.com/questions/2165475

  •  24-09-2019
  •  | 
  •  

سؤال

لقد قرأت في أماكن قليلة بالفعل ، من الممكن الجمع بين XNA و WPF. ما أحتاجه شخصياً هو محرر اللعبة/الخريطة ، والذي سيكون في الواقع اللعبة نفسها (سيكون للمحرك يعمل في الخلفية) ، لأن نظام الخريطة يكتب الإصدارات المسلسل من الكائنات إلى XML ، والتي يتم تحميلها لاحقًا.

مشكلتي هي أنني أريد تطبيقًا قياسيًا ، والذي سيقوم بتشغيل المحرك في الخلفية ، وإنشاء أصول اللعبة حيث يقوم المستخدم بإنشاءها من الواجهة الأمامية ، وبعد ذلك على تسلسلها ووضعها في XML.

سيأتي هذا أيضًا في متناول يدي ، إذا كان من الممكن تشغيل WPF من اللعبة ، بالنسبة إلى واجهة المستخدم ، إذا كان لدى أي شخص أي تجارب مع هذا ، فسأقدر ما إذا كان سيشاركه.

بعد فترة وجيزة: كيف يمكنني عمل تطبيق WPF (أو WinForms) ، الذي يعمل على رمز XNA في أحد سيطرةه ، وفي الخلفية؟

هل كانت مفيدة؟

المحلول

لا أعرف أي شخص يقوم بتضمين عناصر التحكم في WPF في نافذة لعبة XNA. سيكون هذا أمرًا صعبًا للغاية بسبب حقيقة أن كلاهما يستخدم DirectX لتقديمه. منذ السماح لك بالقيام اى شى مع XNA ، من شأن ذلك أن يجعل WPF تراكبًا وما إلى ذلك صعبًا للغاية. إذا كنت تبحث عن عناصر التحكم داخل اللعبة ، فحاول الخروج neoforce.

الذهاب في الاتجاه الآخر أبسط بكثير (اقرأ: مدعوم بالفعل). أعلم أنه يمكنك تضمين نافذة XNA في عنصر تحكم مستخدم Windows AA - انظر هذه لتوضيح سريع. لقد استخدمت تقنية مشابهة لتلك لتكوين محرر لعبتي. لسوء الحظ ، سيكون الاندماج مباشرة مع WPF مزعجًا أيضًا (نظرًا لنفس الأسباب التي لا يمكنك وضعها في WPF عناصر التحكم في XNA Gamewindow). ومع ذلك ، يمكنك تضمين هذا السيطرة على WindowsFormsHost وقد يعمل ذلك بشكل جيد (لم يحاول ذلك على الإطلاق).

من الواضح أن هذا لن يعمل على Xbox 360 ، نظرًا لأن WinForms و WPF غير متاحين هناك ، لكنك عادة لا تضع محررك على 360 على أي حال.

ايضا: آمل ألا تستخدم تسلسل XML لتحميل ملفات اللعبة الخاصة بك في وقت التشغيل - هذا هو خط أنابيب محتوى XNA.

نصائح أخرى

لقد نشرت هذا في سؤال آخر ، ولكن يبدو أن هناك الكثير من الأسئلة حول كيفية دمج تحكم يشبه XNA في WPF. قرأت مدونة Nick Gravelyn و Arcane.xna Post ، وتمكنت من تطوير شيء مشابه لكل من يوازي Microsoft.xna.framework.game مع توفير توافق WPF. يمكنك حتى إنشاء فصول ألعاب متعددة ، إذا كنت ترغب في ذلك:

https://xnaml.codeplex.com/

هل حاولت إنشاء تطبيق WPF ثم إضافة مراجع XNA إليه؟

يجب أن تكون قادرًا على القيام بذلك ، ثم إنشاء فصل يرث من GameObject ووضع ذلك في تطبيق WPF الخاص بك.

تتمتع WPF بإمكانية الوصول المباشر إلى الكثير من DirectX وكذلك الكاميرات والكثير من الأشياء التي تحتاجها فقط لكتابة اللعبة في WPF. ربما مجرد استخدام طرق XNA لبعض الحسابات الخاصة بك.

بالتأكيد أستطيع أن أرى أكثر من طريقة للجلد هذه القط.

تحقق من هذا الموضوع في منتديات XNA: http://forums.xna.com/forums/p/1122/6455.aspx

سوف يعطيك فكرة عن سبب مزعج هذا التكامل و 2) يوضح لك كيفية استضافة عنصر تحكم XNA على نموذج WPF (ابحث عن منشورات Zman). بقدر ما استخدم WPF داخل XNA لتقديم واجهة المستخدم الرسومية ، لن أحمل أنفاسي. هناك سبب ضئيل للغاية لميكروسوفت للخروج في طريقها لدعم هذا ، ويختبر وحدة التحكم في واجهة المستخدم الرسومية في مواجهة واجهة المستخدم الرسومية غير ذلك بشكل جيد مع واجهة برمجة التطبيقات المخصصة للنقطة والنقر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top