reckfellENGINE

EntityPath

Адрес Entity или её свойства внутри дерева.

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

EntityPath хранит путь, а не native-ссылку и не владение объектом. Относительные имена разрешаются от вызывающей Entity; /root начинается с главного Viewport активного дерева. Точки . и .. обозначают текущую Entity и родителя.

%Name использует UniqueNameInOwner и области Owner. Перемещение внутри прежней области может сохранить такой доступ; переименование требует нового имени. asset://, user:// и uid:// адресуют файлы/ассеты и не являются заменой пути GetEntity.

Практическое руководство.

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

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

EntityPath2 перегрузки
# EntityPath · 1/2
C#
public EntityPath();

Создаёт отдельную управляемую оболочку пустого пути. IsEmpty равен true, ToString() возвращает "", IsAbsolute() — false; оба счётчика частей равны нулю. Пустой путь не означает текущую сущность: для неё используйте ".".

# EntityPath · 2/2
C#
public EntityPath(string path);

Разбирает путь на имена сущностей через / и имена свойств или ресурсов через :. Например, "Rig/Sprite2D:position:x" содержит два имени сущностей и два подимени. Ведущий / отмечает абсолютный путь; . и .. обозначают текущую сущность и родителя при поиске.

Это только разбор текста: конструктор не ищет сущность, не проверяет наличие свойства и не загружает файл. Пустая строка и, в текущем SDK, null дают пустой путь. Ошибочная последовательность с пустым подименем между двоеточиями вызывает нативную диагностику; не используйте конструктор как валидатор пользовательского ввода. В C# используйте new EntityPath("Rig") или неявное преобразование из string: литерала ^"Rig" нет.

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

Текст пути. Для файлов используйте файловые API; asset:// и user:// не являются адресами GetEntity.

Свойства1

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

Проверяет отсутствие нативных данных пути. Пустой конструктор, "" и текущая обработка null дают true. ".", "/" и ":position:x" не пусты. Это не проверка существования цели и не проверка управляемой ссылки: сначала убедитесь, что path is not null. Для необязательной цели используйте GetEntityOrNull.

Методы18

Dispose2 перегрузки
# Dispose · 1/2
C#
public void Dispose();

Освобождает принадлежащий оболочке нативный путь, снимает регистрацию ресурса и подавляет финализатор. Другие самостоятельно созданные оболочки того же пути продолжают работать. Это не удаляет сущность, на которую указывал путь.

Освобождайте свой объект один раз через using. В текущем SDK повторный Dispose() ранее зарегистрированной оболочки выбрасывает ArgumentException («Disposable not registered»). Не вызывайте Dispose() вручную внутри using, не освобождайте заимствованные оболочки и не используйте освобождённый объект как ключ словаря.

# Dispose · 2/2
C#
public void Dispose(bool disposing);

Низкоуровневая перегрузка: оба значения флага освобождают нативный путь и снимают регистрацию. Сам метод не подавляет финализатор. Для прикладного кода используйте Dispose() без аргумента или using: прямой вызов этой перегрузки может оставить финализатор уже освобождённого ресурса. Повторное снятие регистрации может выбросить ArgumentException.

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

Флаг пути освобождения. Текущая реализация освобождает ресурс и при true, и при false.

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

Сравнивает признак абсолютности и все имена и подимена с учётом регистра. Разные оболочки равного пути равны. Это не сравнение найденных сущностей: "Rig/../Sprite2D" и "Sprite2D" могут указывать на один объект, но имеют разные части пути. null не равен даже пустой оболочке.

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

Другая оболочка пути или null.

Возвращает bool

true для EntityPath с тем же разобранным значением; иначе false.

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

Сравнивает с EntityPath по разобранному значению; та же ссылка тоже равна. Строка, переданная как object, не преобразуется автоматически и не равна пути; другие типы и null дают false.

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

Проверяемый объект; совпасть может только EntityPath.

Возвращает bool

true для EntityPath с тем же разобранным значением; иначе false.

GetAsPropertyPathEntityPath
# GetAsPropertyPath
C#
public EntityPath GetAsPropertyPath();

Возвращает новую оболочку пути к свойству. Имена сущностей объединяются через / в первое подимя, затем сохраняются существующие подимена; результат становится относительным. "position:x" превращается в ":position:x", а "A/B:x" — в ":A/B:x": это не обход двух свойств A и B. Исходный путь не меняется.

Уже чистый путь к свойству сохраняет значение; пустой путь остаётся пустым. Возвращённая оболочка принадлежит вызывающему коду и требует своего using. Метод только преобразует путь и не читает свойство. В примере ReadPositionX читает x текущей позиции Entity2D; чтение выполняет GetIndexed.

C#
using Reckfell;

public static class EntityPathExamples
{
    public static string Describe()
    {
        using var path = new EntityPath("../Rig/Sprite2D:position:x");
        return $"{path.GetName(1)}|{path.GetConcatenatedSubNames()}|{path.GetNameCount()}|{path.GetSubNameCount()}";
        // Rig|position:x|3|2
    }

    public static float ReadPositionX(Entity2D target)
    {
        using var source = new EntityPath("position:x");
        using var property = source.GetAsPropertyPath();
        using var value = target.GetIndexed(property);
        return (float)value;
    }
}
Возвращает EntityPath

Новая принадлежащая вызывающему коду оболочка преобразованного пути, даже если значение осталось прежним.

GetConcatenatedNamesstring
# GetConcatenatedNames
C#
public string GetConcatenatedNames();

Возвращает управляемую строку имён сущностей, соединённых через /. Начальный / абсолютного пути и часть после : не включаются: для "/root/Rig:position:x" результат — "root/Rig". Метод не меняет и не разрешает путь. Для пустого EntityPath сначала проверьте IsEmpty: нативный метод сообщает об ошибке и возвращает пустую строку.

Возвращает string

Имена через / без начального / и подимён. У чистого непустого пути к свойству строка имён пустая.

GetConcatenatedSubNamesstring
# GetConcatenatedSubNames
C#
public string GetConcatenatedSubNames();

Возвращает управляемую string из подимён, соединённых через :, без начального двоеточия. Для "Sprite2D:position:x" результат — "position:x"; у непустого пути без подимён — "". Точное C#-имя метода — GetConcatenatedSubNames. Перед вызовом на пустом пути проверьте IsEmpty: нативная реализация выдаёт ошибку и возвращает пустую строку.

Возвращает string

Подимена через : или пустая строка, если их нет. Это string, а не StringName.

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

Возвращает нативный хеш разобранного пути с учётом имён, подимён и абсолютного признака. Равные пути имеют одинаковый хеш и подходят для Dictionary<EntityPath, T>; совпадение хеша не доказывает равенство. Это не идентификатор сущности и не обещание стабильности формата между версиями. Не оставляйте освобождённую оболочку ключом словаря.

Возвращает int

32-битный хеш текущего значения пути; у пустого пути 0.

GetNamestring
# GetName
C#
public string GetName(int idx);

Читает одно имя сущности в части до первого :. . и .. тоже считаются именами. Индексация начинается с нуля; допустимо 0 <= idx < GetNameCount(). Неверный индекс или пустой путь приводят к нативной диагностике и пустой строке, а не к гарантированному CLR-исключению. Проверяйте диапазон до вызова.

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

Индекс от 0 до GetNameCount() - 1; отрицательные значения недопустимы.

Возвращает string

Указанное имя как string; при ошибке — пустая строка с нативной диагностикой.

GetNameCountint
# GetNameCount
C#
public int GetNameCount();

Считает имена сущностей до первого двоеточия. "../Rig/Sprite2D:position:x" даёт 3; начальный / абсолютного пути не считается именем. У пустого пути возвращает 0. Это число частей пути, а не число найденных объектов.

Возвращает int

Число имён сущностей, включая 0.

GetSubNamestring
# GetSubName
C#
public string GetSubName(int idx);

Читает одно подимя после :, не имя сущности. Индексация начинается с нуля; допустимо 0 <= idx < GetSubNameCount(). Неверный индекс или пустой путь приводят к нативной диагностике и пустой строке, а не к гарантированному CLR-исключению. Проверяйте диапазон до вызова.

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

Индекс от 0 до GetSubNameCount() - 1; отрицательные значения недопустимы.

Возвращает string

Указанное подимя как string; при ошибке — пустая строка с нативной диагностикой.

GetSubNameCountint
# GetSubNameCount
C#
public int GetSubNameCount();

Считает подимена после двоеточий, не включая имена сущностей. "Rig/Sprite2D:position:x" даёт 2. У пустого пути возвращает 0 без обращения по индексу.

Возвращает int

Число подимён, включая 0.

IsAbsolutebool
# IsAbsolute
C#
public bool IsAbsolute();

Проверяет признак начального / в разобранном пути. Сам по себе true не доказывает существование цели. Для поиска абсолютного пути вызывающая сущность должна находиться в активном дереве; обычный корень Viewport имеет имя root, поэтому используется "/root/...". "/" — непустой абсолютный путь без имён; это не замена "/root".

Возвращает bool

true для абсолютного пути; false для относительного или пустого.

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

Возвращает строковое представление разобранного пути: / для абсолютного признака, имена через / и подимена после :. Это не точная копия входа: повторные /, завершающий / и завершающее пустое : могут исчезнуть. . и .. автоматически не сокращаются. Пустой путь даёт "". Метод не проверяет цель и не освобождает оболочку.

Возвращает string

Строковое представление пути; для пустого пути — string.Empty.

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

Сравнивает разобранные значения путей, а не управляемые ссылки или результаты поиска. Две ссылки null равны; null и существующий пустой EntityPath различаются. Регистр, абсолютность и подимена участвуют в сравнении; . и .. для равенства не сокращаются.

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

Сравниваемая оболочка пути или null.

right

Сравниваемая оболочка пути или null.

Возвращает bool

true для равных разобранных путей или двух ссылок null; иначе false.

op_Implicit2 перегрузки
# op_Implicit · 1/2
C#
public static implicit operator string(EntityPath? from);

Для существующей оболочки вызывает ToString(); null преобразуется в null. Пустая существующая оболочка даёт "", а не null. Преобразование не передаёт владение и не освобождает путь.

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

Путь для чтения или null.

Возвращает string

Строковое представление пути, "" для пустой оболочки или null для отсутствующей ссылки.

# op_Implicit · 2/2
C#
public static implicit operator EntityPath(string from);

Создаёт новую управляемую оболочку так же, как new EntityPath(from). Это разбор пути, а не поиск сущности. Для локально созданного пути используйте using; C# не поддерживает литерал ^"path".

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

Исходный текст; пустая строка и текущая обработка null создают пустой путь.

Возвращает EntityPath

Новая принадлежащая вызывающему коду оболочка пути.

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

Отрицает ==. Сравнивает разобранные значения путей, а не управляемые ссылки или результаты поиска. Две ссылки null равны; null и существующий пустой EntityPath различаются. Регистр, абсолютность и подимена участвуют в сравнении; . и .. для равенства не сокращаются.

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

Сравниваемая оболочка пути или null.

right

Сравниваемая оболочка пути или null.

Возвращает bool

true для разных значений или разного состояния null; иначе false.

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

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

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

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