Модуль конфигурационной таблицы / SettingModule
Введение
Все конфигурационные таблицы в проекте разрабатываются с использованием Excel. Они включают в себя список уровней, список монстров, список навыков, параметры искусственного интеллекта и другие игровые значения. Можно сказать, что существование конфигурационных таблиц определяет всю игру.
Преимущество такого подхода заключается в том, что некоторые часто используемые конфигурации отделены от программного кода. Это позволяет разработчикам легко настраивать и изменять игру без необходимости перекомпиляции программы.
Принцип работы
Компилятор
Прежде всего, необходимо понять, что компиляция конфигурационных таблиц по сути представляет собой преобразование таблиц Excel в текстовые файлы с разделителями табуляции.
Чтобы скомпилировать конфигурационную таблицу, перейдите в меню KEngine->Compile Settings и нажмите кнопку компиляции. Существует два режима компиляции: полная и быстрая дифференциальная. При быстрой дифференциальной компиляции сравниваются изменения в конфигурационной таблице, и компиляция выполняется только при наличии изменений. Также при быстрой дифференциальной компиляции код не генерируется.
Правила автоматической компиляции конфигурационных таблиц:
Генерация кода
Модуль конфигурационной таблицы автоматически генерирует код на основе типов полей, заданных в заголовках таблиц Excel. Пример кода на C#:
public partial class ExampleInfos
{
public static readonly string TabFilePath = "Example.bytes";
public static TableFile GetTableFile()
{
return SettingModule.Get(TabFilePath);
}
public static IEnumerable GetAll()
{
var tableFile = SettingModule.Get(TabFilePath);
foreach (var row in tableFile)
{
yield return ExampleInfo.Wrap(row);
}
}
public static ExampleInfo GetByPrimaryKey(object primaryKey)
{
var tableFile = SettingModule.Get(TabFilePath);
var row = tableFile.GetByPrimaryKey(primaryKey);
if (row == null) return null;
return ExampleInfo.Wrap(row);
}
}
См. KEngine.UnityProject/Assets/AppSettings.cs
В реальном использовании просто вызовите сгенерированный код, связанный с конфигурационными таблицами:
foreach (ExampleInfo exampleInfo in ExampleInfos.GetAll())
{
Debug.Log(string.Format("Name: {0}", exampleInfo.Name));
Debug.Log(string.Format("Number: {0}", exampleInfo.Number));
}
var info = ExampleInfos.GetByPrimaryKey("A_1024");
Debuger.Assert(info.Name == "Test1");
Ленивая инициализация
Lazy initialization — это метод, который откладывает выполнение ресурсоёмких операций до тех пор, пока они действительно не понадобятся. В данном случае, модуль SettingModule выполняет ленивую инициализацию для конфигурационных таблиц, которые должны быть загружены. Это помогает избежать централизованной инициализации при запуске игры, что сокращает время запуска и оптимизирует производительность выполнения.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )