reckfellENGINE

ReckfellExtensionManager

Загрузка и жизненный цикл нативных расширений.

На этой странице
class ReckfellExtensionManagerReckfellSharp

Передавайте путь описания .reckfellextension, проверяйте LoadStatus и используйте одинаковое написание пути для запросов. Расширение может загрузиться автоматически ещё до _Ready, поэтому AlreadyLoaded — отдельный штатный результат.

Реестр менеджера, открытый ресурс библиотеки и корректность отдельного ABI-вызова — разные состояния. UnloadExtension удаляет регистрацию и классы, но удерживаемый ресурс может продлить жизнь самой библиотеки. Не выгружайте код, пока его объекты и callbacks ещё используются.

События загрузки/выгрузки в редакторской сборке приходят внутри перехода состояния. В частности, ExtensionLoaded при первой загрузке вызывается до вставки пути в реестр. Перезагрузка требует отдельной поддержки и не гарантирует откат после отказа.

Описание расширения и диагностика.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Свойства1

SingletonСвойство
# Singleton
C#
public static ReckfellExtensionManagerInstance Singleton { get; }

Объектный доступ к тому же менеджеру, который используется статическими методами. Не создаёт отдельный реестр. Не освобождайте глобальный singleton через Dispose/Free.

Методы6

GetExtensionReckfellExtension
# GetExtension
C#
public static ReckfellExtension GetExtension(string path);

Возвращает объект по уже зарегистрированному пути. Сначала проверьте IsExtensionLoaded: отсутствующий путь даёт нативную диагностику и пустой результат. Полученная ссылка может продлить жизнь открытой библиотеки даже после удаления записи менеджером.

Параметры
ИмяТипПо умолчанию
pathstring—
path

Путь .reckfellextension, не путь DLL. Для последующих запросов и выгрузки используйте то же написание пути, под которым расширение зарегистрировано.

Возвращает ReckfellExtension

Зарегистрированный ReckfellExtension; отсутствующий путь возвращает null с нативной диагностикой, не гарантированным исключением C#.

GetLoadedExtensionsstring[]
# GetLoadedExtensions
C#
public static string[] GetLoadedExtensions();

Возвращает снимок путей текущего реестра. Не сканирует папки и не перечисляет все найденные описания. Порядок массива не является порядком зависимостей или инициализации.

Возвращает string[]

string[] путей текущего реестра; это снимок, а не живая редактируемая коллекция менеджера.

IsExtensionLoadedbool
# IsExtensionLoaded
C#
public static bool IsExtensionLoaded(string path);

Проверяет наличие точного пути в реестре менеджера. Это не проверка существования файла, совместимости всех ABI-вызовов или работоспособности функций расширения.

Параметры
ИмяТипПо умолчанию
pathstring—
path

Путь .reckfellextension, не путь DLL. Для последующих запросов и выгрузки используйте то же написание пути, под которым расширение зарегистрировано.

Возвращает bool

true для зарегистрированного точного пути; false после успешного удаления записи.

LoadExtensionReckfellExtensionManager.LoadStatus
# LoadExtension
C#
public static ReckfellExtensionManager.LoadStatus LoadExtension(string path);

Загружает описание .reckfellextension и инициализирует выбранную библиотеку. Проверяйте LoadStatus; расширение могло уже загрузиться до _Ready. Повтор того же зарегистрированного пути возвращает AlreadyLoaded, не вызывает повторную инициализацию. В режиме восстановления загрузка отклоняется.

Параметры
ИмяТипПо умолчанию
pathstring—
path

Путь .reckfellextension, не путь DLL. Для последующих запросов и выгрузки используйте то же написание пути, под которым расширение зарегистрировано.

Возвращает ReckfellExtensionManager.LoadStatus

LoadStatus: Ok — загрузка выполнена; AlreadyLoaded — запись уже есть; NotLoaded возможен при пропуске по тегам; Failed — отказ. NeedsRestart не считайте готовностью к вызовам.

ReloadExtensionReckfellExtensionManager.LoadStatus
# ReloadExtension
C#
public static ReckfellExtensionManager.LoadStatus ReloadExtension(string path);

Пытается перезагрузить уже зарегистрированную библиотеку. Нужны редакторская сборка, включённая перезагрузка и её поддержка расширением. Операция не транзакционная: отказ после закрытия старой библиотеки не гарантирует восстановление прежнего состояния. Проверяйте статус и конкретные требуемые классы/методы.

Параметры
ИмяТипПо умолчанию
pathstring—
path

Путь .reckfellextension, не путь DLL. Для последующих запросов и выгрузки используйте то же написание пути, под которым расширение зарегистрировано.

Возвращает ReckfellExtensionManager.LoadStatus

LoadStatus результата попытки. NotLoaded — пути нет или загрузчик пропустил его; NeedsRestart — текущую инициализацию нельзя завершить без перезапуска. Failed требует проверки журнала и состояния.

UnloadExtensionReckfellExtensionManager.LoadStatus
# UnloadExtension
C#
public static ReckfellExtensionManager.LoadStatus UnloadExtension(string path);

Деинициализирует расширение и удаляет запись менеджера. До вызова завершите работу объектов расширения и его callbacks. Ok не означает немедленное физическое закрытие DLL: удерживаемая ссылка на ReckfellExtension может сохранять библиотеку открытой. Режим восстановления отклоняет операцию.

Параметры
ИмяТипПо умолчанию
pathstring—
path

Путь .reckfellextension, не путь DLL. Для последующих запросов и выгрузки используйте то же написание пути, под которым расширение зарегистрировано.

Возвращает ReckfellExtensionManager.LoadStatus

Ok после деинициализации и удаления записи; NotLoaded, если путь не зарегистрирован; Failed при отказе, например в режиме восстановления.

Сигналы и события3

ExtensionLoadedСобытие
# ExtensionLoaded
C#
public static event ReckfellExtensionManager.ExtensionLoadedEventHandler ExtensionLoaded;

Событие редакторской сборки после инициализации библиотеки. В текущем пути первой загрузки оно приходит до добавления пути в реестр менеджера: не вызывайте GetExtension(path) из обработчика в расчёте на уже вставленную запись. Используйте переданный объект и не считайте событие подтверждением всех нативных методов.

Параметры обработчика
ИмяТипПо умолчанию
extensionReckfellExtension—
extension

Объект расширения, переданный событием. Используйте для наблюдения; событие не передаёт вам владение жизненным циклом менеджера.

ExtensionUnloadingСобытие
# ExtensionUnloading
C#
public static event ReckfellExtensionManager.ExtensionUnloadingEventHandler ExtensionUnloading;

Событие редакторской сборки перед деинициализацией классов и удалением записи из реестра. Обработчик получает ещё доступный объект расширения; это не уведомление о завершённом закрытии DLL. Не запускайте повторную выгрузку из этого же обработчика.

Параметры обработчика
ИмяТипПо умолчанию
extensionReckfellExtension—
extension

Объект расширения, переданный событием. Используйте для наблюдения; событие не передаёт вам владение жизненным циклом менеджера.

ExtensionsReloadedСобытие
# ExtensionsReloaded
C#
public static event Action ExtensionsReloaded;

Уведомление редакторского прохода обнаружения изменившихся перезагружаемых библиотек. Не является отдельным событием для каждого прямого ReloadExtension и не доказывает успешность всех попыток. Обычные LoadExtension/UnloadExtension его не вызывают.

ReckfellExtensionManager.LoadStatus

ЗначениеОписание
AlreadyLoaded = 2

Расширение уже загружено.

Failed = 1

Расширение не удалось загрузить, возможно, потому что оно не существует или у него отсутствуют зависимости.

NeedsRestart = 4

Для полной загрузки расширения требуется перезапуск приложения.

NotLoaded = 3

Расширение не загружено.

Ok = 0

Расширение успешно загружено.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.