Engine
Предоставляет доступ к свойствам движка.
Предоставляет доступ к свойствам движка.
Синглтон Engine позволяет вам запрашивать и изменять параметры времени выполнения проекта, такие как количество кадров в секунду, масштаб времени и другие. Он также хранит информацию о текущей сборке Reckfell, например, текущую версию.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства8
MaxFpsСвойство
public static int MaxFps { get; set; }Текущее ограничение частоты отрисовки. 0 снимает это ограничение, но не отменяет V-Sync и не гарантирует достигнутый FPS. Изменение свойства не переписывает application/run/max_fps; запись этой настройки через SetSetting также не меняет текущее свойство.
MaxPhysicsStepsPerFrameСвойство
public static int MaxPhysicsStepsPerFrame { get; set; }Максимальное количество шагов физики, которые могут быть смоделированы в каждом отрендеренном кадре.
Примечание: Значение по умолчанию настроено так, чтобы не допустить, чтобы дорогостоящие физические симуляции бесконечно запускали еще более дорогостоящие симуляции. Однако игра будет выглядеть замедленной, если FPS рендеринга меньше, чем 1 / max_physics_steps_per_frame от Engine.PhysicsTicksPerSecond. Это происходит, даже если delta постоянно используется в физических расчетах. Чтобы избежать этого, увеличьте Engine.MaxPhysicsStepsPerFrame, если вы увеличили Engine.PhysicsTicksPerSecond значительно выше его значения по умолчанию.
PhysicsJitterFixСвойство
public static double PhysicsJitterFix { get; set; }Насколько физические тики синхронизированы с реальным временем. Если 0 или меньше, тики полностью синхронизированы. Более высокие значения заставляют игровые часы больше отклоняться от реальных часов, но они сглаживают колебания частоты кадров.
Примечание: Значение по умолчанию 0.5 должно быть достаточно хорошим для большинства случаев; значения выше 2 могут привести к тому, что игра будет реагировать на пропущенные кадры с заметной задержкой и не рекомендуются.
Примечание: При использовании пользовательского решения для интерполяции физики или в сетевой игре рекомендуется отключить исправление физического дрожания, установив это свойство в 0.
PhysicsTicksPerSecondСвойство
public static int PhysicsTicksPerSecond { get; set; }Частота физических шагов. Кадр и шаг не обязаны соответствовать один к одному; увеличение частоты требует замера CPU и не исправляет ошибки фильтров, геометрии или числовой точности.
PrintErrorMessagesСвойство
public static bool PrintErrorMessages { get; set; }Если false, прекращается вывод сообщений об ошибках и предупреждений на консоль и в журнал вывода редактора. Это можно использовать для скрытия сообщений об ошибках и предупреждений во время выполнения набора модульных тестов. Это свойство эквивалентно настройке проекта ProjectSettings.application/run/disable_stderr.
Примечание: Это свойство не влияет на вкладку «Ошибки» редактора при запуске проекта из редактора.
Предупреждение: Если установлено значение false в любом месте проекта, важные сообщения об ошибках могут быть скрыты, даже если они выдаются другими скриптами. В скрипте @tool это также повлияет на сам редактор. Не сообщайте об ошибках, не убедившись, что сообщения об ошибках включены (как по умолчанию).
PrintToStdOutСвойство
public static bool PrintToStdOut { get; set; }Если false, прекращает вывод сообщений (например, с помощью ReckfellApi.Print) на консоль, в файлы журнала и в журнал вывода редактора. Это свойство эквивалентно настройке проекта ProjectSettings.application/run/disable_stdout.
Примечание: Это не прекращает вывод ошибок или предупреждений, создаваемых скриптами, на консоль или в файлы журнала, для получения более подробной информации см. Engine.PrintErrorMessages.
SingletonСвойство
public static EngineInstance Singleton { get; }TimeScaleСвойство
public static double TimeScale { get; set; }Масштаб игрового времени. Не является измерением реального FPS и не заменяет паузу/ProcessMode. Проверяйте зависящие от времени силы, таймеры и ввод в нужном сценарии.
Методы41
CaptureScriptBacktracesReckfell.Collections.Array<ScriptBacktrace>
public static Reckfell.Collections.Array<ScriptBacktrace> CaptureScriptBacktraces(bool includeVariables = false);Похищение и возврат отпечатков со всех зарегистрированных языков скрипта.
По умолчанию, возвращенный ScriptBacktrace будет содержать только стоп-кадры в композициях редактора и отладке. Для того, чтобы они могли также создаваться для выпуска, вы должны обеспечить возможность ProjectSettings.debug/settings/csharp/always_track_call_stacks.
Если include_variables это true, брошюра будет также включать имена и значения любых глобальных переменных (например, автозагрузить одинтоны) в момент ввода, а также местные переменные и переменные членов класса в каждой раме. Однако это будет уважаться только при запуске игры с отладчиком, например, при запуске игры из редактора. Для того чтобы она могла экспортировать также, вы должны обеспечить возможность ProjectSettings.debug/settings/csharp/always_track_local_variables.
Предупреждение: Когда include_variables это true, любые регистрируемые переменные могут потенциально (например, с помощью свечей C#) быть их фактическими значениями, включая любые ссылки на объекты. ScriptBacktrace , предотвратит сбыт этих предметов, так что обычно рекомендуется этого не делать.
| Имя | Тип | По умолчанию |
|---|---|---|
includeVariables | bool | false |
Reckfell.Collections.Array<ScriptBacktrace>GetArchitectureNamestring
public static string GetArchitectureName();Возвращает имя архитектуры ЦП, для которой был собран двоичный файл Reckfell. Возможные возвращаемые значения включают "x86_64", "x86_32", "arm64", "arm32", "rv64", "ppc64", "loongarch64", "wasm64" и "wasm32".
Чтобы определить, является ли текущая сборка 64-разрядной, или тип архитектуры, не используйте имя архитектуры. Вместо этого используйте OS.HasFeature для проверки тега функции "64" или тегов, таких как "x86" или "arm". Более подробную информацию см. в документации Теги функций.
Примечание: Этот метод не возвращает имя архитектуры ЦП системы (как OS.GetProcessorName). Например, при запуске двоичного файла Reckfell x86_32 в системе x86_64 возвращаемое значение по-прежнему будет "x86_32".
stringGetAuthorInfoReckfell.Collections.Dictionary
public static Reckfell.Collections.Dictionary GetAuthorInfo();Возвращает информацию о авторах двигателей в качестве Reckfell.Collections.Dictionary, где каждая позиция является a Reckfell.Collections.Array струн с именами известных вкладчиков в Reckfell Engine: lead_developers, founders, project_managers, и developers.
Reckfell.Collections.DictionaryGetCopyrightInfoReckfell.Collections.Array<Reckfell.Collections.Dictionary>
public static Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetCopyrightInfo();Возвращает Reckfell.Collections.Array словарей с информацией об авторских правах для каждого компонента исходного кода Reckfell.
Каждый Reckfell.Collections.Dictionary содержит идентификатор name и массив parts словарей. Он подробно описывает компонент с помощью следующих записей:
files-Reckfell.Collections.Arrayпутей к файлам из исходного кода, затронутого этим компонентом;copyright-Reckfell.Collections.Arrayвладельцев этого компонента;license- Лицензия, применяемая к этому компоненту (например, "Expat(https://en.wikipedia.org/wiki/MIT_License#Ambiguity_and_variants)" или "CC-BY-4.0").
Reckfell.Collections.Array<Reckfell.Collections.Dictionary>GetDonorInfoReckfell.Collections.Dictionary
public static Reckfell.Collections.Dictionary GetDonorInfo();Возвращается a Reckfell.Collections.Dictionary Каждая позиция представляет собой Reckfell.Collections.Array строки:
{platinum_sponsors, gold_sponsors, silver_sponsors, bronze_sponsors, mini_sponsors, gold_donors, silver_donors, bronze_donors}
Reckfell.Collections.DictionaryGetFramesDrawnint
public static int GetFramesDrawn();Возвращает общее количество кадров, отрисованных с момента запуска движка.
Примечание: На платформах headless или если рендеринг отключен с помощью --disable-render-loop через командную строку, этот метод всегда возвращает 0. См. также Engine.GetProcessFrames.
intGetFramesPerSeconddouble
public static double GetFramesPerSecond();Возвращает среднее количество кадров, отображаемых каждую секунду (FPS), также известное как частота кадров.
doubleGetLicenseInfoReckfell.Collections.Dictionary
public static Reckfell.Collections.Dictionary GetLicenseInfo();Возвращает Reckfell.Collections.Dictionary лицензий, используемых Reckfell, и включенных сторонних компонентов. Каждая запись представляет собой имя лицензии (например, "Expat(https://en.wikipedia.org/wiki/MIT_License#Ambiguity_and_variants)") и связанный с ней текст.
Reckfell.Collections.DictionaryGetLicenseTextstring
public static string GetLicenseText();Возвращает полный текст лицензии Reckfell.
stringGetMainLoopMainLoop
public static MainLoop GetMainLoop();Возвращает экземпляр MainLoop. Обычно это основной EntityTree и он такой же, как Entity.GetTree.
Примечание: Тип, созданный как основной цикл, может быть изменен с помощью ProjectSettings.application/run/main_loop_type.
MainLoopGetMaxFpsint
public static int GetMaxFps();intGetMaxPhysicsStepsPerFrameint
public static int GetMaxPhysicsStepsPerFrame();intGetPhysicsFramesulong
public static ulong GetPhysicsFrames();Возвращает общее количество кадров, пройденных с момента запуска движка. Это число увеличивается каждый физический кадр. См. также Engine.GetProcessFrames.
Этот метод можно использовать для более редкого запуска дорогостоящей логики без использования Timer:
public override void _PhysicsProcess(double delta)
{
base._PhysicsProcess(delta);
if (Engine.GetPhysicsFrames() % 2 == 0)
{
// Run expensive logic only once every 2 physics frames here.
}
}ulongGetPhysicsInterpolationFractiondouble
public static double GetPhysicsInterpolationFraction();Доля между физическими шагами для формирования промежуточной картинки. Используется с сохранёнными предыдущим и текущим состояниями; сама по себе не увеличивает точность физики и не является измерением задержки ввода.
doubleGetPhysicsJitterFixdouble
public static double GetPhysicsJitterFix();doubleGetPhysicsTicksPerSecondint
public static int GetPhysicsTicksPerSecond();intGetProcessFramesulong
public static ulong GetProcessFrames();Возвращает общее количество кадров, пройденных с момента запуска движка. Это число увеличивается каждый кадр процесса, независимо от того, включен ли цикл рендеринга. См. также Engine.GetFramesDrawn и Engine.GetPhysicsFrames.
Этот метод можно использовать для менее частого запуска дорогостоящей логики без использования Timer:
public override void _Process(double delta)
{
base._Process(delta);
if (Engine.GetProcessFrames() % 5 == 0)
{
// Run expensive logic only once every 5 process (render) frames here.
}
}ulongGetScriptLanguageScriptLanguage
public static ScriptLanguage GetScriptLanguage(int index);Возвращает экземпляр ScriptLanguage с заданным index.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
ScriptLanguageGetScriptLanguageCountint
public static int GetScriptLanguageCount();Возвращает количество доступных языков для скриптов. Используйте с Engine.GetScriptLanguage.
intGetSingletonReckfellObject
public static ReckfellObject GetSingleton(StringName name);Возвращает глобальный синглтон с заданным name или null, если он не существует. Часто используется для плагинов. См. также Engine.HasSingleton и Engine.GetSingletonList.
Примечание: Глобальные синглтоны — это не то же самое, что автоматически загружаемые узлы, которые настраиваются в настройках проекта.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
ReckfellObjectGetSingletonListstring[]
public static string[] GetSingletonList();Возвращает список имен всех доступных глобальных синглтонов. См. также Engine.GetSingleton.
string[]GetTimeScaledouble
public static double GetTimeScale();doubleGetVersionInfoReckfell.Collections.Dictionary
public static Reckfell.Collections.Dictionary GetVersionInfo();Возвращает информацию о текущей версии двигателя в качестве Reckfell.Collections.Dictionary с следующими позициями:
major- Номер основной версии в качестве int;minor- Незначительный номер версии в качестве int;patch- Номер каталога как номер int;hex- Полная версия, закодированная как гексадековая int с одним байтом (2 гекс-значения) на число (см. пример ниже);status- статус (такий, как "бета", "rc1", "rc2", "стабильный" и т.д.) в качестве String;build- Строить название (например, "таможенное строительство") в качестве String;hash- Полная хэш-хэш, как String;timestamp- Держит дату вступления в силу даты UNIX в секундах как intили0если отсутствует;versionиstring- Общественностьmajor.minor.patchВерсия выпуска, включая нулевой патч. Конфигурация построения и идентификатор Git являются отдельными диагностическими полями. ::hexЗначение кодируется следующим образом: слева направо: один байт для главного, один байт для несовершеннолетнего, один байт для патча.0x03010C. Примечание: ::hexзначение по-прежнему a [int] внутри, и печатание будет давать десятичное представление, что не является особенно значимым.
if ((int)Engine.GetVersionInfo()["hex"] >= 0x040100)
{
// Do things specific to version 4.1 or later.
}
else
{
// Do things specific to versions before 4.1.
}Reckfell.Collections.DictionaryGetWriteMoviePathstring
public static string GetWriteMoviePath();Возвращает путь к выходному файлу MovieWriter или пустую строку, если движок не был запущен в режиме Создатель кино. Путь по умолчанию можно изменить в ProjectSettings.editor/movie_writer/movie_file.
stringHasSingletonbool
public static bool HasSingleton(StringName name);Возвращает true, если синглтон с указанным name существует в глобальной области видимости. См. также Engine.GetSingleton.
ReckfellApi.Print(Engine.HasSingleton("OS")); // Prints True
ReckfellApi.Print(Engine.HasSingleton("Engine")); // Prints True
ReckfellApi.Print(Engine.HasSingleton("AudioServer")); // Prints True
ReckfellApi.Print(Engine.HasSingleton("Unknown")); // Prints FalseПримечание: Глобальные синглтоны — это не то же самое, что автоматически загружаемые узлы, которые настраиваются в настройках проекта.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
boolIsEditorHintbool
public static bool IsEditorHint();Возвращает true, если скрипт в данный момент выполняется внутри редактора, в противном случае возвращает false. Это полезно для скриптов @tool для условной отрисовки помощников редактора или предотвращения случайного запуска «игрового» кода, который может повлиять на состояние сцены в редакторе:
if (Engine.IsEditorHint())
DrawGizmos();
else
SimulatePhysics();См. Запуск кода в редакторе в документации для получения дополнительной информации.
Примечание: Чтобы определить, запущен ли скрипт в редакторе build (например, при нажатии OS.HasFeature с аргументом "editor". OS.has_feature("editor") оценивается как true как при запуске скрипта в редакторе, так и при запуске проекта из редактора, но возвращает false при запуске из экспортированного проекта.
boolIsEmbeddedInEditorbool
public static bool IsEmbeddedInEditor();Возвращает true, если движок запущен встроенным в редактор. Это полезно для предотвращения попыток обновления режима окна или флагов окна, которые не поддерживаются при запуске проекта, встроенного в редактор.
boolIsInPhysicsFramebool
public static bool IsInPhysicsFrame();Возвращает true, если движок находится внутри фиксированного шага физического процесса основного цикла.
boolIsPrintingErrorMessagesbool
public static bool IsPrintingErrorMessages();boolIsPrintingToStdOutbool
public static bool IsPrintingToStdOut();boolRegisterScriptLanguageError
public static Error RegisterScriptLanguage(ScriptLanguage language);Регистрирует экземпляр ScriptLanguage, который будет доступен с ScriptServer.
Возвращает:
OKоб успехе;ERR_UNAVAILABLEеслиScriptServerдостиг лимита и не может зарегистрировать ни одного нового языка;ERR_ALREADY_EXISTSеслиScriptServerуже содержит язык с похожим расширением/названием/типом.
| Имя | Тип | По умолчанию |
|---|---|---|
language | ScriptLanguage | — |
ErrorRegisterSingletonvoid
public static void RegisterSingleton(StringName name, ReckfellObject instance);Регистрирует заданный ReckfellObject instance как синглтон, доступный глобально под name. Полезно для плагинов.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
instance | ReckfellObject | — |
SetMaxFpsvoid
public static void SetMaxFps(int maxFps);| Имя | Тип | По умолчанию |
|---|---|---|
maxFps | int | — |
SetMaxPhysicsStepsPerFramevoid
public static void SetMaxPhysicsStepsPerFrame(int maxPhysicsSteps);| Имя | Тип | По умолчанию |
|---|---|---|
maxPhysicsSteps | int | — |
SetPhysicsJitterFixvoid
public static void SetPhysicsJitterFix(double physicsJitterFix);| Имя | Тип | По умолчанию |
|---|---|---|
physicsJitterFix | double | — |
SetPhysicsTicksPerSecondvoid
public static void SetPhysicsTicksPerSecond(int physicsTicksPerSecond);| Имя | Тип | По умолчанию |
|---|---|---|
physicsTicksPerSecond | int | — |
SetPrintErrorMessagesvoid
public static void SetPrintErrorMessages(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetPrintToStdOutvoid
public static void SetPrintToStdOut(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetTimeScalevoid
public static void SetTimeScale(double timeScale);| Имя | Тип | По умолчанию |
|---|---|---|
timeScale | double | — |
UnregisterScriptLanguageError
public static Error UnregisterScriptLanguage(ScriptLanguage language);Отменяет регистрацию экземпляра ScriptLanguage из ScriptServer.
Возвращает:
OKпри успешном выполнении;ERR_DOES_NOT_EXIST, если язык не зарегистрирован вScriptServer.
| Имя | Тип | По умолчанию |
|---|---|---|
language | ScriptLanguage | — |
ErrorUnregisterSingletonvoid
public static void UnregisterSingleton(StringName name);Удаляет синглтон, зарегистрированный под name. Объект синглтон не освобожден. Работает только с определенными пользователем синглтонами, зарегистрированными с помощью Engine.RegisterSingleton.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |