reckfellENGINE

MainLoop

Абстрактный базовый класс для основного цикла игры.

На этой странице
class MainLoopReckfellSharpНаследует ReckfellObject

Абстрактный базовый класс для основного цикла игры.

MainLoop Это абстрактный базовый класс для игровой петли проекта Reckfell. EntityTree, что является программой петли по умолчанию, используемой в проектах Reckfell, хотя также возможно писать и использовать свой собственный MainLoop подкласс вместо дерева сцены. После запуска приложения, a MainLoop :: необходимо обеспечить осуществление OS; в противном случае приложение выйдет. Это происходит автоматически (и a) EntityTree или сотворено, если только не MainLoop Script обеспечивается с линии командной линии (например. reckfell -s my_loop.cs) или ProjectSettings.application/run/main_loop_type Настройка проекта перезаписана. Вот пример сценария реализации простого MainLoop:

C#
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Конструктор
# MainLoop
C#
public MainLoop();

Методы4

_Finalizevoid
# _Finalize
C#
public virtual void _Finalize();

Вызывается перед завершением работы программы.

_Initializevoid
# _Initialize
C#
public virtual void _Initialize();

Вызывается один раз во время инициализации.

_PhysicsProcessbool
# _PhysicsProcess
C#
public virtual bool _PhysicsProcess(double delta);

Вызывается каждый физический тик. delta — это логическое время между физическими тиками в секундах, равное Engine.TimeScale / Engine.PhysicsTicksPerSecond. Эквивалентно Entity._PhysicsProcess. Если метод реализован, он должен возвращать логическое значение. true завершает основной цикл, а false позволяет перейти к следующему шагу. Примечание: MainLoop._PhysicsProcess может быть вызван до Engine.MaxPhysicsStepsPerFrame раз за (неактивный) кадр. Это ограничение по шагам может быть достигнуто, когда движок испытывает проблемы с производительностью. Примечание: Накопленное значение delta может отличаться от реального количества секунд.

Параметры
ИмяТипПо умолчанию
deltadouble—
Возвращает bool
_Processbool
# _Process
C#
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, если эта функция включена в проекте.

Параметры
ИмяТипПо умолчанию
deltadouble—
Возвращает bool

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

OnRequestPermissionsResultСобытие
# OnRequestPermissionsResult
C#
public event MainLoop.OnRequestPermissionsResultEventHandler OnRequestPermissionsResult;

Выдается, когда пользователь отвечает на запрос разрешения.

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

Поля и константы12

NotificationApplicationFocusInПоле
# NotificationApplicationFocusIn
C#
public const long NotificationApplicationFocusIn = 2016;

Уведомление, полученное от OS при концентрации приложения, т.е. при изменении фокуса OS настольное или третье приложение к любому открытому окну в деле Reckfell. Выполнено на рабочих и мобильных платформах.

NotificationApplicationFocusOutПоле
# NotificationApplicationFocusOut
C#
public const long NotificationApplicationFocusOut = 2017;

Уведомление, полученное от OS когда приложение дефокусируется, т.е. при изменении фокуса с любого открытого окна в деле Reckfell OS настольное или третье приложение. Выполнено на рабочих и мобильных платформах.

УВЕДОМЛЕНИЕ_TEXT_SERVER_ ИЗМЕНЕНИЕ

NotificationApplicationPausedПоле
# NotificationApplicationPaused
C#
public const long NotificationApplicationPaused = 2015;

Уведомление, полученное от OS когда приложение задерживается. Специально для платформ Android и iOS. Примечание: На iOS у вас есть всего около 5 секунд, чтобы завершить задачу, запущенную этим сигналом. Если вы превысите это время, iOS завершит работу приложения вместо того, чтобы приостановить его.

NotificationApplicationPipModeEnteredПоле
# NotificationApplicationPipModeEntered
C#
public const long NotificationApplicationPipModeEntered = 2019;

Уведомление приходит, когда приложение переходит в режим "картинка в картинке".

NotificationApplicationPipModeExitedПоле
# NotificationApplicationPipModeExited
C#
public const long NotificationApplicationPipModeExited = 2020;

Уведомление приходит при выходе приложения из режима "картинка в картинке".

NotificationApplicationResumedПоле
# NotificationApplicationResumed
C#
public const long NotificationApplicationResumed = 2014;

Уведомление, полученное от OS при возобновлении подачи заявления. Специально для платформ Android и iOS.

NotificationCrashПоле
# NotificationCrash
C#
public const long NotificationCrash = 2012;

Уведомление получено от обработчика сбоев Reckfell, когда движок собирается рухнуть. Реализовано на настольных платформах, если обработчик сбоев включен.

NotificationOsImeUpdateПоле
# NotificationOsImeUpdate
C#
public const long NotificationOsImeUpdate = 2013;

Уведомление, полученное от OS при обновлении Input Метод Engine происходит (например, изменение положения курсора IME или строки композиции). Выполнено на рабочих столах и вебплатформах.

УВЕДОМЛЕНИЕ_ ПРИМЕНИТЕЛЬНО

NotificationOsMemoryWarningПоле
# NotificationOsMemoryWarning
C#
public const long NotificationOsMemoryWarning = 2009;

Уведомление, полученное от OS когда приложение превышает предписанную память. Специально для платформы iOS.

УВЕДОМЛЕНИЕ_TRANSLATION_ ИЗМЕНЕНИЕ

NotificationTextServerChangedПоле
# NotificationTextServerChanged
C#
public const long NotificationTextServerChanged = 2018;

Получено уведомление при смене текстового сервера.

УВЕДОМЛЕНИЕ_ ПРИМЕНЕНИЕ_PIP_MODE_ВЕДЕННОЕ

NotificationTranslationChangedПоле
# NotificationTranslationChanged
C#
public const long NotificationTranslationChanged = 2010;

Уведомление получено, когда переводы могли измениться. Может быть вызвано изменением пользователем локали. Может использоваться для реагирования на изменения языка, например, для изменения строк пользовательского интерфейса на лету. Полезно при работе со встроенной поддержкой перевода, например ReckfellObject.Tr.

УВЕДОМЛЕНИЕ

NotificationWMAboutПоле
# NotificationWMAbout
C#
public const long NotificationWMAbout = 2011;

Уведомление, полученное от OS когда направляется просьба о предоставлении информации "отказ". Специфична для платформы MacOS.

УВЕДОМЛЕНИЕ

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

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

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

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