Cara mudah untuk membiarkan pengguna mengkonfigurasi bagaimana plugin berperilaku tanpa perlu membuat GUI Anda sendiri. Pengguna dapat mengubah salah satu pengaturan yang Anda ungkapkan, bahkan pintasan keyboard.
Manajer Konfigurasi dapat diakses dalam game dengan menekan hotkey (secara default F1). Arahkan ke atas nama pengaturan untuk melihat deskripsi mereka, jika ada.
Ada dua versi plugin ini, untuk Bepinex 5 (versi 5.4.20 atau yang lebih baru, hanya mono) dan bepinex 6 (membangun malam 664 atau lebih baru, IL2CPP saja).
Catatan: File .xml termasuk dalam rilis zip berguna untuk pengembang plugin saat merujuk configurationManager.dll di plugin Anda, ini akan memberikan deskripsi untuk jenis dan metode untuk IDE Anda. Pengguna dapat mengabaikannya.
Arial.ttf
tidak ada dari sistem (Unity UI Default Font, mungkin berbeda dalam beberapa game). Ini bisa terjadi saat menjalankan game di Linux dengan anggur yang salah konfigurasi.UnityEngine.IMGUIModule.dll
yang tidak diangkut (dukungan untuk beberapa game dapat ditambahkan dengan patcher yang mengembalikan anggota yang hilang, contoh). ConfigurationManager akan secara otomatis menampilkan semua pengaturan dari Config
plugin Anda. Semua metadata (misalnya deskripsi, rentang nilai) akan digunakan oleh ConfigurationManager untuk menampilkan pengaturan kepada pengguna.
Dalam kebanyakan kasus, Anda tidak perlu merujuk ConfigurationManager.dll atau melakukan sesuatu yang istimewa dengan pengaturan Anda. Cukup pastikan untuk menambahkan sebanyak mungkin metadata (melakukan hal itu akan membantu semua pengguna, bahkan jika mereka menggunakan file konfigurasi secara langsung). Selalu tambahkan bagian deskriptif dan nama kunci, deskripsi, dan daftar nilai yang dapat diterima atau rentang (di mana pun berlaku).
Tentukan AcceptableValueRange
saat membuat pengaturan Anda. Jika kisarannya 0F - 1F atau 0 - 100 slider akan ditampilkan sebagai % (ini dapat ditimpa di bawah).
CaptureWidth = Config . Bind ( " Section " , " Key " , 1 , new ConfigDescription ( " Description " , new AcceptableValueRange < int > ( 0 , 100 ) ) ) ;
Tentukan AcceptableValueList
saat membuat pengaturan Anda. Jika Anda menggunakan enum, Anda tidak perlu menentukan AcceptableValuelist, semua nilai enum akan ditampilkan. Jika Anda ingin menyembunyikan beberapa nilai, Anda harus menggunakan atribut.
Catatan: Anda dapat menambahkan System.ComponentModel.DescriptionAttribute
ke item enum Anda untuk mengganti nama yang ditampilkan. Misalnya:
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
}
Tambahkan pengaturan tipe keyboardshortcut. Gunakan nilai pengaturan ini untuk memeriksa input (merekomendasikan menggunakan ISDOWN) di dalam metode pembaruan Anda.
Kelas keyboardshortcut mendukung kunci pengubah - shift, control dan alt. Mereka ditangani dengan benar, mencegah masalah umum seperti K+Shift+kontrol yang memicu pergeseran K+saat seharusnya tidak ada.
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
}
}
Anda dapat mengubah cara pengaturan ditampilkan di dalam jendela Configuration Manager dengan memberikan instance kelas khusus sebagai tag pengaturan. Kode kelas khusus dapat diunduh di sini. Cukup unduh file .cs dan seret ke proyek Anda.
Berikut adalah contoh urutan utama pengaturan pengaturan dan menandai salah satu pengaturan sebagai canggih:
// 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 } ) ) ;
Jika Anda menggunakan jenis pengaturan yang tidak didukung oleh ConfigurationManager, Anda dapat menambahkan tindakan laci untuk itu. Tindakan akan dieksekusi di dalam Ongui, gunakan Guilayout untuk menggambar pengaturan Anda seperti yang ditunjukkan pada contoh di bawah ini.
Untuk menggunakan laci pengatur khusus untuk pengaturan individual, gunakan bidang CustomDrawer
di kelas atribut. Lihat di atas untuk info lebih lanjut tentang kelas atribut.
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 ) ) ;
}
Anda dapat menentukan laci untuk semua pengaturan jenis pengaturan. Lakukan ini dengan menggunakan ConfigurationManager.RegisterCustomSettingDrawer(Type, Action<SettingEntryBase>)
.
PERINGATAN: Ini mengharuskan Anda untuk referensi ConfigurationManager.dll dalam proyek Anda dan tidak disarankan kecuali Anda yakin semua pengguna akan menginstalnya. Biasanya lebih baik menggunakan metode di atas untuk menambahkan laci khusus ke setiap pengaturan secara individual sebagai gantinya.
void Start ( )
{
ConfigurationManager . RegisterCustomSettingDrawer ( typeof ( MyType ) , CustomDrawer ) ;
}
static void CustomDrawer ( SettingEntryBase entry )
{
GUILayout . Label ( ( MyType ) entry . Get ( ) , GUILayout . ExpandWidth ( true ) ) ;
}