Usage
- Automatic generation
- Setting up
- Adding a ConfigItem
- ConfigItem restart requirement
- ConfigItem CanModifyCallback
- Disabling/Skipping Automatic Generation
- Listening to setting changes
- Generic buttons
- Overriding display properties of items
- Customizing mod's icon and description
Supported Types
Передусім, LethalConfig дозволяє розробникам доповнювати наступні типи interfaces для ConfigEntry's:
| Component |
Value Type |
ConfigItem Type |
| Integer Slider |
int |
IntSliderConfigItem |
| Integer Input Field |
int |
IntInputFieldConfigItem |
| Float Slider |
float |
FloatSliderConfigItem |
| Float Step Slider |
float |
FloatStepSliderConfigItem |
| Float Input Field |
float |
FloatInputFieldConfigItem |
| Text Input Field |
string |
TextInputFieldConfigItem |
| Enum Dropdown |
Enum |
EnumDropDownConfigItem<> |
| Boolean Checkbox |
Enum |
BoolCheckBoxConfigItem |
| Generic Button |
- |
GenericButtonConfigItem |
На прикладі LethalConfig menu and its element types
Usage
Automatic generation
Як з 1.1.0, LethalConfig автоматично генерує mod entries і detect all ConfigEntry's declared by said mods, і tries its best to generate the correct UI components.
Це означає, що значок mod icon і буде розглянути в mod's і config's descriptions про їх автоматично генерується і що вони можуть бути потрібні для restart, as they's no way for LethalConfig to tell if setting not effect immediately .
Непотрібний вам mod developer, що намагається customize їх mod icon і опис, manually setup UI components (e.g. use a slider instead of number text field), або mark settings as no-restart required, you don't need to do anything else other than installing the mod.
Деякі типи не можуть мати UI компонент, розроблений для нього. У цих випадках, LethalConfig буде ignore the ConfigEntry. More types will be covered over time.
Setting up
Для запуску використовуйте LethalConfig на вашому mod, add a reference on your project to LethalConfig's dll file. Ви можете завантажити DLL за допомогою LethalConfig mod on Thunderstore.
Для доступу до API необхідно використовувати LethalConfig namespace або import it on your source file:
використовуючи LethalConfig;
Це також recommended add a BepInDependency atribut to your plugin to hint BepInEx що ваш mod has dependency to it:
[BepInPlugin(PluginInfo.Guid, PluginInfo.Name, PluginInfo.Version)] [BepInDependency("ainavt.lc.lethalconfig")] public class MyVeryCoolPlugin: BaseUnityPlugin
Adding a ConfigItem
З кожним налаштуванням, ви повинні тепер мати доступ до головного LethalConfigManager і є здатним до будь-якого з наявних компонентів.
First, you create your ConfigEntry from BepInEx like you would normally:
var configEntry = Config.Bind("General", "Example", 0, "This is an example component!");
З вашою ConfigEntry в hand, ви можете створити і зареєструвати новий пункт до menu за допомогою наступного методу:
var exampleSlider = новий IntSliderConfigItem(configEntry, новий IntSliderOptions < Min = 0, Max = 100 >); LethalConfigManager.AddConfigItem(exampleSlider);
І що це, ви тепер створили свій перший компонент!
LethalConfig автоматично стріляти вгору до вашого mod info, і його автоматично створюють розділи, засновані на секції передбаченої ConfigEntry, так що ви не повинні боротися про будь-який extra setup в термінах дати.
ConfigItem restart requirement
Будь-який раз, всі елементи будуть встановлюватися для того, щоб restart if changed. Це буде боротися з гравцем once they apply the settings.
Якщо ви не хочете, щоб заблокувати як restart необхідний, simple flag constructor з налаштуваннями елементів, її через bool constructor завантажити або пройти всередині конкретних функцій:
// Використовуючи знімок опції об'єкта var exampleSlider = новий IntSliderConfigItem(configEntry, новий IntSliderOptions < RequiresRestart = false, Min = 0, Max = 100 >); // Використовуючи bool constructor overload var exampleSlider = New IntSliderConfigItem(configEntry, requiresRestart: false);
ConfigItem CanModifyCallback
Залежно від усіх речей може бути внесено в ходу без заборони. Це не може бути необов'язковою для деяких mods, як вони потребують кондиціонально розв'язаних змін.
Mods може використовуватися CanModifyCallback of constructor of config items.
var exampleCheckbox = New BoolCheckBoxConfigItem(configEntry, New BaseOptions < CanModifyCallback = CheckboxCanModifyCallback >); // Ці gets називається everytime the config entry gets displayed in the UI. private static CanModifyResult CheckboxCanModifyCallback() < // Return true if the entry can be modified. // Return false if it should be modified. // Якщо помилка false Ви повинні включити message for the reason // Що налаштовує параметр не може бути змінено. return (false, "Example reason"); // Ви можете або відновити тільки bool, або CanModifyResult.True()/CanModifyResult.False(reason) >
Disabling/Skipping Automatic Generation
Ви можете автоматично генерувати скип до ConfigEntry, Config section, або для вашого сервісу mod.
var configEntry = Config.Bind("General", "Example", 0, "This is an example component!"); var skippedConfigEntry = Config.Bind("Skip This Section", "Example 2", 0, "This is an example component!"); // skips автоматичне створення для ConfigEntry. LethalConfigManager.SkipAutoGenFor(configEntry); // skips автоматичне створення для Config section "Skip This Section". LethalConfigManager.SkipAutoGenFor("Skip This Section"); // skips автоматична generation для calling mod. LethalConfigManager.SkipAutoGen();
Listening to setting changes
Зверніть увагу, що гравці будуть найбільш expect settings для того, щоб зробити immediately, якщо не спрямовані на restart. Якщо ви потребуєте, щоб змінити зміни для вашого налаштування, ConfigEntry забезпечує механізм для того:
configEntry.SettingChanged += (obj, args) => < logSource.LogInfo($"Slider value changed to "); >;
Generic buttons
Ви можете використовувати GenericButtonConfigItem, якщо ви хочете створити кнопку, щоб зробити код, коли його натиснуто. Ви можете використовувати його для різних custom menu для вашого mod or run деякі логіки через callback.
Цей пункт не потрібний для будь-якого ConfigEntry , так як ви помітили, щоб перейти до розділу, імені, і опису пункту.
LethalConfigManager.AddConfigItem(New GenericButtonConfigItem("Section", "ItemName", "Description", "ButtonText", () => < // Code you want to run when the button is clicked goes here.>));
Overriding display properties of items
Певні часи ви можете вказати на налаштування в різних категоріях, з різним ім'ям, або різним описом, без зміни настройки підтримкиконфігурації.
LethalConfig дозволить вам змінити ці властивості visually so that it shows whatever name, section and description you want.
var boolCheckBox = Config.Bind("Example", "Bool Checkbox", false, "This is a bool checkbox."); var configItem = новий BoolCheckBoxConfigItem(boolCheckBox, новий BoolCheckBoxOptions < Section = "General", Name = "Enable something", Description = "Does something interesting" >);
У вищенаведеному прикладі, елемент буде показаний під "General" section, з "Enable something" name, and mousing over the item will show the new description. Це є всі visual changes, і підтримуючи вхід є ненав'язненим, роблячи його можливим для керування назвами без будь-якого BepInEx створити введення нового config for you.
Customizing mod's icon and description
LethalConfig автоматично atempts to load your mod's icon and description from your Thunderstore manifest, але allows you to override them.
Для того, щоб перевірити свою mod's icon в його вхід, просто зателефонуйте LethalConfigManager.SetModIcon passing an instance of UnityEngine.Sprite . Сприти може бути loaded з AssetBundle.
var aVeryCoolIconAsset = assetBundle.LoadAsset("path/to/asset.png") LethalConfigManager.SetModIcon(aVeryCoolIconAsset);
Щоб перевірити вашу mod's description, simple call LethalConfigManager.SetModDescription passing a string.
LethalConfigManager.SetModDescription("Very cool mod description!");
Building LethalConfig
Якщо ви хочете, щоб розробити і/або потребувати будівлю LethalConfig Yourslf, just Open the project and import Lethal Company using the included ThunderKit. Для того, щоб наступні кроки до вашого проекту:
- Clone the repository and open the project with Unity 2022.3.9f1 .
- Якщо в ній з'являється мова, якщо ви намагаєтеся запобігти в надійному режимі на будь-який час, натисніть на ignore.
- Якщо ThunderKit window didn't автоматично відкрито, ви можете виконати його на Tools > ThunderKit > Settings .
З проектом налаштування, просто натиснути на Publish pipeline і LethalConfigManifest на top of the project, then click execute . Після того, як він, він повинен генерувати zip файл під ThunderKit/Staging folder containing the mod.
Issues and Suggestions
Якщо ви маєте справу з LethalConfig, або хотіли б довести до уваги, помітити, що не може бути відкритою в GitHub repository.
Крім того, ви можете також скористатися своїми зауваженнями і розрахунками на LethalConfig post під Mod Mod Releases forum в Unofficial Lethal Company Discord Server.
Підпишіться, щоб завантажити
Mod Config Menu Pure
Цей предмет доданий до ваших передплат. Деякі ігри доведеться перезапустити перед тим, як предмет буде завантажено.
Mod Config Menu є library для того, щоб інші mods до меню. Ви повинні тільки підписувати цей mod, якщо ви маєте інші mods, які використовуються.
Click on the green "Subscribe" button above, which will cause Steam до автоматичного download the mod. Там, в найближчому майбутньому ви отримаєте гру, mod will appear in "Modes" submenu.
Перед початком коментаря до, read the entire README on GitHub. Comments asking questions that have already been covered in the README will be deleted.