MainLoop
Абстрактный базовый класс для основного цикла игры.
Абстрактный базовый класс для основного цикла игры.
MainLoop Это абстрактный базовый класс для игровой петли проекта Reckfell. EntityTree, что является программой петли по умолчанию, используемой в проектах Reckfell, хотя также возможно писать и использовать свой собственный MainLoop подкласс вместо дерева сцены.
После запуска приложения, a MainLoop :: необходимо обеспечить осуществление OS; в противном случае приложение выйдет. Это происходит автоматически (и a) EntityTree или сотворено, если только не MainLoop Script обеспечивается с линии командной линии (например. reckfell -s my_loop.cs) или ProjectSettings.application/run/main_loop_type Настройка проекта перезаписана.
Вот пример сценария реализации простого MainLoop:
using Reckfell;
[GlobalClass]
public partial class CustomMainLoop : MainLoop
{
private double _timeElapsed = 0;
public override void _Initialize()
{
ReckfellApi.Print("Initialized:");
ReckfellApi.Print($" Starting Time: {_timeElapsed}");
}
public override bool _Process(double delta)
{
_timeElapsed += delta;
// Return true to end the main loop.
return Input.GetMouseButtonMask() != 0 || Input.IsKeyPressed(Key.Escape);
}
private void _Finalize()
{
ReckfellApi.Print("Finalized:");
ReckfellApi.Print($" End Time: {_timeElapsed}");
}
}Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
MainLoopКонструктор
public MainLoop();Методы4
_Finalizevoid
public virtual void _Finalize();Вызывается перед завершением работы программы.
_Initializevoid
public virtual void _Initialize();Вызывается один раз во время инициализации.
_PhysicsProcessbool
public virtual bool _PhysicsProcess(double delta);Вызывается каждый физический тик. delta — это логическое время между физическими тиками в секундах, равное Engine.TimeScale / Engine.PhysicsTicksPerSecond. Эквивалентно Entity._PhysicsProcess.
Если метод реализован, он должен возвращать логическое значение. true завершает основной цикл, а false позволяет перейти к следующему шагу.
Примечание: MainLoop._PhysicsProcess может быть вызван до Engine.MaxPhysicsStepsPerFrame раз за (неактивный) кадр. Это ограничение по шагам может быть достигнуто, когда движок испытывает проблемы с производительностью.
Примечание: Накопленное значение delta может отличаться от реального количества секунд.
| Имя | Тип | По умолчанию |
|---|---|---|
delta | double | — |
bool_Processbool
public virtual bool _Process(double delta);Вызывается в каждом бездействующем кадре, перед рендерингом и после обработки физических тактов. delta — это время между кадрами в секундах. Эквивалентно Entity._Process.
Если метод реализован, он должен возвращать логическое значение. true завершает основной цикл, а false позволяет перейти к следующему кадру.
Примечание: Когда движок испытывает трудности и частота кадров снижается, delta увеличивается. При увеличении delta он ограничен максимальным значением Engine.TimeScale * Engine.MaxPhysicsStepsPerFrame / Engine.PhysicsTicksPerSecond. В результате накопленное значение delta может не отражать реальное время.
Примечание: Если --fixed-fps включен или движок работает в режиме Создатель кино (см. MovieWriter), параметр delta всегда будет одинаковым для каждого кадра, независимо от времени рендеринга.
Примечание: Дельта-кадр может быть обработана OS.DeltaSmoothing, если эта функция включена в проекте.
| Имя | Тип | По умолчанию |
|---|---|---|
delta | double | — |
boolСигналы и события1
OnRequestPermissionsResultСобытие
public event MainLoop.OnRequestPermissionsResultEventHandler OnRequestPermissionsResult;Выдается, когда пользователь отвечает на запрос разрешения.
| Имя | Тип | По умолчанию |
|---|---|---|
permission | string | — |
granted | bool | — |
Поля и константы12
NotificationApplicationFocusInПоле
public const long NotificationApplicationFocusIn = 2016;Уведомление, полученное от OS при концентрации приложения, т.е. при изменении фокуса OS настольное или третье приложение к любому открытому окну в деле Reckfell. Выполнено на рабочих и мобильных платформах.
NotificationApplicationFocusOutПоле
public const long NotificationApplicationFocusOut = 2017;Уведомление, полученное от OS когда приложение дефокусируется, т.е. при изменении фокуса с любого открытого окна в деле Reckfell OS настольное или третье приложение. Выполнено на рабочих и мобильных платформах.
УВЕДОМЛЕНИЕ_TEXT_SERVER_ ИЗМЕНЕНИЕ
NotificationApplicationPausedПоле
public const long NotificationApplicationPaused = 2015;Уведомление, полученное от OS когда приложение задерживается. Специально для платформ Android и iOS. Примечание: На iOS у вас есть всего около 5 секунд, чтобы завершить задачу, запущенную этим сигналом. Если вы превысите это время, iOS завершит работу приложения вместо того, чтобы приостановить его.
NotificationApplicationPipModeEnteredПоле
public const long NotificationApplicationPipModeEntered = 2019;Уведомление приходит, когда приложение переходит в режим "картинка в картинке".
NotificationApplicationPipModeExitedПоле
public const long NotificationApplicationPipModeExited = 2020;Уведомление приходит при выходе приложения из режима "картинка в картинке".
NotificationApplicationResumedПоле
public const long NotificationApplicationResumed = 2014;Уведомление, полученное от OS при возобновлении подачи заявления. Специально для платформ Android и iOS.
NotificationCrashПоле
public const long NotificationCrash = 2012;Уведомление получено от обработчика сбоев Reckfell, когда движок собирается рухнуть. Реализовано на настольных платформах, если обработчик сбоев включен.
NotificationOsImeUpdateПоле
public const long NotificationOsImeUpdate = 2013;Уведомление, полученное от OS при обновлении Input Метод Engine происходит (например, изменение положения курсора IME или строки композиции). Выполнено на рабочих столах и вебплатформах.
УВЕДОМЛЕНИЕ_ ПРИМЕНИТЕЛЬНО
NotificationOsMemoryWarningПоле
public const long NotificationOsMemoryWarning = 2009;Уведомление, полученное от OS когда приложение превышает предписанную память. Специально для платформы iOS.
УВЕДОМЛЕНИЕ_TRANSLATION_ ИЗМЕНЕНИЕ
NotificationTextServerChangedПоле
public const long NotificationTextServerChanged = 2018;Получено уведомление при смене текстового сервера.
УВЕДОМЛЕНИЕ_ ПРИМЕНЕНИЕ_PIP_MODE_ВЕДЕННОЕ
NotificationTranslationChangedПоле
public const long NotificationTranslationChanged = 2010;Уведомление получено, когда переводы могли измениться. Может быть вызвано изменением пользователем локали. Может использоваться для реагирования на изменения языка, например, для изменения строк пользовательского интерфейса на лету. Полезно при работе со встроенной поддержкой перевода, например ReckfellObject.Tr.
УВЕДОМЛЕНИЕ
NotificationWMAboutПоле
public const long NotificationWMAbout = 2011;Уведомление, полученное от OS когда направляется просьба о предоставлении информации "отказ". Специфична для платформы MacOS.
УВЕДОМЛЕНИЕ