reckfellENGINE

C#: получить нужный тип и проверить время жизни

GetEntity, GetEntityOrNull, nullable и удалённая Entity на полном компоненте.

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

Выбрать поведение при отсутствии

ВызовНазначение
GetEntity<T>(path)Обязательный объект; неверный существующий тип приводит к InvalidCastException
GetEntityOrNull<T>(path)Необязательный объект; отсутствующий путь или несовместимый тип дают null
value is T typedПроверка C#-типа уже полученного значения
ReckfellObject.IsInstanceValid(value)Проверка, что нативный объект ещё существует

Не заменяйте обязательную зависимость молчаливым null везде: ошибка структуры уровня должна быть видна. Для необязательного Status ниже отказ ожидаем и возвращается через bool.

ScriptBoundary.cs
C#
using Reckfell;

public partial class ScriptBoundary : Entity
{
    public int Count { get; private set; }

    public bool Add(int amount)
    {
        if (amount <= 0 || Count > int.MaxValue - amount) return false;
        Count += amount;
        return true;
    }

    public bool ShowOnChild(string text)
    {
        Label? label = GetEntityOrNull<Label>("Status");
        if (!ReckfellObject.IsInstanceValid(label)) return false;
        label!.Text = text;
        return true;
    }
}

Создайте Entity, прикрепите ScriptBoundary, добавьте дочерний Label с именем Status. ShowOnChild("Ready") меняет его текст. Без Status или с обычной Entity на его месте метод возвращает false. В стенде также проверен неверный обязательный cast: он выбрасывает InvalidCastException.

Nullable не проверяет native-объект

После label.Free() управляемая ссылка label может оставаться ненулевой. Проверка label != null и оператор ?. не подтверждают существование нативной Label. Для сохранённых ссылок проверяйте IsInstanceValid перед использованием. QueueFree откладывает удаление; не считайте, что после него объект уже освобождён.

Не храните результаты поиска дольше нужного без правил жизненного цикла. При внешних подписках снимайте обработчик в _ExitTree; повторный вход и _Ready имеют свои правила. Путь относителен текущей Entity; типизация не исправляет неверный путь или пространство дерева.

Где использовать async

Ожидание сигнала через ToSignal и обработчики показаны в руководстве по сигналам. async сам по себе не переводит код в рабочий поток и не гарантирует, что Entity переживёт ожидание. Не переносите работу с активным деревом в Task.Run по аналогии с чистым вычислением .NET.

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

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

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

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