يوفّر المكوّن الإضافي Vkquality لمحرّك Unity اقتراحات وقت الإطلاق. واجهة برمجة تطبيقات الرسومات—Vulkan أو OpenGL ES—لاستخدامها مع لعبتك على أنظمة تشغيل الأجهزة.
تنصح Vkquality بـ Vulkan على مجموعة أجهزة محدودة أكثر من Unity. قائمة السماح الافتراضية للمحرك. استخدم Vkquality لاكتساب مزايا أداء Vulkan مع حصر استخدام Vulkan على الأجهزة الأحدث ذات الرسومات الجديدة السائقين، مما يحد من تعرض لعبتك لمشكلات السائق. Vkquality فقط تقدم توصيات للجودة، وليس ضمانات، حيث إنه لا يزال من الممكن مواجهة مشكلات برنامج التشغيل على الأجهزة الموصى بها. يدعم Vkquality القوائم المخصصة، التي تتيح لك إضافة أو إزالة اقتراحات بشأن الأجهزة في اللعبة.
تفعيل Vulkan في لعبة محرّك Unity
تتطلب Vkquality أن تحتوي لعبتك على كل من عارضي OpenGL ES وVulkan. مفعَّلة في إعدادات مشروع Unity. فعّل برامج العرض باستخدام زر Auto خيار واجهة برمجة التطبيقات Graphics API أو من خلال ضبط يدويًا واجهات برمجة التطبيقات الخاصة بالرسومات.
الحصول على المكوِّن الإضافي Vkquality لمحرك Unity
نزِّل المكوّن الإضافي Vkquality من GitHub. المكون الإضافي هو متوافقة مع Unity 2021 والإصدارات الأحدث يجب استخدام الإصدار Unity 2021 من قناة الدعم الطويل الأمد (LTS) أو إصدار أحدث لتفعيل Vulkan على Android. تحتوي حزمة المكونات الإضافية على نموذج مشروع أساسي يستخدم المكون الإضافي لتعيين واجهة برمجة تطبيقات الرسومات عند بدء التشغيل ثم عرض مجموعة على واجهة برمجة التطبيقات للرسومات النشطة للجهاز.
إدارة قائمة اقتراحات Vkquality Vulkan
تتضمّن Vkquality قائمة اقتراحات تلقائية بالأجهزة المتوافقة. بالنسبة حول استخدام قائمة اقتراحات مخصصة، راجع قسم استخدام قائمة الاقتراحات
تشمل قائمة الاقتراحات ثلاث فئات:
- قائمة السماح بأجهزة Vulkan
- قائمة السماح باقتراحات وحدة معالجة الرسومات
- قائمة حظر اقتراحات وحدة معالجة الرسومات
تطابق قائمة الأجهزة المسموح بها
تتحقّق Vkquality أولاً مما إذا كان الجهاز النشط مضمّنًا في السماح للجهاز
وما إذا كان يعمل بالحد الأدنى من إصدار Android وبرنامج تشغيل Vulkan
المحدد في قائمة السماح لهذا الجهاز. إذا تم استيفاء هذه المعايير،
تقترح Vkquality Vulkan من خلال إرجاع
قيمة التعداد RECOMMENDATION_VULKAN_BECAUSE_DEVICE_MATCH
.
إذا كان الجهاز ضمن قائمة السماح، ولكنه يعمل بإصدار Android أو برنامج تشغيل
إصدار أقل من الحد الأدنى المحدد له في قائمة السماح، Vkquality
يقترح استخدام OpenGL ES من خلال عرض RECOMMENDATION_GLES_BECAUSE_OLD_DRIVER
.
تطابقات وحدة معالجة الرسومات المقترَحة
إذا لم يتم العثور على أي جهاز مطابق في قائمة الأجهزة المسموح بها، تقيّم Vkquality
طراز وحدة معالجة الرسومات وإصدار برنامج التشغيل وفقًا لاقتراح وحدة معالجة الرسومات ينطبقان ويرفضان
القوائم. إذا تطابق طراز وحدة معالجة الرسومات وإصدار برنامج التشغيل مع إدخال في وحدة معالجة الرسومات
قائمة السماح الموصى بها، تقترح Vkquality Vulkan من خلال إرجاع
ثابت التعداد: RECOMMENDATION_VULKAN_BECAUSE_PREDICTION_MATCH
إذا تطابق طراز وحدة معالجة الرسومات وإصدار برنامج التشغيل مع إدخال في وحدة معالجة الرسومات
قائمة حظر الاقتراحات، تقترح Vkquality استخدام OpenGL ES من خلال عرض
RECOMMENDATION_GLES_BECAUSE_PREDICTION_MATCH
اقتراحات بلا مطابقة
إذا لم يتم العثور على أي تطابقات، تقترح Vkquality Vulkan إذا كان مستوى واجهة برمجة تطبيقات Android
فإن الجهاز قيد التشغيل يساوي أو أعلى من مستوى واجهة برمجة التطبيقات المستقبلية في
قائمة التوصيات. تحتوي قائمة الاقتراحات التلقائية على مستوى واجهة برمجة تطبيقات مستقبلي بقيمة
36، وهو ما يعني أنه على الأجهزة غير المتطابقة التي تعمل بالمستوى 36 أو أعلى لواجهة برمجة التطبيقات، وهي Vkquality
لعرض ثابت التعداد RECOMMENDATION_VULKAN_BECAUSE_FUTURE_ANDROID
.
إذا لم يتم العثور على أي تطابقات في قائمة السماح للأجهزة أو قوائم اقتراحات وحدة معالجة الرسومات،
وكان مستوى واجهة برمجة التطبيقات للجهاز أقل من مستوى واجهة برمجة التطبيقات المستقبلية، Vkquality
يقترح استخدام OpenGL ES من خلال عرض RECOMMENDATION_GLES_BECAUSE_NO_DEVICE_MATCH
.
أضِف ملف الأرشيف Vkquality إلى مشروعك.
المكوّن الإضافي Vkquality هو الملف VkQuality-1.x.x.aar
الموجود في
الدليل Assets/Android/Plugins
لأرشيف الحزمة التي تم تنزيلها. القيمة الفعلية
يتطابق رقم إصدار ملف .aar مع رقم إصدار الحزمة
اسم الأرشيف. لتثبيت المكوّن الإضافي، اتّبِع الخطوات التالية:
- انسخ ملف .aar إلى دليل
Assets/Android/Plugins
في مشروعك. (أنشئ الأدلّة الفرعيةAndroid
وPlugins
المطلوبة في حال: غير موجودة).
- اختيار ملف المكوّن الإضافي
VkQuality-1.x.x
في التسلسل الهرمي مشروع Unity لإظهار إعدادات الاستيراد في لوحة أداة الفحص. تأكَّد من أنّ Android الأساسي.
استخدام نشاط مخصّص للاتصال بـ Vkquality
على عكس المكوّنات الإضافية المعتادة لمحرك Unity، يجب تنفيذ Vkquality للحصول على اقتراح واجهة برمجة التطبيقات للرسومات قبل إعداد محرّك Unity. بعد ذلك، تستخدم ميزة وسيطات سطر الأوامر لمشغّل Unity لضبط رسومات واجهة برمجة التطبيقات استنادًا إلى توصية Vkquality. على Android، تمرير تتطلب وسيطات سطر الأوامر إلغاء السلوك الافتراضي UnityPlayerActivity من خلال إنشاء تصميم مخصّص نشاطك.
إذا كانت لعبتك تستخدم نشاطًا مخصّصًا حاليًا، اطّلِع على القسم إضافة Vkquality إلى قسم النشاط المخصص الحالي. لإنشاء نشاط مخصص جديد راجِع القسم إضافة نشاط مخصّص إلى مشروع Unity الذي يليه.
إضافة نشاط مخصّص إلى مشروع محرّك Unity
يتم تضمين مثال على نشاط مخصص يستخدم Vkquality في المكوّن الإضافي
الحزمة في Assets/Plugins/Android/VkQualityTestActivity.java
.
لتخصيص الملف واستخدامه في لعبتك، اتّبِع الخطوات التالية:
- انسخ الملف
VkQualityTestActivity.java
إلى دليلAssets/Plugins/Android
. - عليك إعادة تسميتها إلى اسم مناسب للعبتك (على سبيل المثال،
MyGameActivity.java
). - افتح الملف في محرِّر نصوص.
- غيِّر اسم الفئة من "
VkQualityTestActivity
" إلى الاسم الذي منحته (على سبيل المثال،MyGameActivity.java
). - تغيير اسم الحزمة من "
com.google.android.games.VkQualityTest
" إلى يجب مطابقة قيمة الحقل اسم الحزمة في إعدادات مشروع Unity فئة المشغّل ضمن إعدادات أخرى (على سبيل المثال،com.mycompany.mygame
). - احفظ الملف وأغلقه.
يُرجى إضافة ملف بيان مخصّص يشير إلى نشاطك المخصّص وإخبار Unity بذلك. لاستخدام ملف البيان المخصّص:
- انسخ ملف
AndroidManifest.xml
منAssets/Plugins/Android
. دليل حزمة المكون الإضافي إلىAsset/Plugins/Android
لمشروعك الدليل. - افتح الملف في محرِّر نصوص.
- غيِّر قيمة الإعداد
activity android:name
منcom.google.android.games.VkQualityTest.VkQualityTestActivity
إلى أسماء الحزم والأنشطة التي استخدمتها في الخطوات السابقة (على سبيل المثال،com.mycompany.mygame.MyGameActivity
). - احفظ الملف وأغلقه.
- افتح نافذة إعدادات Unity واختَر إعدادات المشغّل. توسيع قسم إعدادات النشر، ثم تحقَّق من البيان الرئيسي المخصَّص .
تم إعداد مشروعك الآن لاستخدام النشاط المخصّص الذي يطلق عليه Vkquality وتختار Vulkan أو OpenGL ES بناءً على توصية Vkquality.
إضافة Vkquality إلى نشاط مخصّص حالي
إذا كانت لعبتك تتضمن حاليًا نشاطًا مخصّصًا يتخطى الإعدادات التلقائية
UnityPlayerActivity
، يمكنك دمج اقتراحات Vkquality من خلال إضافة
الرمز التالي:
أولاً، أضف عبارة Vkquality إلى قائمة الاستيراد في أعلى ملف النشاط المخصص:
Kotlin
import com.google.android.games.vkquality.VKQuality;
Java
import com.google.android.games.vkquality.VKQuality;
بعد ذلك، أنشئ بعض الثوابت في نص الفئة Activity
خيارات واجهة برمجة تطبيقات الرسومات:
Kotlin
companion object { private const val OVERRIDE_NONE = 0 private const val OVERRIDE_GLES = 1 private const val OVERRIDE_VULKAN = 2
Java
private static final int OVERRIDE_NONE = 0; private static final int OVERRIDE_GLES = 1; private static final int OVERRIDE_VULKAN = 2;
أنشِئ متغيّرًا لتتبُّع اختيار واجهة برمجة التطبيقات:
Kotlin
private var apiOverride = OVERRIDE_NONE
Java
private int apiOverride = OVERRIDE_NONE;
أضِف الدالة التالية إلى فئة Activity
:
Kotlin
private fun CheckVkQuality() { val vkQuality = VKQuality(this) val startResult = vkQuality.StartVkQuality("") if (startResult == VKQuality.INIT_SUCCESS) { // In the current release, we can assume GetVkQuality is // ready as soon as StartVkQuality has returned success. val getResult = vkQuality.GetVkQuality() LogVkQualityResult(getResult) apiOverride = when (getResult) { VKQuality.RECOMMENDATION_VULKAN_BECAUSE_DEVICE_MATCH, VKQuality.RECOMMENDATION_VULKAN_BECAUSE_PREDICTION_MATCH, VKQuality.RECOMMENDATION_VULKAN_BECAUSE_FUTURE_ANDROID -> OVERRIDE_VULKAN VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DEVICE, VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DRIVER, VKQuality.RECOMMENDATION_GLES_BECAUSE_NO_DEVICE_MATCH, VKQuality.RECOMMENDATION_GLES_BECAUSE_PREDICTION_MATCH -> OVERRIDE_GLES else -> OVERRIDE_GLES } vkQuality.StopVkQuality() } else { Log.e("VKQUALITY", "VkQuality start failed with result: $startResult") } }
Java
private void CheckVkQuality() { VKQuality vkQuality = new VKQuality(this); // An empty string specifies use of the default // built-in device list file. int startResult = vkQuality.StartVkQuality(""); if (startResult == VKQuality.INIT_SUCCESS) { // In the current release, we can assume GetVkQuality is // ready as soon as StartVkQuality has returned success. int getResult = vkQuality.GetVkQuality(); switch (getResult) { case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_DEVICE_MATCH: case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_PREDICTION_MATCH: case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_FUTURE_ANDROID: apiOverride = OVERRIDE_VULKAN; break; case VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DEVICE: case VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DRIVER: case VKQuality.RECOMMENDATION_GLES_BECAUSE_NO_DEVICE_MATCH: case VKQuality.RECOMMENDATION_GLES_BECAUSE_PREDICTION_MATCH: default: apiOverride = OVERRIDE_GLES; break; } vkQuality.StopVkQuality(); } else { Log.e("VKQUALITY", "VkQuality start failed with result: " + startResult); } }
عليك استدعاء الدالة CheckVkQuality
من أعلى قيمة التجاوز onCreate()
.
قبل استدعاء تنفيذ الفئة الأساسية:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { CheckVkQuality() super.onCreate(savedInstanceState) }
Java
@Override protected void onCreate(Bundle savedInstanceState) { CheckVkQuality(); super.onCreate(savedInstanceState); }
أخيرًا، أضِف إلغاءًا للدالة updateUnityCommandLineArguments()
.
التي تستخدم القيمة apiOverride
لتمرير وسيطة سطر أوامر إلى
محرّك Unity يحدّد واجهة برمجة تطبيقات الرسومات التي يجب استخدامها:
Kotlin
override fun updateUnityCommandLineArguments(cmdLine: String): String { if (apiOverride == OVERRIDE_VULKAN) { Log.i("VKQUALITY", "Passing -force-vulkan") return appendCommandLineArgument(cmdLine, "-force-vulkan") } else if (apiOverride == OVERRIDE_GLES) { Log.i("VKQUALITY", "Passing -force-gles") return appendCommandLineArgument(cmdLine, "-force-gles") } Log.i("VKQUALITY", "No override passed") // let Unity pick the Graphics API based on PlayerSettings return cmdLine } private fun appendCommandLineArgument(cmdLine: String, arg: String?): String { return if (arg == null || arg.isEmpty()) cmdLine else if (cmdLine == null || cmdLine.isEmpty()) arg else "$cmdLine $arg" }
Java
@Override protected String updateUnityCommandLineArguments(String cmdLine) { if (apiOverride == OVERRIDE_VULKAN) { Log.i("VKQUALITY", "Passing -force-vulkan"); return appendCommandLineArgument(cmdLine, "-force-vulkan"); } else if (apiOverride == OVERRIDE_GLES) { Log.i("VKQUALITY", "Passing -force-gles"); return appendCommandLineArgument(cmdLine, "-force-gles"); } Log.i("VKQUALITY", "No override passed"); // let Unity pick the Graphics API based on PlayerSettings return cmdLine; } private String appendCommandLineArgument(String cmdLine, String arg) { if (arg == null || arg.isEmpty()) return cmdLine; else if (cmdLine == null || cmdLine.isEmpty()) return arg; else return cmdLine + " " + arg; }
يستدعي نشاطك المخصّص الآن Vkquality عند بدء التشغيل ويختار Vulkan أو OpenGL. الإسبانية استنادًا إلى اقتراح Vkquality.
استخدام قائمة اقتراحات مخصّصة
حدِّد ملف قائمة اقتراحات مخصّصة من خلال تمرير اسم الملف.
تضمين القائمة إلى StartVkQuality()
بدلاً من تمرير سلسلة فارغة:
Kotlin
val startResult = vkQuality.StartVkQuality("CUSTOM_FILE_NAME.vkq")
Java
int startResult = vkQuality.StartVkQuality("CUSTOM_FILE_NAME.vkq");
تبحث ميزة Vkquality أولاً عن الملف في وحدة التخزين الداخلية لتطبيقك.
الدليل. وإذا لم يكن الملف في وحدة التخزين الداخلية، فسيحاول Vkquality تحميل ملف
ملف من مواد عرض حِزمة التطبيق. إذا لم يكن الملف في أي من الموقعين،
تعرض Vkquality قيمة التعداد ERROR_MISSING_DATA_FILE
.
لإنشاء ملف قائمة اقتراحات مخصّصة، استخدِم Vkquality List Editor. الموجودة في مستودع جيت هب. مستندات عن في README.