- ImGui (Dear ImGui) هي مكتبة واجهة مستخدم رسومية صغيرة تعتمد على النمط الفوري لـ C++.
- ترسم القائمة من جديد في كل إطار من خلال استدعاءات الدوال، دون الحاجة إلى شجرة عناصر واجهة المستخدم.
- تفضلها التطبيقات والأدوات الأصلية لتراكبات منخفضة الكمون فوق مشهد ثلاثي الأبعاد.
- إنها نمط C++؛ يستخدم تعديل Java Fabric خطافات واجهة المستخدم الخاصة باللعبة بدلاً من ذلك.
ImGui، واختصارًا لـ Dear ImGui، هي مكتبة واجهة مستخدم رسومية (GUI) صغيرة تعتمد على طريقة العرض الفورية، مصممة للغة C++. ترسم قائمة جديدة في كل إطار من خلال استدعاءات الدوال البسيطة بدلاً من الاحتفاظ بشجرة من كائنات الأدوات. وهذا يجعلها سريعة الإعداد وسهلة الإضافة فوق حلقة العرض الحالية للعبة، ولهذا السبب تستخدمها أدوات التطوير والتطبيقات الأصلية للتراكبات منخفضة الكمون.
أين Opal يناسب
Opal هو تعديل Fabric، لذا فهو يبني واجهته من خلال آليات واجهة المستخدم الخاصة باللعبة بدلاً من ImGui. إذا كنت ترغب في إضافة ميزات دون الحاجة إلى تعديل التعليمات البرمجية الأصلية، فإن محرك JavaScript للبرمجة النصية GraalVM هو المكان المناسب للبدء. راجع دليل الإعداد و دليل البرمجة النصية
ما المقصود بـ "الوضع الفوري"
يعيد ImGui بناء الواجهة في كل إطار. أنت لا تنشئ كائن زر وتخزينه. أنت تستدعي دالة تقول "ارسم زرًا هنا"، وتخبرك هذه المكالمة برسم الزر وإعلامك فيما إذا تم النقر عليه في هذا الإطار.
تعمل مجموعة أدوات "الوضع المحتفظ" بالطريقة الأخرى. إنها تحتفظ بشجرة عناصر واجهة مستخدم طويلة الأمد في الذاكرة، وتقوم بتحديث هذه الشجرة عند حدوث تغييرات في الحالة. يضحي الوضع الفوري بهذه البنية المستمرة من أجل التعليمات البرمجية التي تقرأ من الأعلى إلى الأسفل وتعيش بجوار حالتك الخاصة.
لماذا تختار الأدوات والعملاء هذا الأسلوب
ImGui شائع للقوائم التي تظهر فوق مشهد ثلاثي الأبعاد. الأسباب عملية.
- زمن استجابة منخفض: يتداخل مع إطار تقوم بالفعل بعرضه، لذلك تتفاعل القائمة على الفور.
- تكامل قليل: نافذة وعدد قليل من عناصر التحكم هي بضعة استدعاءات للدالة. لا يوجد ملف تخطيط ولا يوجد مؤشر ترابط واجهة مستخدم منفصل لإدارته.
- مستقل: تمتلك المكتبة عدد قليل من التبعيات وتندمج في الخلفيات الرسومية الشائعة، لذلك لا تسحب إطار عمل ثقيلًا.
- صديق للتصحيح: نفس الاستدعاءات التي تبني قائمة إصدار تبني أيضًا اللوحات المؤقتة للتصحيح التي يستخدمها المطورون أثناء بناء ميزة.
الوضع الفوري مقابل الوضع المحتفظ
| الجانب | وضع فوري (ImGui) | مجموعة أدوات الوضع المحتفظ |
|---|---|---|
| ملكية الحالة | التعليمات البرمجية الخاصة بك تحتفظ بالبيانات | تحتفظ مجموعة الأدوات بشجرة الأدوات |
| العمل الإطاري | إعادة بناء واجهة المستخدم في كل إطار | تحديث الشجرة عند التغيير |
| تكلفة الإعداد | بضعة استدعاءات للدوال | المزيد من الهيكل مقدمًا |
| الأنسب | التراكبات والأدوات وقوائم ألعاب الفيديو | تطبيقات على غرار المستندات الكبيرة |
كيف يتناسب مع عميل أصلي
غالبًا ما يقوم عميل الأداة الأصلية المكتوب بلغة C++ برسم القائمة الخاصة به باستخدام ImGui فوق إطار اللعبة. يعمل رمز القائمة داخل حلقة العرض، ويقرأ إعدادات العميل الخاصة به، ويكتب التغييرات مباشرةً مرة أخرى. لا توجد عملية واجهة مستخدم منفصلة، لذا فإن تبديل ميزة هو استدعاء دالة واحدة مقابل قيمة يمتلكها العميل بالفعل.
هذا نمط C++. يمكن لـ Fabric المكتوب بلغة Java الوصول إلى واجهته من خلال خطافات واجهة المستخدم الخاصة باللعبة، لذلك يظهر ImGui بشكل أساسي في العملاء الذين يتم توزيعهم كتعليمات برمجية أصلية بدلاً من تعديلات Java.
الأسئلة الشائعة
المكتبة الأساسية هي C++، وهذا هو المكان الذي تستخدم فيه معظم المشاريع. توجد روابط مجتمعية للغات أخرى، ولكن الاستخدام الأصلي والأكثر شيوعًا هو في أدوات الألعاب والتطبيقات الأصلية المكتوبة بلغة C++
من البداية، يبدو كأداة تطوير عادية. المشاريع التي ترغب في استخدام تصميم مخصص أو ترسم أدواتها الخاصة فوقه، يمكن أن يبدو القائمة المرفقة مختلفًا تمامًا عن التصميم الافتراضي
ليس بالطريقة المعتادة. يعمل تعديل Fabric في Java ويستخدم نظام واجهة المستخدم الرسومية (GUI) الخاص باللعبة. غالبًا ما يكون العميل الأصلي المكتوب بلغة C++ هو الموطن النموذجي لـ ImGui
لا. إعادة بناء واجهة المستخدم رخيص، والبرنامج بالفعل يعرض كل إطار، لذا فإن القائمة تتبع العمل الذي يتم على أي حال