ReckfellObject
Базовый отражаемый объект с методами, свойствами, сигналами и уведомлениями.
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Конструктор
public ReckfellObject();Построить новый ReckfellObject.
Свойства1
NativeInstanceСвойство
public IntPtr NativeInstance { get; }Направляющий на коренной пример этого ReckfellObject.
Методы70
AddUserSignalvoid
public void AddUserSignal(string signal, Reckfell.Collections.Array arguments = null);Добавляет динамический сигнал этому экземпляру. Имя не должно конфликтовать с существующим сигналом/встроенным членом; это не регистрация сигнала для всех экземпляров класса.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | string | — |
arguments | Reckfell.Collections.Array | null |
signalТочное имя объявленного или динамического сигнала.
argumentsНеобязательные словари описания аргументов сигнала, включая name и type.
Call2 перегрузки
public Variant Call(StringName method, params Variant[] args);Динамически вызывает метод экземпляра с переданными Variant. Для известного типа предпочитайте типизированный API; используйте точное имя и совместимые аргументы.
| Имя | Тип | По умолчанию |
|---|---|---|
method | StringName | — |
args | Variant[] | — |
methodТочное динамическое имя метода; для встроенного Entity2D — set_position.
argsАргументы в порядке объявления метода/сигнала с совместимыми типами.
VariantСинхронный результат метода как Variant.
public Variant Call(StringName method, ReadOnlySpan<Variant> args);Вызывает метод method для объекта и возвращает результат. Этот метод поддерживает переменное количество аргументов, поэтому параметры могут быть переданы в виде списка, разделенного запятыми.
var node = new Entity3D();
node.Call(Entity3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), 1.571f);Примечание: В C# method должен быть в snake_case при ссылке на встроенные методы Reckfell. Предпочитайте использовать имена, представленные в классе MethodName, чтобы избежать выделения нового StringName при каждом вызове.
| Имя | Тип | По умолчанию |
|---|---|---|
method | StringName | — |
args | ReadOnlySpan<Variant> | — |
VariantCallDeferred2 перегрузки
public Variant CallDeferred(StringName method, params Variant[] args);Ставит вызов метода в очередь, не выполняя его сразу. Обработка не обещает ровно следующий кадр; возвращённый Variant не является будущим результатом вызова.
| Имя | Тип | По умолчанию |
|---|---|---|
method | StringName | — |
args | Variant[] | — |
methodТочное динамическое имя метода; для встроенного Entity2D — set_position.
argsАргументы в порядке объявления метода/сигнала с совместимыми типами.
VariantNil; не будущий результат поставленного в очередь метода.
public Variant CallDeferred(StringName method, ReadOnlySpan<Variant> args);Вызывает метод method объекта во время простоя. Всегда возвращает null, не результат метода.
Простой происходит в основном в конце кадров процесса и физики. В это время отложенные вызовы будут выполняться до тех пор, пока их не останется, что означает, что вы можете откладывать вызовы из других отложенных вызовов, и они все равно будут выполняться в текущем цикле простоя. Это означает, что вы не должны вызывать отложенный метод из самого себя (или из метода, вызываемого им), так как это вызывает бесконечную рекурсию так же, как если бы вы вызвали метод напрямую.
Этот метод поддерживает переменное количество аргументов, поэтому параметры можно передавать в виде списка, разделенного запятыми.
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 сигналы.
| Имя | Тип | По умолчанию |
|---|---|---|
method | StringName | — |
args | ReadOnlySpan<Variant> | — |
VariantCallvVariant
public Variant Callv(StringName method, Reckfell.Collections.Array argArray);Вызывает method на объекте и возвращает результат. В отличие от ReckfellObject.Call, этот метод ожидает, что все параметры будут содержаться внутри arg_array.
var node = new Entity3D();
node.Callv(Entity3D.MethodName.Rotate, [new Vector3(1f, 0f, 0f), 1.571f]);Примечание: В C# method должен быть в snake_case при ссылке на встроенные методы Reckfell. Предпочитайте использовать имена, представленные в классе MethodName, чтобы избежать выделения нового StringName при каждом вызове.
| Имя | Тип | По умолчанию |
|---|---|---|
method | StringName | — |
argArray | Reckfell.Collections.Array | — |
VariantCanTranslateMessagesbool
public bool CanTranslateMessages();Возвращает true, если объекту разрешено переводить сообщения с помощью ReckfellObject.Tr и ReckfellObject.TrN. См. также ReckfellObject.SetMessageTranslation.
boolCancelFreevoid
public void CancelFree();Если этот метод вызывается во время ReckfellObject.NotificationPredelete, этот объект отклонит освобождение и останется выделенным. Это в основном внутренняя функция, используемая для обработки ошибок, чтобы пользователь не освобождал объекты, когда они не предназначены для этого.
ConnectError
public Error Connect(StringName signal, Callable callable, uint flags = 0);Подключает Callable к сигналу с указанными флагами. Обычный вызов синхронен; Deferred ставит callback в очередь, OneShot отключает после первого вызова. Сохраняйте Callable для последующего отключения.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | StringName | — |
callable | Callable | — |
flags | uint | 0 |
signalТочное имя объявленного или динамического сигнала.
callableCallable с подходящей сигнатурой; сохраняйте его идентичность.
flagsБитовая маска ConnectFlags; 0 — обычное подключение.
ErrorError.Ok при успешном подключении, иначе код ошибки.
Disconnectvoid
public void Disconnect(StringName signal, Callable callable);Отключает существующее соединение с тем же Callable. При необходимости сначала проверьте IsConnected; новая несвязанная лямбда не заменяет сохранённый callback.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | StringName | — |
callable | Callable | — |
signalТочное имя объявленного или динамического сигнала.
callableCallable с подходящей сигнатурой; сохраняйте его идентичность.
Disposevoid
public void Dispose();Исключает это ReckfellObject.
EmitSignal2 перегрузки
public Error EmitSignal(StringName signal, params Variant[] args);Испускает сигнал с совместимыми объявлению аргументами. Обычные подключения вызываются сразу; успех испускания не доказывает корректность логики каждого callback.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | StringName | — |
args | Variant[] | — |
signalТочное имя объявленного или динамического сигнала.
argsАргументы в порядке объявления метода/сигнала с совместимыми типами.
ErrorError.Ok при успешном испускании, иначе код ошибки.
public Error EmitSignal(StringName signal, ReadOnlySpan<Variant> args);Выдает заданный signal по имени. Сигнал должен существовать, поэтому он должен быть встроенным сигналом этого класса или одного из его унаследованных классов, или определяемым пользователем сигналом (см. ReckfellObject.AddUserSignal). Этот метод поддерживает переменное количество аргументов, поэтому параметры можно передавать в виде списка, разделенного запятыми.
Возвращает ERR_UNAVAILABLE, если signal не существует или параметры недопустимы.
EmitSignal(SignalName.Hit, "sword", 100);
EmitSignal(SignalName.GameOver);Примечание: В C# signal должен быть в snake_case при ссылке на встроенные сигналы Reckfell. Предпочитайте использовать имена, представленные в классе SignalName, чтобы избежать выделения нового StringName при каждом вызове.
Бесплатно
| Имя | Тип | По умолчанию |
|---|---|---|
signal | StringName | — |
args | ReadOnlySpan<Variant> | — |
ErrorFreevoid
public void Free();Удаляет объект из памяти. Существующие ранее ссылки на объект становятся недействительными, и любая попытка доступа к ним приведет к ошибке выполнения. Проверка ссылок с помощью @GlobalScope.is_instance_valid вернет false. Это эквивалентно функции memdelete в ReckfellExtension C++.
GetVariant
public Variant Get(StringName property);Читает свойство экземпляра по нативному/скриптовому имени. Это динамическое значение Variant, не отражение каждого свойства CLR; сверяйтесь с GetPropertyList и контрактом объекта.
| Имя | Тип | По умолчанию |
|---|---|---|
property | StringName | — |
propertyИмя свойства экземпляра, например position.
VariantЗначение свойства как Variant.
GetClassstring
public string GetClass();Возвращает нативное имя класса, например Entity2D, а не управляемое имя подключённого C#-скрипта. Для типа CLR используйте GetType.
stringНативное имя типа объекта.
GetIncomingConnectionsReckfell.Collections.Array<Reckfell.Collections.Dictionary>
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetIncomingConnections();Возвращает Reckfell.Collections.Array соединений сигналов, полученных этим объектом. Каждое соединение представлено как Reckfell.Collections.Dictionary, который содержит три записи:
signal— ссылка наSignal;callable— ссылка наCallable;flags— комбинацияReckfellObject.ConnectFlags.
Reckfell.Collections.Array<Reckfell.Collections.Dictionary>GetIndexedVariant
public Variant GetIndexed(EntityPath propertyPath);Читает вложенный компонент свойства через EntityPath, например position:x. Это путь свойства, не поиск дочерней Entity в дереве.
| Имя | Тип | По умолчанию |
|---|---|---|
propertyPath | EntityPath | — |
propertyPathEntityPath свойства/компонентов, например position:x.
VariantЗначение указанного вложенного компонента.
GetInstanceIdulong
public ulong GetInstanceId();Возвращает временный идентификатор живого объекта для поиска через InstanceFromId. Он не продлевает жизнь объекта и не является постоянным ID сохранения.
ulongТекущий идентификатор объекта ulong.
GetMetaVariant
public Variant GetMeta(StringName name, Variant @default = default);Читает метаданные. При отсутствии имени используйте HasMeta или явный default, отличный от Nil; отсутствие записи с default=Nil сообщает ошибку, а не выполняет тихую проверку.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
default | Variant | default |
nameТочный идентификатор метаданных с учётом регистра.
defaultFallback, отличный от Nil, если отсутствие записи допустимо.
VariantЗначение записи либо явный fallback при её отсутствии.
GetMetaListReckfell.Collections.Array<StringName>
public Reckfell.Collections.Array<StringName> GetMetaList();Возвращает текущие имена метаданных, включая скрытые от обычного Inspector. Это не список свойств класса.
Reckfell.Collections.Array<StringName>Коллекция имён текущих метаданных.
GetMethodArgumentCountint
public int GetMethodArgumentCount(StringName method);Возвращает количество аргументов указанного method по имени.
Примечание: В C# method должен быть в snake_case при ссылке на встроенные методы Reckfell. Предпочитайте использовать имена, представленные в классе MethodName, чтобы избежать выделения нового StringName при каждом вызове.
| Имя | Тип | По умолчанию |
|---|---|---|
method | StringName | — |
intGetMethodListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetMethodList();Возвращает метаданные методов экземпляра, включая поддерживаемый скриптовый контекст. Это не универсальный перечень всех специальных операций языковой оболочки.
Reckfell.Collections.Array<Reckfell.Collections.Dictionary>Коллекция словарей метаданных методов экземпляра.
GetPropertyListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetPropertyList();Возвращает словари метаданных свойств этого экземпляра с учётом поддерживаемых нативных и динамических/скриптовых объявлений. Список описывает API объекта, не произвольный граф CLR.
Reckfell.Collections.Array<Reckfell.Collections.Dictionary>Коллекция словарей метаданных свойств экземпляра.
GetScriptVariant
public Variant GetScript();Возвращает экземпляр Script объекта или null, если скрипт не прикреплен.
VariantGetSignalConnectionListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetSignalConnectionList(StringName signal);Возвращает Reckfell.Collections.Array Соединения для данного signal Каждое подсоединение представлено в качестве Reckfell.Collections.Dictionary которые содержат три позиции:
Signal;callable- ссылка на соединенноеCallable;flags- комбинацияReckfellObject.ConnectFlags.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | StringName | — |
Reckfell.Collections.Array<Reckfell.Collections.Dictionary>GetSignalListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetSignalList();Возвращает метаданные доступных сигналов экземпляра, включая добавленный через AddUserSignal. Не заменяет список только зарегистрированного класса.
Reckfell.Collections.Array<Reckfell.Collections.Dictionary>Коллекция словарей метаданных сигналов экземпляра.
GetTranslationDomainStringName
public StringName GetTranslationDomain();Возвращает имя домена перевода, используемого ReckfellObject.Tr и ReckfellObject.TrN. См. также TranslationServer.
StringNameHasConnectionsbool
public bool HasConnections(StringName signal);Возвращает true, если существует какое-либо соединение по заданному имени signal.
Примечание: В C# signal должен быть в snake_case при ссылке на встроенные методы Reckfell. Предпочитайте использовать имена, представленные в классе SignalName, чтобы избежать выделения нового StringName при каждом вызове.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | StringName | — |
boolHasMetabool
public bool HasMeta(StringName name);Проверяет существование метаданных без чтения отсутствующего значения. После SetMeta с Nil запись отсутствует.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
nameТочный идентификатор метаданных с учётом регистра.
boolTrue, если запись существует.
HasMethodbool
public bool HasMethod(StringName method);Проверяет доступность метода на этом экземпляре, включая его скриптовый контекст. Встроенные строковые имена чувствительны к регистру: set_position не равно SetPosition.
| Имя | Тип | По умолчанию |
|---|---|---|
method | StringName | — |
methodТочное динамическое имя метода; для встроенного Entity2D — set_position.
boolTrue, если метод доступен экземпляру.
HasSignalbool
public bool HasSignal(StringName signal);Проверяет доступность сигнала на экземпляре, включая унаследованные и поддерживаемые динамические объявления.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | StringName | — |
signalТочное имя объявленного или динамического сигнала.
boolTrue при доступном сигнале.
HasUserSignalbool
public bool HasUserSignal(StringName signal);Проверяет динамический пользовательский сигнал экземпляра, отличая его от обычного унаследованного объявления класса.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | StringName | — |
signalТочное имя объявленного или динамического сигнала.
boolTrue при динамическом пользовательском сигнале.
InstanceFromIdReckfellObject
public static ReckfellObject? InstanceFromId(ulong instanceId);Разрешает текущий ID в объект или null после его уничтожения. ID не удерживает Entity в памяти и не заменяет проверку актуального времени жизни.
| Имя | Тип | По умолчанию |
|---|---|---|
instanceId | ulong | — |
instanceIdРанее полученный текущий ID, не идентификатор из другого запуска.
ReckfellObjectЖивой объект либо null.
IsBlockingSignalsbool
public bool IsBlockingSignals();Возвращает true, если объект блокирует передачу своих сигналов. См. ReckfellObject.SetBlockSignals.
boolIsClass2 перегрузки
public bool IsClass(StringName @class);Проверяет нативный тип и его базовые классы по точному имени ClassDB. Не заменяет проверку произвольного класса CLR или положения объекта в дереве.
| Имя | Тип | По умолчанию |
|---|---|---|
class | StringName | — |
classТочное нативное имя класса ClassDB.
boolTrue для собственного нативного типа или его предка.
public bool IsClass(string @class);Проверяет нативный тип и его базовые классы по точному имени ClassDB. Не заменяет проверку произвольного класса CLR или положения объекта в дереве.
| Имя | Тип | По умолчанию |
|---|---|---|
class | string | — |
classТочное нативное имя класса ClassDB.
boolTrue для собственного нативного типа или его предка.
IsConnectedbool
public bool IsConnected(StringName signal, Callable callable);Проверяет конкретную пару сигнал/Callable, не просто наличие любого слушателя.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | StringName | — |
callable | Callable | — |
signalТочное имя объявленного или динамического сигнала.
callableCallable с подходящей сигнатурой; сохраняйте его идентичность.
boolTrue для существующего соединения этой пары.
IsInstanceIdValidbool
public static bool IsInstanceIdValid(ulong id);Returns (Возврат) true если: ReckfellObject которое соответствует
в адрес id действительный объект (например, не был исключен из
Все объекты имеют уникальный идентификатор.
| Имя | Тип | По умолчанию |
|---|---|---|
id | ulong | — |
idИдентификатор объекта на проверку.
boolЕсли случай с данным идентификатором является действительным предметом.
IsInstanceValidbool
public static bool IsInstanceValid(ReckfellObject? instance);Проверяет наличие действительного нативного объекта у оболочки; null или освобождённая оболочка дают false. Entity, уже помеченный QueueFree, может оставаться валидным до удаления.
| Имя | Тип | По умолчанию |
|---|---|---|
instance | ReckfellObject | — |
instanceПроверяемая оболочка объекта или null.
boolTrue при действительном нативном объекте.
IsQueuedForDeletionbool
public bool IsQueuedForDeletion();Возвращает true, если для объекта был вызван метод Entity.QueueFree или EntityTree.QueueDelete.
Примечание: Этот метод не возвращает true для дочерних узлов, для которых был вызван Entity.QueueFree, даже если они будут освобождены вместе с родительским узлом.
boolNotificationvoid
public void Notification(int what, bool reversed = false);Доставляет номер уведомления. Отправка системного номера не выполняет весь протокол подключения или удаления объекта.
| Имя | Тип | По умолчанию |
|---|---|---|
what | int | — |
reversed | bool | false |
NotifyPropertyListChangedvoid
public void NotifyPropertyListChanged();Выдает сигнал ReckfellObject.PropertyListChanged. В основном он используется для обновления редактора, чтобы плагины Inspector и editor были обновлены должным образом.
PropertyCanRevertbool
public bool PropertyCanRevert(StringName property);Отменить использование этого метода для корректировки данного метода propertyВернуться к поведению. true если: property , имеет заказное значение по умолчанию и является обратимым в док Инспектора. ReckfellObject.PropertyGetRevert конкретно указать propertyпо умолчанию.
Примечание: Этот метод должен последовательно возвращаться, независимо от текущей стоимости property.
Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super в C# или его эквивалентах на других языках. Самый нижний подкласс будет называться первым, с последующими звонками вверх по иерархии классов. Цепочка вызова останавливается на первом классе, который возвращается. true.
| Имя | Тип | По умолчанию |
|---|---|---|
property | StringName | — |
boolPropertyGetRevertVariant
public Variant PropertyGetRevert(StringName property);Отменить использование этого метода для корректировки данного метода property...вернётся к поведению. property. Если значение по умолчанию отличается от property"сегодняшнее значение, в доке инспектора отображается икона обратно."
Примечание: ReckfellObject.PropertyCanRevert Необходимо также отказаться от использования этого метода.
Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super в C# или его эквивалентах на других языках. В самом нижнем подклассе будут названы первыми, с последующими звонками вверх по иерархии классов. Цепочка вызова останавливается на первом классе, который возвращает не--null Стоимость.
| Имя | Тип | По умолчанию |
|---|---|---|
property | StringName | — |
VariantRemoveMetavoid
public void RemoveMeta(StringName name);Удаляет метаданные по имени. Соответствует удалению через SetMeta с Nil и не меняет определение нативного класса.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
nameТочный идентификатор метаданных с учётом регистра.
RemoveUserSignalvoid
public void RemoveUserSignal(StringName signal);Удаляет указанный пользовательский сигнал signal из объекта. См. также ReckfellObject.AddUserSignal и ReckfellObject.HasUserSignal.
| Имя | Тип | По умолчанию |
|---|---|---|
signal | StringName | — |
Setvoid
public void Set(StringName property, Variant value);Записывает свойство экземпляра через его динамический setter. Имя и тип должны соответствовать объекту; строка position обращается к нативному свойству Entity2D.
| Имя | Тип | По умолчанию |
|---|---|---|
property | StringName | — |
value | Variant | — |
propertyИмя свойства экземпляра, например position.
valueСовместимое значение Variant; Nil удаляет метаданные в SetMeta.
SetBlockSignalsvoid
public void SetBlockSignals(bool enable);Если установлено значение true, объект становится неспособным испускать сигналы. Таким образом, ReckfellObject.EmitSignal и сигнальные соединения не будут работать, пока не будет установлено значение false.
| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetDeferredvoid
public void SetDeferred(StringName property, Variant value);Ставит присваивание свойства в очередь. Текущее значение не обязано измениться в месте вызова; это не обещание точного номера следующего кадра.
| Имя | Тип | По умолчанию |
|---|---|---|
property | StringName | — |
value | Variant | — |
propertyИмя свойства экземпляра, например position.
valueСовместимое значение Variant; Nil удаляет метаданные в SetMeta.
SetIndexedvoid
public void SetIndexed(EntityPath propertyPath, Variant value);Записывает вложенный компонент свойства через EntityPath с обновлением исходного значения. В проверенном position:x меняется X, а Y сохраняется.
| Имя | Тип | По умолчанию |
|---|---|---|
propertyPath | EntityPath | — |
value | Variant | — |
propertyPathEntityPath свойства/компонентов, например position:x.
valueСовместимое значение Variant; Nil удаляет метаданные в SetMeta.
SetMessageTranslationvoid
public void SetMessageTranslation(bool enable);Если установлено значение true, позволяет объекту переводить сообщения с помощью ReckfellObject.Tr и ReckfellObject.TrN. Включено по умолчанию. См. также ReckfellObject.CanTranslateMessages.
| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetMetavoid
public void SetMeta(StringName name, Variant value);Задаёт именованный Variant метаданных; Nil удаляет запись. Имя должно быть допустимым идентификатором. Начальное подчёркивание скрывает запись в обычном Inspector, не от кода.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
value | Variant | — |
nameТочный идентификатор метаданных с учётом регистра.
valueСовместимое значение Variant; Nil удаляет метаданные в SetMeta.
SetScriptvoid
public void SetScript(Variant script);Прикрепляет script к объекту и создает его экземпляр. В результате вызывается _init скрипта. Script используется для расширения функциональности объекта.
Если скрипт уже существует, его экземпляр отсоединяется, а его значения свойств и состояние теряются. Встроенные значения свойств по-прежнему сохраняются.
| Имя | Тип | По умолчанию |
|---|---|---|
script | Variant | — |
SetTranslationDomainvoid
public void SetTranslationDomain(StringName domain);Устанавливает имя домена перевода, используемого ReckfellObject.Tr и ReckfellObject.TrN. См. также TranslationServer.
| Имя | Тип | По умолчанию |
|---|---|---|
domain | StringName | — |
ToSignalSignalAwaiter
public SignalAwaiter ToSignal(ReckfellObject source, StringName signal);Возвращает новую SignalAwaiter Официант, выбранный для завершения, когда случай
source испускает сигнал, указанный signal параметр.
| Имя | Тип | По умолчанию |
|---|---|---|
source | ReckfellObject | — |
signal | StringName | — |
sourceПример, который будет слушать официант.
signalСигнал, которого ждет официант.
ToStringstring
public override string ToString();Переопределите этот метод, чтобы настроить возвращаемое значение метода ReckfellObject.ToString и, следовательно, представление объекта как string.
stringA string представление этого объекта.
Trstring
public string Tr(StringName message, StringName context = null);Переводит message, используя каталоги перевода, настроенные в настройках проекта. Для помощи с переводом можно указать дополнительный context. Обратите внимание, что большинство узлов Control автоматически переводят свои строки, поэтому этот метод в основном полезен для форматированных строк или нарисованного текста.
Если ReckfellObject.CanTranslateMessages равен false или перевод недоступен, этот метод возвращает message без изменений. См. ReckfellObject.SetMessageTranslation.
Подробные примеры см. в Интернационализация игр.
Примечание: Этот метод нельзя использовать без экземпляра ReckfellObject, так как для него требуется метод ReckfellObject.CanTranslateMessages. Чтобы перевести строки в статическом контексте, используйте TranslationServer.Translate.
| Имя | Тип | По умолчанию |
|---|---|---|
message | StringName | — |
context | StringName | null |
stringTrNstring
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.
| Имя | Тип | По умолчанию |
|---|---|---|
message | StringName | — |
pluralMessage | StringName | — |
n | int | — |
context | StringName | null |
stringWeakRefWeakRef
public static WeakRef? WeakRef(ReckfellObject? obj);Возвращает слабое указание на объект, или null
если аргумент недействителен.
Слабой ссылки на объект недостаточно для сохранения объекта в живых:
в то время, когда остающиеся ссылки на судью являются слабыми ссылками,
Коллекция мусора свободна уничтожать референта и повторно использовать его память
Однако, до тех пор, пока объект не будет уничтожен
Недостаток ссылки может вернуть объект, даже если нет сильных ссылок
К этому.
| Имя | Тип | По умолчанию |
|---|---|---|
obj | ReckfellObject | — |
objОбъект.
_GetVariant
public virtual Variant _Get(StringName property);Отменить этот метод, чтобы изменить поведение ReckfellObject.Get. должен вернуть данные propertyзначение или null если: property с этим надо вести себя нормально.
В сочетании с ReckfellObject.Set и ReckfellObject.GetPropertyList, этот метод позволяет определить свойства, которые особенно полезны для редактора.
Примечание: Данный метод не называется при получении встроенных свойств объекта, включая свойства, определенные [annotation @C#.@Export].
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
| Имя | Тип | По умолчанию |
|---|---|---|
property | StringName | — |
Variant_GetPropertyListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
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 контроль размера списка:
[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
public virtual Variant _IterGet(Variant iter);Возвращает текущую стоимость. iter сохраняет состояние итерации, но в отличие от ReckfellObject._IterInit и ReckfellObject._IterNext штат должен быть только чтен, так что нет никакого Reckfell.Collections.Array Обертка.
Совет: В C# вы можете использовать подтип Variant в качестве типа возврата для ReckfellObject._IterGet. Указанный тип будет использоваться для установки типа переменной итератора в for петли, повышающие безопасность типа.
| Имя | Тип | По умолчанию |
|---|---|---|
iter | Variant | — |
Variant_IterInitbool
public virtual bool _IterInit(Reckfell.Collections.Array iter);Инициализирует итератор. iter Сохранить состояние итерации. Поскольку C# не поддерживает переходящий аргумент путем ссылки, одноэлементный массив используется в качестве оберточного устройства. Этот массив не следует умножить. Возвращение true до тех пор, пока итератор не достигнет конца.
Примечание: Избегать хранения итератора в переменной члена, использовать iter В противном случае, вы не сможете использовать один и тот же итератор в гнездах петлей.
См. также онлайновые документы.
| Имя | Тип | По умолчанию |
|---|---|---|
iter | Reckfell.Collections.Array | — |
bool_IterNextbool
public virtual bool _IterNext(Reckfell.Collections.Array iter);Передвигает итератор в следующую итерацию. iter Сохранить состояние итерации. Поскольку C# не поддерживает переходящий аргумент путем ссылки, одноэлементный массив используется в качестве оберточного устройства. Этот массив не следует умножить. Возвращение true до тех пор, пока итератор не достигнет конца.
Уведомления
| Имя | Тип | По умолчанию |
|---|---|---|
iter | Reckfell.Collections.Array | — |
bool_Notificationvoid
public virtual void _Notification(int what);Обработчик кода события. Для Entity используйте отдельные lifecycle-callbacks, когда они подходят. C# RefCounted-скрипт не получает Predelete в проверенном мосте.
| Имя | Тип | По умолчанию |
|---|---|---|
what | int | — |
_PropertyCanRevertbool
public virtual bool _PropertyCanRevert(StringName property);Отменить использование этого метода для корректировки данного метода propertyВернуться к поведению. true если: property , имеет заказное значение по умолчанию и является обратимым в док Инспектора. ReckfellObject.PropertyGetRevert конкретно указать propertyпо умолчанию.
Примечание: Этот метод должен последовательно возвращаться, независимо от текущей стоимости property.
Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super в C# или его эквивалентах на других языках. Самый нижний подкласс будет называться первым, с последующими звонками вверх по иерархии классов. Цепочка вызова останавливается на первом классе, который возвращается. true.
| Имя | Тип | По умолчанию |
|---|---|---|
property | StringName | — |
bool_PropertyGetRevertVariant
public virtual Variant _PropertyGetRevert(StringName property);Отменить использование этого метода для корректировки данного метода property...вернётся к поведению. property. Если значение по умолчанию отличается от property"сегодняшнее значение, в доке инспектора отображается икона обратно."
Примечание: ReckfellObject.PropertyCanRevert Необходимо также отказаться от использования этого метода.
Примечание: В отличие от других виртуальных методов, этот метод называется автоматически для каждого сценария, который его перекрывает. Это означает, что ввод в действие базы не должен вызываться через super в C# или его эквивалентах на других языках. В самом нижнем подклассе будут названы первыми, с последующими звонками вверх по иерархии классов. Цепочка вызова останавливается на первом классе, который возвращает не--null Стоимость.
| Имя | Тип | По умолчанию |
|---|---|---|
property | StringName | — |
Variant_Setbool
public virtual bool _Set(StringName property, Variant value);Отменить этот метод, чтобы изменить поведение ReckfellObject.Set. Должен установить property в адрес value и возвращения trueили false если: property Следует вести себя нормально. property это зависит от применения этого метода.
В сочетании с ReckfellObject.Get и ReckfellObject.GetPropertyList, этот метод позволяет определить свойства, которые особенно полезны для редактора.
Примечание: Этот метод не называется при установлении встроенных свойств объекта, включая свойства, определенные [annotation @C#.@Export].
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.
| Имя | Тип | По умолчанию |
|---|---|---|
property | StringName | — |
value | Variant | — |
bool_ValidatePropertyvoid
public virtual void _ValidateProperty(Reckfell.Collections.Dictionary property);Переопределите этот метод, чтобы настроить существующие свойства. Каждая информация о свойствах проходит через этот метод, за исключением свойств, добавленных с помощью ReckfellObject.GetPropertyList. Содержимое словаря такое же, как в ReckfellObject.GetPropertyList.
[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;
}
}
}| Имя | Тип | По умолчанию |
|---|---|---|
property | Reckfell.Collections.Dictionary | — |
Сигналы и события2
PropertyListChangedСобытие
public event Action PropertyListChanged;Вызывается при вызове ReckfellObject.NotifyPropertyListChanged.
Сценарий изменён
ScriptChangedСобытие
public event Action ScriptChanged;Вызывается при изменении скрипта объекта.
Примечание: Когда вызывается этот сигнал, новый скрипт еще не инициализирован. Если вам нужно получить доступ к новому скрипту, отложите подключения к этому сигналу с помощью ReckfellObject.ConnectFlags.Deferred.
Поля и константы3
NotificationExtensionReloadedПоле
public const long NotificationExtensionReloaded = 2;Уведомление получено, когда объект завершает горячую перезагрузку. Это уведомление отправляется только для классов расширений и производных.
NotificationPostinitializeПоле
public const long NotificationPostinitialize = 0;Уведомление получено при инициализации объекта, до присоединения его скрипта. Используется внутренне.
УВЕДОМЛЕНИЕ_ПРЕДЕЛЕТЕ
NotificationPredeleteПоле
public const long NotificationPredelete = 1;Уведомление, полученное, когда объект собирается быть удален. Может использоваться как деструкторы в объектно-ориентированных языках программирования. Это уведомление отправляется в обратном порядке.
ReckfellObject.ConnectFlags
| Значение | Описание |
|---|---|
AppendSourceObject = 16 | При отправке сигнала исходный объект автоматически добавляется после исходных аргументов сигнала, независимо от отвязок подключенного |
Deferred = 1 | Отложенные соединения активируют свои |
OneShot = 4 | Одноразовые соединения автоматически отключаются после выброса. |
Persist = 2 | Сохраняющиеся соединения сигналов сохраняются при сериализации объекта (например, при использовании |
ReferenceCounted = 8 | Ссылки-подсчетные соединения могут быть назначены одному и тому же |