طريقة سهلة للسماح للمستخدم بتكوين كيفية تصرف المكون الإضافي دون الحاجة إلى صنع واجهة المستخدم الرسومية الخاصة بك. يمكن للمستخدم تغيير أي من الإعدادات التي تعرضها ، حتى اختصارات لوحة المفاتيح.
يمكن الوصول إلى مدير التكوين داخل اللعبة عن طريق الضغط على مفتاح Hotkey (افتراضيًا F1). تحوم فوق أسماء الإعداد لرؤية أوصافهم ، إن وجدت.
هناك نسختان من هذا البرنامج المساعد ، لـ Bepinex 5 (الإصدار 5.4.20 أو الأحدث ، أحادي فقط) و Bepinex 6 (Build Nightly 664 أو أحدث ، IL2CPP فقط).
ملاحظة: يعد ملف .xml في ZIP الإصدار مفيدًا لمطوري المكونات الإضافية عند الرجوع إلى configurationManager.dll في البرنامج المساعد الخاص بك ، وسيوفر أوصافًا للأنواع والأساليب إلى IDE. يمكن للمستخدمين تجاهله.
Arial.ttf
مفقودًا من النظام (الخط الافتراضي UI ، في بعض الألعاب). يمكن أن يحدث هذا عند تشغيل لعبة على Linux مع النبيذ الخاطئ.UnityEngine.IMGUIModule.dll
(يمكن إضافة دعم لبعض الألعاب باستخدام patcher الذي يعيد الأعضاء المفقودين ، مثال). سيعرض ConfigurationManager تلقائيًا جميع الإعدادات من Config
المكون الإضافي الخاص بك. سيتم استخدام جميع البيانات الوصفية (على سبيل المثال الوصف ، نطاق القيمة) بواسطة ConfigurationManager لعرض الإعدادات للمستخدم.
في معظم الحالات ، لا يتعين عليك الرجوع إلى ConfigurationManager.dll أو تفعل أي شيء مميز مع إعداداتك. ما عليك سوى التأكد من إضافة أكبر قدر ممكن من البيانات الأولية (سيساعد القيام بذلك على جميع المستخدمين ، حتى لو استخدموا ملفات التكوين مباشرة). أضف دائمًا الأسماء الوصفية والأسماء الرئيسية ، والأوصاف ، وقوائم أو نطاقات القيمة المقبولة (أينما تنطبق).
حدد AcceptableValueRange
عند إنشاء الإعداد الخاص بك. إذا كان النطاق 0f - 1f أو 0 - 100 ، فسيتم عرض شريط التمرير على أنه ٪ (يمكن تجاوز هذا أدناه).
CaptureWidth = Config . Bind ( " Section " , " Key " , 1 , new ConfigDescription ( " Description " , new AcceptableValueRange < int > ( 0 , 100 ) ) ) ;
حدد AcceptableValueList
عند إنشاء الإعداد الخاص بك. إذا كنت تستخدم التعداد ، فلن تحتاج إلى تحديد مقبول Valuelist ، فسيتم عرض جميع قيم التعداد. إذا كنت ترغب في إخفاء بعض القيم ، فسيتعين عليك استخدام السمة.
ملاحظة: يمكنك إضافة System.ComponentModel.DescriptionAttribute
إلى عناصر التعداد لتجاوز أسمائها المعروضة. على سبيل المثال:
public enum MyEnum
{
// Entry1 will be shown in the combo box as Entry1
Entry1 ,
[ Description ( " Entry2 will be shown in the combo box as this string " ) ]
Entry2
}
إضافة إعداد من نوع لوحة المفاتيح. استخدم قيمة هذا الإعداد للتحقق من المدخلات (التوصية باستخدام ISDown) داخل طريقة التحديث الخاصة بك.
تدعم فئة لوحة المفاتيح مفاتيح المعدل - التحول والتحكم و alt. يتم التعامل معها بشكل صحيح ، مما يمنع المشكلات الشائعة مثل K+Shift+التحكم الذي يؤدي إلى تحول K+عندما لا ينبغي أن يكون.
private ConfigEntry < KeyboardShortcut > ShowCounter { get ; set ; }
public Constructor ( )
{
ShowCounter = Config . Bind ( " Hotkeys " , " Show FPS counter " , new KeyboardShortcut ( KeyCode . U , KeyCode . LeftShift ) ) ;
}
private void Update ( )
{
if ( ShowCounter . Value . IsDown ( ) )
{
// Handle the key press
}
}
يمكنك تغيير كيفية عرض الإعداد داخل نافذة مدير التكوين عن طريق تمرير مثيل لفئة خاصة كعلامة للإعداد. يمكن تنزيل رمز الفصل الخاص هنا. ما عليك سوى تنزيل ملف .cs واسحبه إلى مشروعك.
فيما يلي مثال على ترتيب الإعدادات المتجاوز ووضع علامة على أحد الإعدادات على النحو المتقدم:
// Override IsAdvanced and Order
Config . Bind ( " X " , " 1 " , 1 , new ConfigDescription ( " " , null , new ConfigurationManagerAttributes { IsAdvanced = true , Order = 3 } ) ) ;
// Override only Order, IsAdvanced stays as the default value assigned by ConfigManager
Config . Bind ( " X " , " 2 " , 2 , new ConfigDescription ( " " , null , new ConfigurationManagerAttributes { Order = 1 } ) ) ;
Config . Bind ( " X " , " 3 " , 3 , new ConfigDescription ( " " , null , new ConfigurationManagerAttributes { Order = 2 } ) ) ;
إذا كنت تستخدم نوع إعداد غير مدعوم بواسطة ConfigurationManager ، فيمكنك إضافة إجراء درج لذلك. سيتم تنفيذ الإجراء داخل Ongui ، استخدم Guilayout لرسم الإعداد الخاص بك كما هو موضح في المثال أدناه.
لاستخدام درج تعيين مخصص لإعداد فردي ، استخدم حقل CustomDrawer
في فئة السمة. انظر أعلاه لمزيد من المعلومات حول فئة السمات.
void Start ( )
{
// Add the drawer as a tag to this setting.
Config . Bind ( " Section " , " Key " , " Some value "
new ConfigDescription ( " Desc " , null , new ConfigurationManagerAttributes { CustomDrawer = MyDrawer } ) ;
}
static void MyDrawer ( BepInEx . Configuration . ConfigEntryBase entry )
{
// Make sure to use GUILayout.ExpandWidth(true) to use all available space
GUILayout . Label ( entry . BoxedValue , GUILayout . ExpandWidth ( true ) ) ;
}
يمكنك تحديد درج لجميع إعدادات نوع الإعداد. قم بذلك باستخدام ConfigurationManager.RegisterCustomSettingDrawer(Type, Action<SettingEntryBase>)
.
تحذير: هذا يتطلب منك الرجوع إلى configurationManager.dll في مشروعك ولا ينصح به إلا إذا كنت متأكدًا من تثبيت جميع المستخدمين. من الأفضل عادة استخدام الطريقة أعلاه لإضافة الدرج المخصص إلى كل إعداد بشكل فردي بدلاً من ذلك.
void Start ( )
{
ConfigurationManager . RegisterCustomSettingDrawer ( typeof ( MyType ) , CustomDrawer ) ;
}
static void CustomDrawer ( SettingEntryBase entry )
{
GUILayout . Label ( ( MyType ) entry . Get ( ) , GUILayout . ExpandWidth ( true ) ) ;
}