reckfellENGINE

ReckfellObject

Базовый отражаемый объект с методами, свойствами, сигналами и уведомлениями.

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

ReckfellObject не означает объект уровня или автоматическое владение памятью. Entity управляется иерархией и явным native-удалением; RefCounted/Resource имеют другую модель ссылок. Ненулевая C#-переменная не гарантирует живой native-объект: при необходимости проверяйте IsInstanceValid. InstanceId относится к текущему процессу и не заменяет UID ассета или стабильный игровой ID.

_Notification получает код события. Для обычного жизненного цикла Entity предпочтительны _EnterTree/_Ready/_ExitTree. В проверенном C#-мосте RefCounted-скрипт не получает Predelete: не считайте его универсальным очистителем Resource. Отправка номера системного уведомления не выполняет всю работу настоящего AddChild/RemoveChild.

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

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

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

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

Построить новый ReckfellObject.

Свойства1

NativeInstanceСвойство
# NativeInstance
C#
public IntPtr NativeInstance { get; }

Направляющий на коренной пример этого ReckfellObject.

Методы70

AddUserSignalvoid
# AddUserSignal
C#
public void AddUserSignal(string signal, Reckfell.Collections.Array arguments = null);

Добавляет динамический сигнал этому экземпляру. Имя не должно конфликтовать с существующим сигналом/встроенным членом; это не регистрация сигнала для всех экземпляров класса.

Параметры
ИмяТипПо умолчанию
signalstring—
argumentsReckfell.Collections.Arraynull
signal

Точное имя объявленного или динамического сигнала.

arguments

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

Call2 перегрузки
# Call · 1/2
C#
public Variant Call(StringName method, params Variant[] args);

Динамически вызывает метод экземпляра с переданными Variant. Для известного типа предпочитайте типизированный API; используйте точное имя и совместимые аргументы.

Параметры
ИмяТипПо умолчанию
methodStringName—
argsVariant[]—
method

Точное динамическое имя метода; для встроенного Entity2D — set_position.

args

Аргументы в порядке объявления метода/сигнала с совместимыми типами.

Возвращает Variant

Синхронный результат метода как Variant.

# Call · 2/2
C#
public Variant Call(StringName method, ReadOnlySpan<Variant> args);

Вызывает метод method для объекта и возвращает результат. Этот метод поддерживает переменное количество аргументов, поэтому параметры могут быть переданы в виде списка, разделенного запятыми.

C#
var node = new Entity3D();
node.Call(Entity3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), 1.571f);

Примечание: В C# method должен быть в snake_case при ссылке на встроенные методы Reckfell. Предпочитайте использовать имена, представленные в классе MethodName, чтобы избежать выделения нового StringName при каждом вызове.

Параметры
ИмяТипПо умолчанию
methodStringName—
argsReadOnlySpan<Variant>—
Возвращает Variant
CallDeferred2 перегрузки
# CallDeferred · 1/2
C#
public Variant CallDeferred(StringName method, params Variant[] args);

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

Параметры
ИмяТипПо умолчанию
methodStringName—
argsVariant[]—
method

Точное динамическое имя метода; для встроенного Entity2D — set_position.

args

Аргументы в порядке объявления метода/сигнала с совместимыми типами.

Возвращает Variant

Nil; не будущий результат поставленного в очередь метода.

# CallDeferred · 2/2
C#
public Variant CallDeferred(StringName method, ReadOnlySpan<Variant> args);

Вызывает метод method объекта во время простоя. Всегда возвращает null, не результат метода. Простой происходит в основном в конце кадров процесса и физики. В это время отложенные вызовы будут выполняться до тех пор, пока их не останется, что означает, что вы можете откладывать вызовы из других отложенных вызовов, и они все равно будут выполняться в текущем цикле простоя. Это означает, что вы не должны вызывать отложенный метод из самого себя (или из метода, вызываемого им), так как это вызывает бесконечную рекурсию так же, как если бы вы вызвали метод напрямую. Этот метод поддерживает переменное количество аргументов, поэтому параметры можно передавать в виде списка, разделенного запятыми.

C#
var node = new Entity3D();
node.CallDeferred(Entity3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), 1.571f);

Для методов, отложенных с одной и той же линии, порядок исполнения в режиме холостого хода идентичен порядку, в котором [Позвонили с пропущенным кодом. См. также Callable.CallDeferred. Примечание: В C#, method Применительно к встроенным методам " Reckfell " следует использовать змеиные " . MethodName класс во избежание выделения нового класса StringName по каждому призыву. Примечание: Если вы хотите отсрочить вызов функции на рамку, отсылайте к EntityTree.ProcessFrame и EntityTree.PhysicsFrame сигналы.

Параметры
ИмяТипПо умолчанию
methodStringName—
argsReadOnlySpan<Variant>—
Возвращает Variant
CallvVariant
# Callv
C#
public Variant Callv(StringName method, Reckfell.Collections.Array argArray);

Вызывает method на объекте и возвращает результат. В отличие от ReckfellObject.Call, этот метод ожидает, что все параметры будут содержаться внутри arg_array.

C#
var node = new Entity3D();
node.Callv(Entity3D.MethodName.Rotate, [new Vector3(1f, 0f, 0f), 1.571f]);

Примечание: В C# method должен быть в snake_case при ссылке на встроенные методы Reckfell. Предпочитайте использовать имена, представленные в классе MethodName, чтобы избежать выделения нового StringName при каждом вызове.

Параметры
ИмяТипПо умолчанию
methodStringName—
argArrayReckfell.Collections.Array—
Возвращает Variant
CanTranslateMessagesbool
# CanTranslateMessages
C#
public bool CanTranslateMessages();

Возвращает true, если объекту разрешено переводить сообщения с помощью ReckfellObject.Tr и ReckfellObject.TrN. См. также ReckfellObject.SetMessageTranslation.

Возвращает bool
CancelFreevoid
# CancelFree
C#
public void CancelFree();

Если этот метод вызывается во время ReckfellObject.NotificationPredelete, этот объект отклонит освобождение и останется выделенным. Это в основном внутренняя функция, используемая для обработки ошибок, чтобы пользователь не освобождал объекты, когда они не предназначены для этого.

ConnectError
# Connect
C#
public Error Connect(StringName signal, Callable callable, uint flags = 0);

Подключает Callable к сигналу с указанными флагами. Обычный вызов синхронен; Deferred ставит callback в очередь, OneShot отключает после первого вызова. Сохраняйте Callable для последующего отключения.

Параметры
ИмяТипПо умолчанию
signalStringName—
callableCallable—
flagsuint0
signal

Точное имя объявленного или динамического сигнала.

callable

Callable с подходящей сигнатурой; сохраняйте его идентичность.

flags

Битовая маска ConnectFlags; 0 — обычное подключение.

Возвращает Error

Error.Ok при успешном подключении, иначе код ошибки.

Disconnectvoid
# Disconnect
C#
public void Disconnect(StringName signal, Callable callable);

Отключает существующее соединение с тем же Callable. При необходимости сначала проверьте IsConnected; новая несвязанная лямбда не заменяет сохранённый callback.

Параметры
ИмяТипПо умолчанию
signalStringName—
callableCallable—
signal

Точное имя объявленного или динамического сигнала.

callable

Callable с подходящей сигнатурой; сохраняйте его идентичность.

Disposevoid
# Dispose
C#
public void Dispose();

Исключает это ReckfellObject.

EmitSignal2 перегрузки
# EmitSignal · 1/2
C#
public Error EmitSignal(StringName signal, params Variant[] args);

Испускает сигнал с совместимыми объявлению аргументами. Обычные подключения вызываются сразу; успех испускания не доказывает корректность логики каждого callback.

Параметры
ИмяТипПо умолчанию
signalStringName—
argsVariant[]—
signal

Точное имя объявленного или динамического сигнала.

args

Аргументы в порядке объявления метода/сигнала с совместимыми типами.

Возвращает Error

Error.Ok при успешном испускании, иначе код ошибки.

# EmitSignal · 2/2
C#
public Error EmitSignal(StringName signal, ReadOnlySpan<Variant> args);

Выдает заданный signal по имени. Сигнал должен существовать, поэтому он должен быть встроенным сигналом этого класса или одного из его унаследованных классов, или определяемым пользователем сигналом (см. ReckfellObject.AddUserSignal). Этот метод поддерживает переменное количество аргументов, поэтому параметры можно передавать в виде списка, разделенного запятыми. Возвращает ERR_UNAVAILABLE, если signal не существует или параметры недопустимы.

C#
EmitSignal(SignalName.Hit, "sword", 100);
EmitSignal(SignalName.GameOver);

Примечание: В C# signal должен быть в snake_case при ссылке на встроенные сигналы Reckfell. Предпочитайте использовать имена, представленные в классе SignalName, чтобы избежать выделения нового StringName при каждом вызове.

Бесплатно

Параметры
ИмяТипПо умолчанию
signalStringName—
argsReadOnlySpan<Variant>—
Возвращает Error
Freevoid
# Free
C#
public void Free();

Удаляет объект из памяти. Существующие ранее ссылки на объект становятся недействительными, и любая попытка доступа к ним приведет к ошибке выполнения. Проверка ссылок с помощью @GlobalScope.is_instance_valid вернет false. Это эквивалентно функции memdelete в ReckfellExtension C++.

GetVariant
# Get
C#
public Variant Get(StringName property);

Читает свойство экземпляра по нативному/скриптовому имени. Это динамическое значение Variant, не отражение каждого свойства CLR; сверяйтесь с GetPropertyList и контрактом объекта.

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

Имя свойства экземпляра, например position.

Возвращает Variant

Значение свойства как Variant.

GetClassstring
# GetClass
C#
public string GetClass();

Возвращает нативное имя класса, например Entity2D, а не управляемое имя подключённого C#-скрипта. Для типа CLR используйте GetType.

Возвращает string

Нативное имя типа объекта.

GetIncomingConnectionsReckfell.Collections.Array<Reckfell.Collections.Dictionary>
# GetIncomingConnections
C#
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetIncomingConnections();

Возвращает Reckfell.Collections.Array соединений сигналов, полученных этим объектом. Каждое соединение представлено как Reckfell.Collections.Dictionary, который содержит три записи:

Возвращает Reckfell.Collections.Array<Reckfell.Collections.Dictionary>
GetIndexedVariant
# GetIndexed
C#
public Variant GetIndexed(EntityPath propertyPath);

Читает вложенный компонент свойства через EntityPath, например position:x. Это путь свойства, не поиск дочерней Entity в дереве.

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

EntityPath свойства/компонентов, например position:x.

Возвращает Variant

Значение указанного вложенного компонента.

GetInstanceIdulong
# GetInstanceId
C#
public ulong GetInstanceId();

Возвращает временный идентификатор живого объекта для поиска через InstanceFromId. Он не продлевает жизнь объекта и не является постоянным ID сохранения.

Возвращает ulong

Текущий идентификатор объекта ulong.

GetMetaVariant
# GetMeta
C#
public Variant GetMeta(StringName name, Variant @default = default);

Читает метаданные. При отсутствии имени используйте HasMeta или явный default, отличный от Nil; отсутствие записи с default=Nil сообщает ошибку, а не выполняет тихую проверку.

Параметры
ИмяТипПо умолчанию
nameStringName—
defaultVariantdefault
name

Точный идентификатор метаданных с учётом регистра.

default

Fallback, отличный от Nil, если отсутствие записи допустимо.

Возвращает Variant

Значение записи либо явный fallback при её отсутствии.

GetMetaListReckfell.Collections.Array<StringName>
# GetMetaList
C#
public Reckfell.Collections.Array<StringName> GetMetaList();

Возвращает текущие имена метаданных, включая скрытые от обычного Inspector. Это не список свойств класса.

Возвращает Reckfell.Collections.Array<StringName>

Коллекция имён текущих метаданных.

GetMethodArgumentCountint
# GetMethodArgumentCount
C#
public int GetMethodArgumentCount(StringName method);

Возвращает количество аргументов указанного method по имени. Примечание: В C# method должен быть в snake_case при ссылке на встроенные методы Reckfell. Предпочитайте использовать имена, представленные в классе MethodName, чтобы избежать выделения нового StringName при каждом вызове.

Параметры
ИмяТипПо умолчанию
methodStringName—
Возвращает int
GetMethodListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
# GetMethodList
C#
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetMethodList();

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

Возвращает Reckfell.Collections.Array<Reckfell.Collections.Dictionary>

Коллекция словарей метаданных методов экземпляра.

GetPropertyListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
# GetPropertyList
C#
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetPropertyList();

Возвращает словари метаданных свойств этого экземпляра с учётом поддерживаемых нативных и динамических/скриптовых объявлений. Список описывает API объекта, не произвольный граф CLR.

Возвращает Reckfell.Collections.Array<Reckfell.Collections.Dictionary>

Коллекция словарей метаданных свойств экземпляра.

GetScriptVariant
# GetScript
C#
public Variant GetScript();

Возвращает экземпляр Script объекта или null, если скрипт не прикреплен.

Возвращает Variant
GetSignalConnectionListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
# GetSignalConnectionList
C#
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetSignalConnectionList(StringName signal);

Возвращает Reckfell.Collections.Array Соединения для данного signal Каждое подсоединение представлено в качестве Reckfell.Collections.Dictionary которые содержат три позиции:

Параметры
ИмяТипПо умолчанию
signalStringName—
Возвращает Reckfell.Collections.Array<Reckfell.Collections.Dictionary>
GetSignalListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
# GetSignalList
C#
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetSignalList();

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

Возвращает Reckfell.Collections.Array<Reckfell.Collections.Dictionary>

Коллекция словарей метаданных сигналов экземпляра.

GetTranslationDomainStringName
# GetTranslationDomain
C#
public StringName GetTranslationDomain();

Возвращает имя домена перевода, используемого ReckfellObject.Tr и ReckfellObject.TrN. См. также TranslationServer.

Возвращает StringName
HasConnectionsbool
# HasConnections
C#
public bool HasConnections(StringName signal);

Возвращает true, если существует какое-либо соединение по заданному имени signal. Примечание: В C# signal должен быть в snake_case при ссылке на встроенные методы Reckfell. Предпочитайте использовать имена, представленные в классе SignalName, чтобы избежать выделения нового StringName при каждом вызове.

Параметры
ИмяТипПо умолчанию
signalStringName—
Возвращает bool
HasMetabool
# HasMeta
C#
public bool HasMeta(StringName name);

Проверяет существование метаданных без чтения отсутствующего значения. После SetMeta с Nil запись отсутствует.

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

Точный идентификатор метаданных с учётом регистра.

Возвращает bool

True, если запись существует.

HasMethodbool
# HasMethod
C#
public bool HasMethod(StringName method);

Проверяет доступность метода на этом экземпляре, включая его скриптовый контекст. Встроенные строковые имена чувствительны к регистру: set_position не равно SetPosition.

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

Точное динамическое имя метода; для встроенного Entity2D — set_position.

Возвращает bool

True, если метод доступен экземпляру.

HasSignalbool
# HasSignal
C#
public bool HasSignal(StringName signal);

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

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

Точное имя объявленного или динамического сигнала.

Возвращает bool

True при доступном сигнале.

HasUserSignalbool
# HasUserSignal
C#
public bool HasUserSignal(StringName signal);

Проверяет динамический пользовательский сигнал экземпляра, отличая его от обычного унаследованного объявления класса.

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

Точное имя объявленного или динамического сигнала.

Возвращает bool

True при динамическом пользовательском сигнале.

InstanceFromIdReckfellObject
# InstanceFromId
C#
public static ReckfellObject? InstanceFromId(ulong instanceId);

Разрешает текущий ID в объект или null после его уничтожения. ID не удерживает Entity в памяти и не заменяет проверку актуального времени жизни.

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

Ранее полученный текущий ID, не идентификатор из другого запуска.

Возвращает ReckfellObject

Живой объект либо null.

IsBlockingSignalsbool
# IsBlockingSignals
C#
public bool IsBlockingSignals();

Возвращает true, если объект блокирует передачу своих сигналов. См. ReckfellObject.SetBlockSignals.

Возвращает bool
IsClass2 перегрузки
# IsClass · 1/2
C#
public bool IsClass(StringName @class);

Проверяет нативный тип и его базовые классы по точному имени ClassDB. Не заменяет проверку произвольного класса CLR или положения объекта в дереве.

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

Точное нативное имя класса ClassDB.

Возвращает bool

True для собственного нативного типа или его предка.

# IsClass · 2/2
C#
public bool IsClass(string @class);

Проверяет нативный тип и его базовые классы по точному имени ClassDB. Не заменяет проверку произвольного класса CLR или положения объекта в дереве.

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

Точное нативное имя класса ClassDB.

Возвращает bool

True для собственного нативного типа или его предка.

IsConnectedbool
# IsConnected
C#
public bool IsConnected(StringName signal, Callable callable);

Проверяет конкретную пару сигнал/Callable, не просто наличие любого слушателя.

Параметры
ИмяТипПо умолчанию
signalStringName—
callableCallable—
signal

Точное имя объявленного или динамического сигнала.

callable

Callable с подходящей сигнатурой; сохраняйте его идентичность.

Возвращает bool

True для существующего соединения этой пары.

IsInstanceIdValidbool
# IsInstanceIdValid
C#
public static bool IsInstanceIdValid(ulong id);

Returns (Возврат) true если: ReckfellObject которое соответствует в адрес id действительный объект (например, не был исключен из Все объекты имеют уникальный идентификатор.

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

Идентификатор объекта на проверку.

Возвращает bool

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

IsInstanceValidbool
# IsInstanceValid
C#
public static bool IsInstanceValid(ReckfellObject? instance);

Проверяет наличие действительного нативного объекта у оболочки; null или освобождённая оболочка дают false. Entity, уже помеченный QueueFree, может оставаться валидным до удаления.

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

Проверяемая оболочка объекта или null.

Возвращает bool

True при действительном нативном объекте.

IsQueuedForDeletionbool
# IsQueuedForDeletion
C#
public bool IsQueuedForDeletion();

Возвращает true, если для объекта был вызван метод Entity.QueueFree или EntityTree.QueueDelete. Примечание: Этот метод не возвращает true для дочерних узлов, для которых был вызван Entity.QueueFree, даже если они будут освобождены вместе с родительским узлом.

Возвращает bool
Notificationvoid
# Notification
C#
public void Notification(int what, bool reversed = false);

Доставляет номер уведомления. Отправка системного номера не выполняет весь протокол подключения или удаления объекта.

Параметры
ИмяТипПо умолчанию
whatint—
reversedboolfalse
NotifyPropertyListChangedvoid
# NotifyPropertyListChanged
C#
public void NotifyPropertyListChanged();

Выдает сигнал ReckfellObject.PropertyListChanged. В основном он используется для обновления редактора, чтобы плагины Inspector и editor были обновлены должным образом.

PropertyCanRevertbool
# PropertyCanRevert
C#
public bool PropertyCanRevert(StringName property);

Отменить использование этого метода для корректировки данного метода propertyВернуться к поведению. true если: property , имеет заказное значение по умолчанию и является обратимым в док Инспектора. ReckfellObject.PropertyGetRevert конкретно указать propertyпо умолчанию. Примечание: Этот метод должен последовательно возвращаться, независимо от текущей стоимости property. Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super в C# или его эквивалентах на других языках. Самый нижний подкласс будет называться первым, с последующими звонками вверх по иерархии классов. Цепочка вызова останавливается на первом классе, который возвращается. true.

Параметры
ИмяТипПо умолчанию
propertyStringName—
Возвращает bool
PropertyGetRevertVariant
# PropertyGetRevert
C#
public Variant PropertyGetRevert(StringName property);

Отменить использование этого метода для корректировки данного метода property...вернётся к поведению. property. Если значение по умолчанию отличается от property"сегодняшнее значение, в доке инспектора отображается икона обратно." Примечание: ReckfellObject.PropertyCanRevert Необходимо также отказаться от использования этого метода. Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super в C# или его эквивалентах на других языках. В самом нижнем подклассе будут названы первыми, с последующими звонками вверх по иерархии классов. Цепочка вызова останавливается на первом классе, который возвращает не--null Стоимость.

Параметры
ИмяТипПо умолчанию
propertyStringName—
Возвращает Variant
RemoveMetavoid
# RemoveMeta
C#
public void RemoveMeta(StringName name);

Удаляет метаданные по имени. Соответствует удалению через SetMeta с Nil и не меняет определение нативного класса.

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

Точный идентификатор метаданных с учётом регистра.

RemoveUserSignalvoid
# RemoveUserSignal
C#
public void RemoveUserSignal(StringName signal);

Удаляет указанный пользовательский сигнал signal из объекта. См. также ReckfellObject.AddUserSignal и ReckfellObject.HasUserSignal.

Параметры
ИмяТипПо умолчанию
signalStringName—
Setvoid
# Set
C#
public void Set(StringName property, Variant value);

Записывает свойство экземпляра через его динамический setter. Имя и тип должны соответствовать объекту; строка position обращается к нативному свойству Entity2D.

Параметры
ИмяТипПо умолчанию
propertyStringName—
valueVariant—
property

Имя свойства экземпляра, например position.

value

Совместимое значение Variant; Nil удаляет метаданные в SetMeta.

SetBlockSignalsvoid
# SetBlockSignals
C#
public void SetBlockSignals(bool enable);

Если установлено значение true, объект становится неспособным испускать сигналы. Таким образом, ReckfellObject.EmitSignal и сигнальные соединения не будут работать, пока не будет установлено значение false.

Параметры
ИмяТипПо умолчанию
enablebool—
SetDeferredvoid
# SetDeferred
C#
public void SetDeferred(StringName property, Variant value);

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

Параметры
ИмяТипПо умолчанию
propertyStringName—
valueVariant—
property

Имя свойства экземпляра, например position.

value

Совместимое значение Variant; Nil удаляет метаданные в SetMeta.

SetIndexedvoid
# SetIndexed
C#
public void SetIndexed(EntityPath propertyPath, Variant value);

Записывает вложенный компонент свойства через EntityPath с обновлением исходного значения. В проверенном position:x меняется X, а Y сохраняется.

Параметры
ИмяТипПо умолчанию
propertyPathEntityPath—
valueVariant—
propertyPath

EntityPath свойства/компонентов, например position:x.

value

Совместимое значение Variant; Nil удаляет метаданные в SetMeta.

SetMessageTranslationvoid
# SetMessageTranslation
C#
public void SetMessageTranslation(bool enable);

Если установлено значение true, позволяет объекту переводить сообщения с помощью ReckfellObject.Tr и ReckfellObject.TrN. Включено по умолчанию. См. также ReckfellObject.CanTranslateMessages.

Параметры
ИмяТипПо умолчанию
enablebool—
SetMetavoid
# SetMeta
C#
public void SetMeta(StringName name, Variant value);

Задаёт именованный Variant метаданных; Nil удаляет запись. Имя должно быть допустимым идентификатором. Начальное подчёркивание скрывает запись в обычном Inspector, не от кода.

Параметры
ИмяТипПо умолчанию
nameStringName—
valueVariant—
name

Точный идентификатор метаданных с учётом регистра.

value

Совместимое значение Variant; Nil удаляет метаданные в SetMeta.

SetScriptvoid
# SetScript
C#
public void SetScript(Variant script);

Прикрепляет script к объекту и создает его экземпляр. В результате вызывается _init скрипта. Script используется для расширения функциональности объекта. Если скрипт уже существует, его экземпляр отсоединяется, а его значения свойств и состояние теряются. Встроенные значения свойств по-прежнему сохраняются.

Параметры
ИмяТипПо умолчанию
scriptVariant—
SetTranslationDomainvoid
# SetTranslationDomain
C#
public void SetTranslationDomain(StringName domain);

Устанавливает имя домена перевода, используемого ReckfellObject.Tr и ReckfellObject.TrN. См. также TranslationServer.

Параметры
ИмяТипПо умолчанию
domainStringName—
ToSignalSignalAwaiter
# ToSignal
C#
public SignalAwaiter ToSignal(ReckfellObject source, StringName signal);

Возвращает новую SignalAwaiter Официант, выбранный для завершения, когда случай source испускает сигнал, указанный signal параметр.

Параметры
ИмяТипПо умолчанию
sourceReckfellObject—
signalStringName—
source

Пример, который будет слушать официант.

signal

Сигнал, которого ждет официант.

Возвращает SignalAwaiter

A SignalAwaiter который заканчивается, когда source излучает signal.

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

Переопределите этот метод, чтобы настроить возвращаемое значение метода ReckfellObject.ToString и, следовательно, представление объекта как string.

Возвращает string

A string представление этого объекта.

Trstring
# Tr
C#
public string Tr(StringName message, StringName context = null);

Переводит message, используя каталоги перевода, настроенные в настройках проекта. Для помощи с переводом можно указать дополнительный context. Обратите внимание, что большинство узлов Control автоматически переводят свои строки, поэтому этот метод в основном полезен для форматированных строк или нарисованного текста. Если ReckfellObject.CanTranslateMessages равен false или перевод недоступен, этот метод возвращает message без изменений. См. ReckfellObject.SetMessageTranslation. Подробные примеры см. в Интернационализация игр. Примечание: Этот метод нельзя использовать без экземпляра ReckfellObject, так как для него требуется метод ReckfellObject.CanTranslateMessages. Чтобы перевести строки в статическом контексте, используйте TranslationServer.Translate.

Параметры
ИмяТипПо умолчанию
messageStringName—
contextStringNamenull
Возвращает string
TrNstring
# TrN
C#
public string TrN(StringName message, StringName pluralMessage, int n, StringName context = null);

Переводит message или plural_message, используя каталоги перевода, настроенные в настройках проекта. Для помощи с переводом можно указать дополнительный context. Если ReckfellObject.CanTranslateMessages равен false или перевод недоступен, этот метод возвращает message или plural_message без изменений. См. ReckfellObject.SetMessageTranslation. n — это номер или количество темы сообщения. Он используется системой перевода для получения правильной формы множественного числа для текущего языка. Подробные примеры см. в Локализация с использованием gettext. Примечание: Отрицательные и ReckfellObject.Tr. Примечание: Этот метод нельзя использовать без экземпляра ReckfellObject, так как он требует метод ReckfellObject.CanTranslateMessages. Для перевода строк в статическом контексте используйте TranslationServer.TranslatePlural.

Параметры
ИмяТипПо умолчанию
messageStringName—
pluralMessageStringName—
nint—
contextStringNamenull
Возвращает string
WeakRefWeakRef
# WeakRef
C#
public static WeakRef? WeakRef(ReckfellObject? obj);

Возвращает слабое указание на объект, или null если аргумент недействителен. Слабой ссылки на объект недостаточно для сохранения объекта в живых: в то время, когда остающиеся ссылки на судью являются слабыми ссылками, Коллекция мусора свободна уничтожать референта и повторно использовать его память Однако, до тех пор, пока объект не будет уничтожен Недостаток ссылки может вернуть объект, даже если нет сильных ссылок К этому.

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

Объект.

Возвращает WeakRef

:: WeakRef ссылка на объект или null.

_GetVariant
# _Get
C#
public virtual Variant _Get(StringName property);

Отменить этот метод, чтобы изменить поведение ReckfellObject.Get. должен вернуть данные propertyзначение или null если: property с этим надо вести себя нормально. В сочетании с ReckfellObject.Set и ReckfellObject.GetPropertyList, этот метод позволяет определить свойства, которые особенно полезны для редактора. Примечание: Данный метод не называется при получении встроенных свойств объекта, включая свойства, определенные [annotation @C#.@Export].

C#
public override Variant _Get(StringName property)
{
    if (property == "FakeProperty")
    {
        ReckfellApi.Print("Getting my property!");
        return 4;
    }
    return default;
}

public override Reckfell.Collections.Array<Reckfell.Collections.Dictionary> _GetPropertyList()
{
    return
    [
        new Reckfell.Collections.Dictionary()
        {
            { "name", "FakeProperty" },
            { "type", (int)Variant.Type.Int },
        },
    ];
}

Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super в C# или его эквивалентах на других языках. В самом нижнем подклассе будут названы первыми, с последующими звонками вверх по иерархии классов. Цепочка вызова останавливается на первом классе, который возвращает не--null Стоимость. Предупреждение: Этот метод должен быть: Безопасная нить В противном случае двигатель может рухнуть при попытке сохранить ресурс, содержащий объект.

#####get superty_ list

Параметры
ИмяТипПо умолчанию
propertyStringName—
Возвращает Variant
_GetPropertyListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
# _GetPropertyList
C#
public virtual Reckfell.Collections.Array<Reckfell.Collections.Dictionary> _GetPropertyList();

Отменить использование этого метода, с тем чтобы представить отдельный перечень дополнительных свойств, которые должны быть использованы двигателем. Должен ли он вернуть список имущества в качестве Reckfell.Collections.Array Результат добавляется в ряд словарей. ReckfellObject.GetPropertyList, и должен быть таким же образом. Reckfell.Collections.Dictionary должны содержать по крайней мере name и type позиции. Ты можешь использовать ReckfellObject.PropertyCanRevert и ReckfellObject.PropertyGetRevert для корректировки стандартных значений свойств, добавленных этим методом. Приведенный ниже пример показывает список чисел, показанных как слова из ZERO в адрес FIVE, с number_count контроль размера списка:

C#
[Tool]
public partial class MyNode : Entity
{
    private int _numberCount;

    [Export]
    public int NumberCount
    {
        get => _numberCount;
        set
        {
            _numberCount = value;
            _numbers.Resize(_numberCount);
            NotifyPropertyListChanged();
        }
    }

    private Reckfell.Collections.Array<int> _numbers = [];

    public override Reckfell.Collections.Array<Reckfell.Collections.Dictionary> _GetPropertyList()
    {
        Reckfell.Collections.Array<Reckfell.Collections.Dictionary> properties = [];

        for (int i = 0; i < _numberCount; i++)
        {
            properties.Add(new Reckfell.Collections.Dictionary()
            {
                { "name", $"number_{i}" },
                { "type", (int)Variant.Type.Int },
                { "hint", (int)PropertyHint.Enum },
                { "hint_string", "Zero,One,Two,Three,Four,Five" },
            });
        }

        return properties;
    }

    public override Variant _Get(StringName property)
    {
        string propertyName = property.ToString();
        if (propertyName.StartsWith("number_"))
        {
            int index = int.Parse(propertyName.Substring("number_".Length));
            return _numbers[index];
        }
        return default;
    }

    public override bool _Set(StringName property, Variant value)
    {
        string propertyName = property.ToString();
        if (propertyName.StartsWith("number_"))
        {
            int index = int.Parse(propertyName.Substring("number_".Length));
            _numbers[index] = value.As<int>();
            return true;
        }
        return false;
    }
}

Примечание: Этот метод предназначен для передовых целей. Для большинства случаев использования языки скриптирования предлагают более простые способы обработки свойств. ReckfellObject._ValidateProperty. Примечание: Если объект не скрипт [annotation @C#.@tool], этот метод не будет назван редактором. Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super Наиболее низкий подкласс будет называться первым, с последующими звонками вверх по иерархии классов. Предупреждение: Этот метод должен быть: Безопасная нить В противном случае двигатель может рухнуть при попытке сохранить ресурс, содержащий объект.

Возвращает Reckfell.Collections.Array<Reckfell.Collections.Dictionary>
_IterGetVariant
# _IterGet
C#
public virtual Variant _IterGet(Variant iter);

Возвращает текущую стоимость. iter сохраняет состояние итерации, но в отличие от ReckfellObject._IterInit и ReckfellObject._IterNext штат должен быть только чтен, так что нет никакого Reckfell.Collections.Array Обертка. Совет: В C# вы можете использовать подтип Variant в качестве типа возврата для ReckfellObject._IterGet. Указанный тип будет использоваться для установки типа переменной итератора в for петли, повышающие безопасность типа.

Параметры
ИмяТипПо умолчанию
iterVariant—
Возвращает Variant
_IterInitbool
# _IterInit
C#
public virtual bool _IterInit(Reckfell.Collections.Array iter);

Инициализирует итератор. iter Сохранить состояние итерации. Поскольку C# не поддерживает переходящий аргумент путем ссылки, одноэлементный массив используется в качестве оберточного устройства. Этот массив не следует умножить. Возвращение true до тех пор, пока итератор не достигнет конца.

Примечание: Избегать хранения итератора в переменной члена, использовать iter В противном случае, вы не сможете использовать один и тот же итератор в гнездах петлей. См. также онлайновые документы.

Параметры
ИмяТипПо умолчанию
iterReckfell.Collections.Array—
Возвращает bool
_IterNextbool
# _IterNext
C#
public virtual bool _IterNext(Reckfell.Collections.Array iter);

Передвигает итератор в следующую итерацию. iter Сохранить состояние итерации. Поскольку C# не поддерживает переходящий аргумент путем ссылки, одноэлементный массив используется в качестве оберточного устройства. Этот массив не следует умножить. Возвращение true до тех пор, пока итератор не достигнет конца.

Уведомления

Параметры
ИмяТипПо умолчанию
iterReckfell.Collections.Array—
Возвращает bool
_Notificationvoid
# _Notification
C#
public virtual void _Notification(int what);

Обработчик кода события. Для Entity используйте отдельные lifecycle-callbacks, когда они подходят. C# RefCounted-скрипт не получает Predelete в проверенном мосте.

Параметры
ИмяТипПо умолчанию
whatint—
_PropertyCanRevertbool
# _PropertyCanRevert
C#
public virtual bool _PropertyCanRevert(StringName property);

Отменить использование этого метода для корректировки данного метода propertyВернуться к поведению. true если: property , имеет заказное значение по умолчанию и является обратимым в док Инспектора. ReckfellObject.PropertyGetRevert конкретно указать propertyпо умолчанию. Примечание: Этот метод должен последовательно возвращаться, независимо от текущей стоимости property. Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super в C# или его эквивалентах на других языках. Самый нижний подкласс будет называться первым, с последующими звонками вверх по иерархии классов. Цепочка вызова останавливается на первом классе, который возвращается. true.

Параметры
ИмяТипПо умолчанию
propertyStringName—
Возвращает bool
_PropertyGetRevertVariant
# _PropertyGetRevert
C#
public virtual Variant _PropertyGetRevert(StringName property);

Отменить использование этого метода для корректировки данного метода property...вернётся к поведению. property. Если значение по умолчанию отличается от property"сегодняшнее значение, в доке инспектора отображается икона обратно." Примечание: ReckfellObject.PropertyCanRevert Необходимо также отказаться от использования этого метода. Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super в C# или его эквивалентах на других языках. В самом нижнем подклассе будут названы первыми, с последующими звонками вверх по иерархии классов. Цепочка вызова останавливается на первом классе, который возвращает не--null Стоимость.

Параметры
ИмяТипПо умолчанию
propertyStringName—
Возвращает Variant
_Setbool
# _Set
C#
public virtual bool _Set(StringName property, Variant value);

Отменить этот метод, чтобы изменить поведение ReckfellObject.Set. Должен установить property в адрес value и возвращения trueили false если: property Следует вести себя нормально. property это зависит от применения этого метода. В сочетании с ReckfellObject.Get и ReckfellObject.GetPropertyList, этот метод позволяет определить свойства, которые особенно полезны для редактора. Примечание: Этот метод не называется при установлении встроенных свойств объекта, включая свойства, определенные [annotation @C#.@Export].

C#
private Reckfell.Collections.Dictionary _internalData = new Reckfell.Collections.Dictionary();

public override bool _Set(StringName property, Variant value)
{
    if (property == "FakeProperty")
    {
        // Storing the value in the fake property.
        _internalData["FakeProperty"] = value;
        return true;
    }

    return false;
}

public override Reckfell.Collections.Array<Reckfell.Collections.Dictionary> _GetPropertyList()
{
    return
    [
        new Reckfell.Collections.Dictionary()
        {
            { "name", "FakeProperty" },
            { "type", (int)Variant.Type.Int },
        },
    ];
}

Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super в C# или его эквивалентах на других языках. Самый нижний подкласс будет называться первым, с последующими звонками вверх по иерархии классов. Цепочка вызова останавливается на первом классе, который возвращается. true.

Параметры
ИмяТипПо умолчанию
propertyStringName—
valueVariant—
Возвращает bool
_ValidatePropertyvoid
# _ValidateProperty
C#
public virtual void _ValidateProperty(Reckfell.Collections.Dictionary property);

Переопределите этот метод, чтобы настроить существующие свойства. Каждая информация о свойствах проходит через этот метод, за исключением свойств, добавленных с помощью ReckfellObject.GetPropertyList. Содержимое словаря такое же, как в ReckfellObject.GetPropertyList.

C#
[Tool]
public partial class MyNode : Entity
{
    private bool _isNumberEditable;

    [Export]
    public bool IsNumberEditable
    {
        get => _isNumberEditable;
        set
        {
            _isNumberEditable = value;
            NotifyPropertyListChanged();
        }
    }

    [Export]
    public int Number { get; set; }

    public override void _ValidateProperty(Reckfell.Collections.Dictionary property)
    {
        if (property["name"].AsStringName() == PropertyName.Number && !IsNumberEditable)
        {
            var usage = property["usage"].As<PropertyUsageFlags>() | PropertyUsageFlags.ReadOnly;
            property["usage"] = (int)usage;
        }
    }
}
Параметры
ИмяТипПо умолчанию
propertyReckfell.Collections.Dictionary—

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

PropertyListChangedСобытие
# PropertyListChanged
C#
public event Action PropertyListChanged;

Вызывается при вызове ReckfellObject.NotifyPropertyListChanged.

Сценарий изменён

ScriptChangedСобытие
# ScriptChanged
C#
public event Action ScriptChanged;

Вызывается при изменении скрипта объекта. Примечание: Когда вызывается этот сигнал, новый скрипт еще не инициализирован. Если вам нужно получить доступ к новому скрипту, отложите подключения к этому сигналу с помощью ReckfellObject.ConnectFlags.Deferred.

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

NotificationExtensionReloadedПоле
# NotificationExtensionReloaded
C#
public const long NotificationExtensionReloaded = 2;

Уведомление получено, когда объект завершает горячую перезагрузку. Это уведомление отправляется только для классов расширений и производных.

NotificationPostinitializeПоле
# NotificationPostinitialize
C#
public const long NotificationPostinitialize = 0;

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

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

NotificationPredeleteПоле
# NotificationPredelete
C#
public const long NotificationPredelete = 1;

Уведомление, полученное, когда объект собирается быть удален. Может использоваться как деструкторы в объектно-ориентированных языках программирования. Это уведомление отправляется в обратном порядке.

ReckfellObject.ConnectFlags

ЗначениеОписание
AppendSourceObject = 16

При отправке сигнала исходный объект автоматически добавляется после исходных аргументов сигнала, независимо от отвязок подключенного Callable, которые влияют только на исходные аргументы сигнала (см. Callable.unbind, Callable.get_unbound_arguments_count).

Deferred = 1

Отложенные соединения активируют свои Callable во время простоя (в конце кадра), а не мгновенно.

OneShot = 4

Одноразовые соединения автоматически отключаются после выброса.

Persist = 2

Сохраняющиеся соединения сигналов сохраняются при сериализации объекта (например, при использовании PackedEntity.Pack). В редакторе соединения, созданные через панель сигналов, всегда сохраняются. Примечание: Соединения с лямбда-функциями (то есть, когда код функции встроен в вызов ReckfellObject.Connect) не могут быть сделаны постоянными.

ReferenceCounted = 8

Ссылки-подсчетные соединения могут быть назначены одному и тому же Callable несколько раз. Каждое отключение уменьшает внутренний счетчик. Сигнал полностью отключается только тогда, когда счетчик достигает 0.

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

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

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

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