reckfellENGINE

Rid

Значение-дескриптор серверного ресурса; не владелец и не проверка его существования.

На этой странице
struct RidReckfellSharpНаследует ValueType

Rid — структура со значением Id. default(Rid) имеет Id = 0. Копирование значения не продлевает жизнь серверного объекта. IsValid проверяет только Id != 0; после FreeRid сохранённые копии не обнуляются.

Освобождайте только созданные вами серверные объекты через соответствующий сервер. Rid, прочитанный из Resource.GetRid(), заимствован: не вызывайте для него FreeRid самостоятельно. Сохранённый RID также не удерживает сам Resource.

Ниже полный синхронный пример для временного PhysicsServer2D space. Use принимает Action<Rid>, освобождает своё пространство в finally и пропускает исключение обработчика вызывающему коду. Обработчик заимствует дескриптор только на время вызова: не освобождайте, не сохраняйте его и не передавайте async-лямбду.

C#
using System;
using Reckfell;

public static class TemporaryPhysicsSpace
{
    // The callback borrows the handle until it returns; it must not free or retain it.
    public static void Use(Action<Rid> action)
    {
        ArgumentNullException.ThrowIfNull(action);
        Rid owned = PhysicsServer2D.SpaceCreate();
        if (!owned.IsValid)
            throw new InvalidOperationException("Could not create a physics space.");
        try
        {
            action(owned);
        }
        finally
        {
            PhysicsServer2D.FreeRid(owned);
            owned = default;
        }
    }
}

Работа с серверами.

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

Конструкторы1

RidКонструктор
# Rid
C#
public Rid(ReckfellObject from);

Для Resource получает существующий дескриптор через GetRid(). Для объекта другого типа, включая null во время выполнения, возвращает нулевой RID. Не создаёт серверный ресурс, не копирует Resource и не передаёт владение. Не всякий Resource предоставляет ненулевой RID.

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

Ресурс, чей GetRid() нужно прочитать. Обычная Entity не преобразуется в свой серверный объект этим конструктором.

Свойства2

IdСвойство
# Id
C#
public ulong Id { get; }

Непрозрачный 64-битный идентификатор; у default(Rid) равен 0. Число не является путём к ассету, ID Entity или доказательством существования ресурса. Не сохраняйте его как постоянную ссылку между запусками.

IsValidСвойство
# IsValid
C#
public bool IsValid { get; }

Возвращает Id != 0. Не обращается к серверу и не проверяет существование объекта, его тип или владение. После FreeRid сохранённая копия всё ещё может возвращать true; сбросьте собственную переменную в default после освобождения.

Методы6

Equals2 перегрузки
# Equals · 1/2
C#
public bool Equals(Rid other);

Сравнивает числовые Id двух значений. Два нулевых RID равны; равенство ненулевых значений не подтверждает, что соответствующий объект ещё существует.

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

Значение RID для сравнения; серверный запрос не выполняется.

Возвращает bool

true при одинаковых Id, иначе false.

# Equals · 2/2
C#
public override bool Equals(object? obj);

Возвращает true, только если obj содержит упакованный Rid с таким же Id. null, ulong с тем же числом и строка с представлением RID не равны этому значению.

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

Объект для проверки типа и значения Rid.

Возвращает bool

true для Rid с одинаковым Id; false для другого Id, типа или null.

GetHashCodeint
# GetHashCode
C#
public override int GetHashCode();

Вычисляет HashCode.Combine(Id) для коллекций C#. Равные значения имеют одинаковый хеш в текущем процессе; разные значения могут иметь одинаковый хеш. Не используйте его как постоянный идентификатор или проверку существования ресурса.

Возвращает int

32-битный хеш значения Id; стабильность между запусками не гарантируется.

ToStringstring
# ToString
C#
public override string ToString();

Создаёт строку RID(<Id>) с десятичным Id в инвариантной культуре; нулевое значение записывается как RID(0). Это диагностическое представление, а не сериализация ресурса или способ восстановить его.

Возвращает string

Диагностическая строка вида RID(123); текущая культура не меняет формат Id.

op_Equalitybool
# op_Equality
C#
public static bool operator ==(Rid left, Rid right);

Проверяет равенство числовых Id без обращения к серверу. Сравнение не проверяет существование ресурса и не передаёт владение.

Параметры
ИмяТипПо умолчанию
leftRid—
rightRid—
left

Левое значение RID.

right

Правое значение RID.

Возвращает bool

true при одинаковых Id, иначе false.

op_Inequalitybool
# op_Inequality
C#
public static bool operator !=(Rid left, Rid right);

Проверяет различие числовых Id без обращения к серверу. Сравнение не проверяет существование ресурса и не передаёт владение.

Параметры
ИмяТипПо умолчанию
leftRid—
rightRid—
left

Левое значение RID.

right

Правое значение RID.

Возвращает bool

true при разных Id, иначе false.

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

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

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

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