วิธีง่ายๆในการให้ผู้ใช้กำหนดค่าวิธีการทำงานของปลั๊กอินโดยไม่จำเป็นต้องทำ GUI ของคุณเอง ผู้ใช้สามารถเปลี่ยนการตั้งค่าใด ๆ ที่คุณเปิดเผยแม้กระทั่งแป้นพิมพ์ลัด
ตัวจัดการการกำหนดค่าสามารถเข้าถึงในเกมได้โดยกดปุ่มลัด (โดยค่าเริ่มต้น F1) วางเมาส์เหนือชื่อการตั้งค่าเพื่อดูคำอธิบายของพวกเขาถ้ามี
ปลั๊กอินนี้มีสองเวอร์ชันสำหรับ Bepinex 5 (เวอร์ชัน 5.4.20 หรือใหม่กว่าโมโนเท่านั้น) และ Bepinex 6 (สร้างทุกคืน 664 หรือใหม่กว่า, IL2CPP เท่านั้น)
หมายเหตุ: ไฟล์. xml รวมอยู่ใน zip release มีประโยชน์สำหรับนักพัฒนาปลั๊กอินเมื่ออ้างอิง configurationManager.dll ในปลั๊กอินของคุณมันจะให้คำอธิบายสำหรับประเภทและวิธีการกับ IDE ของคุณ ผู้ใช้สามารถเพิกเฉยได้
Arial.ttf
หายไปจากระบบ (แบบอักษรเริ่มต้น UI อาจแตกต่างกันในบางเกม) สิ่งนี้สามารถเกิดขึ้นได้เมื่อเรียกใช้เกมบน Linux ด้วยไวน์ที่กำหนดค่าผิดพลาดUnityEngine.IMGUIModule.dll
(การสนับสนุนสำหรับเกมบางเกมสามารถเพิ่มได้ด้วย patcher ที่เรียกคืนสมาชิกที่หายไปตัวอย่าง) ConfigurationManager จะแสดงการตั้งค่าทั้งหมดจาก Config
ปลั๊กอินของคุณโดยอัตโนมัติ ข้อมูลเมตาทั้งหมด (เช่นคำอธิบายช่วงค่า) จะถูกใช้โดย ConfigurationManager เพื่อแสดงการตั้งค่าให้กับผู้ใช้
ในกรณีส่วนใหญ่คุณไม่จำเป็นต้องอ้างอิง configurationManager.dll หรือทำอะไรพิเศษกับการตั้งค่าของคุณ เพียงตรวจสอบให้แน่ใจว่าได้เพิ่มข้อมูลเมตามากที่สุดเท่าที่จะเป็นไปได้ (การทำเช่นนั้นจะช่วยผู้ใช้ทุกคนแม้ว่าพวกเขาจะใช้ไฟล์ config โดยตรง) เพิ่มส่วนคำอธิบายและชื่อคีย์คำอธิบายและรายการค่าที่ยอมรับได้หรือช่วง (ทุกที่ที่มี)
ระบุ AcceptableValueRange
เมื่อสร้างการตั้งค่าของคุณ หากช่วงคือ 0F - 1F หรือ 0 - 100 แถบเลื่อนจะแสดงเป็น % (สามารถแทนที่ด้านล่าง)
CaptureWidth = Config . Bind ( " Section " , " Key " , 1 , new ConfigDescription ( " Description " , new AcceptableValueRange < int > ( 0 , 100 ) ) ) ;
ระบุ AcceptableValueList
เมื่อสร้างการตั้งค่าของคุณ หากคุณใช้ enum คุณไม่จำเป็นต้องระบุ acceptablevaluelist ค่า enum ทั้งหมดจะปรากฏขึ้น หากคุณต้องการซ่อนค่าบางอย่างคุณจะต้องใช้แอตทริบิวต์
หมายเหตุ: คุณสามารถเพิ่ม System.ComponentModel.DescriptionAttribute
ลงในรายการของ enum ของคุณเพื่อแทนที่ชื่อที่แสดง ตัวอย่างเช่น:
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
}
เพิ่มการตั้งค่าประเภท keyboardshortcut ประเภท ใช้ค่าของการตั้งค่านี้เพื่อตรวจสอบอินพุต (แนะนำให้ใช้ ISDOWN) ภายในวิธีการอัปเดตของคุณ
คลาส KeyboardShortcut รองรับปุ่ม Modifier - Shift, Control และ Alt พวกเขาได้รับการจัดการอย่างถูกต้องป้องกันปัญหาที่พบบ่อยเช่น K+Shift+การควบคุมที่เรียก K+Shift เมื่อมันไม่ควรมี
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 ) ) ;
}