reckfellENGINE

EditorUndoRedoManager

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

На этой странице
class EditorUndoRedoManagerReckfellSharpEditorНаследует ReckfellObject

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

EditorUndoRedoManager — это менеджер для объектов UndoRedo, связанных с отредактированными сценами. Каждая сцена имеет собственную историю отмен, а EditorUndoRedoManager гарантирует, что каждое действие, выполненное в редакторе, будет связано с соответствующей сценой. Для действий, не связанных со сценами (редактирование ProjectSettings, внешние ресурсы и т. д.), используется отдельная глобальная история. Использование в основном такое же, как и UndoRedo. Вы создаете и фиксируете действия, а менеджер автоматически решает изнутри, к каким сценам они относятся. Сцена выводится на основе первой операции в действии с использованием объекта из операции. Правила следующие:

  • Если объект — Entity, используйте текущую отредактированную сцену;
  • Если объект — встроенный ресурс, используйте сцену из его пути;
  • Если объект — внешний ресурс или что-то еще, используйте глобальную историю. Иногда это предположение может давать ложные результаты, поэтому вы можете предоставить пользовательский объект контекста при создании действия. EditorUndoRedoManager предназначен для использования плагинами редактора Reckfell. Вы можете получить его с помощью EditorPlugin.GetUndoRedo. Для нередакторного использования или плагинов, которым не нужно интегрироваться с историей отмен редактора, используйте вместо этого UndoRedo. API менеджера в основном такой же, как в UndoRedo, поэтому вы можете обратиться к его документации за дополнительными примерами. Главное отличие в том, что EditorUndoRedoManager использует объект + имя метода для действий вместо Callable.

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

Методы17

AddDoMethod2 перегрузки
# AddDoMethod · 1/2
C#
public void AddDoMethod(ReckfellObject @object, StringName method, params Variant[] args);

Зарегистрируйте метод, который будет вызван при фиксации действия (т. е. действие «do»). Если это первая операция, object будет использоваться для вывода истории отмены цели.

Параметры
ИмяТипПо умолчанию
objectReckfellObject—
methodStringName—
argsVariant[]—
# AddDoMethod · 2/2
C#
public void AddDoMethod(ReckfellObject @object, StringName method, ReadOnlySpan<Variant> args);

Зарегистрируйте метод, который будет вызван при фиксации действия (т. е. действие «do»). Если это первая операция, object будет использоваться для вывода истории отмены цели.

Параметры
ИмяТипПо умолчанию
objectReckfellObject—
methodStringName—
argsReadOnlySpan<Variant>—
AddDoPropertyvoid
# AddDoProperty
C#
public void AddDoProperty(ReckfellObject @object, StringName property, Variant value);

Зарегистрируйте изменение значения свойства для "do". Если это первая операция, object будет использоваться для вывода истории отмены цели.

Параметры
ИмяТипПо умолчанию
objectReckfellObject—
propertyStringName—
valueVariant—
AddDoReferencevoid
# AddDoReference
C#
public void AddDoReference(ReckfellObject @object);

Зарегистрируйте ссылку для "do", которая будет стерта, если история "do" будет утеряна. Это полезно в основном для новых узлов, созданных для вызова "do". Не используйте для ресурсов.

Параметры
ИмяТипПо умолчанию
objectReckfellObject—
AddUndoMethod2 перегрузки
# AddUndoMethod · 1/2
C#
public void AddUndoMethod(ReckfellObject @object, StringName method, params Variant[] args);

Зарегистрируйте метод, который будет вызван при отмене действия (т. е. действие «отменить»). Если это первая операция, object будет использоваться для вывода целевой истории отмен.

Параметры
ИмяТипПо умолчанию
objectReckfellObject—
methodStringName—
argsVariant[]—
# AddUndoMethod · 2/2
C#
public void AddUndoMethod(ReckfellObject @object, StringName method, ReadOnlySpan<Variant> args);

Зарегистрируйте метод, который будет вызван при отмене действия (т. е. действие «отменить»). Если это первая операция, object будет использоваться для вывода целевой истории отмен.

Параметры
ИмяТипПо умолчанию
objectReckfellObject—
methodStringName—
argsReadOnlySpan<Variant>—
AddUndoPropertyvoid
# AddUndoProperty
C#
public void AddUndoProperty(ReckfellObject @object, StringName property, Variant value);

Зарегистрируйте изменение значения свойства для «отмены». Если это первая операция, object будет использоваться для вывода целевой истории отмен.

Параметры
ИмяТипПо умолчанию
objectReckfellObject—
propertyStringName—
valueVariant—
AddUndoReferencevoid
# AddUndoReference
C#
public void AddUndoReference(ReckfellObject @object);

Зарегистрируйте ссылку для "отмены", которая будет стерта, если история "отмены" будет утеряна. Это полезно в основном для узлов, удаленных с помощью вызова "do" (а не вызова "undo"!).

Параметры
ИмяТипПо умолчанию
objectReckfellObject—
ClearHistoryvoid
# ClearHistory
C#
public void ClearHistory(int id = -99, bool increaseVersion = true);

Очищает указанную историю отмены. Вы можете очистить историю для конкретной сцены, глобальную историю или для всех историй одновременно (кроме EditorUndoRedoManager.SpecialHistory.RemoteHistory), если id равно EditorUndoRedoManager.SpecialHistory.InvalidHistory. Если increase_version равно true, версия истории отмены будет увеличена, помечая её как несохранённую. Полезно для операций, изменяющих сцену, но не поддерживающих отмену.

Примечание: Если вы хотите пометить отредактированную сцену как несохраненную, не очищая ее историю, используйте вместо этого EditorInterface.MarkSceneAsUnsaved.

Параметры
ИмяТипПо умолчанию
idint-99
increaseVersionbooltrue
CommitActionvoid
# CommitAction
C#
public void CommitAction(bool execute = true);

Фиксирует действие. Если execute равен true (по умолчанию), все методы/свойства "do" вызываются/устанавливаются при вызове этой функции.

Параметры
ИмяТипПо умолчанию
executebooltrue
CreateAction3 перегрузки
# CreateAction · 1/3
C#
public void CreateAction(string name, UndoRedo.MergeMode mergeMode, ReckfellObject customContext);

Создайте новое действие. После вызова выполните все вызовы EditorUndoRedoManager.AddDoMethod, EditorUndoRedoManager.AddUndoMethod, EditorUndoRedoManager.AddDoProperty и EditorUndoRedoManager.AddUndoProperty, затем зафиксируйте действие с помощью EditorUndoRedoManager.CommitAction. Способ объединения действий определяется аргументом merge_mode. Если указан объект custom_context, он будет использоваться для вывода целевой истории (вместо использования первой операции). Способ упорядочивания операций отмены в действиях определяется backward_undo_ops. Если backward_undo_ops равен false, параметры отмены упорядочиваются в том же порядке, в котором они были добавлены. Это означает, что первая добавленная операция будет первой отмененной. Если mark_unsaved равен false, действие не пометит историю как несохраненную. Это полезно, например, для действий, которые изменяют выбор или настройку, которая будет сохранена автоматически. В противном случае следует оставить true, если действие требует сохранения пользователем или если оно может привести к потере данных, если его не сохранить.

Параметры
ИмяТипПо умолчанию
namestring—
mergeModeUndoRedo.MergeMode—
customContextReckfellObject—
# CreateAction · 2/3
C#
public void CreateAction(string name, UndoRedo.MergeMode mergeMode, ReckfellObject customContext, bool backwardUndoOps);

Создайте новое действие. После вызова выполните все вызовы EditorUndoRedoManager.AddDoMethod, EditorUndoRedoManager.AddUndoMethod, EditorUndoRedoManager.AddDoProperty и EditorUndoRedoManager.AddUndoProperty, затем зафиксируйте действие с помощью EditorUndoRedoManager.CommitAction. Способ объединения действий определяется аргументом merge_mode. Если указан объект custom_context, он будет использоваться для вывода целевой истории (вместо использования первой операции). Способ упорядочивания операций отмены в действиях определяется backward_undo_ops. Если backward_undo_ops равен false, параметры отмены упорядочиваются в том же порядке, в котором они были добавлены. Это означает, что первая добавленная операция будет первой отмененной. Если mark_unsaved равен false, действие не пометит историю как несохраненную. Это полезно, например, для действий, которые изменяют выбор или настройку, которая будет сохранена автоматически. В противном случае следует оставить true, если действие требует сохранения пользователем или если оно может привести к потере данных, если его не сохранить.

Параметры
ИмяТипПо умолчанию
namestring—
mergeModeUndoRedo.MergeMode—
customContextReckfellObject—
backwardUndoOpsbool—
# CreateAction · 3/3
C#
public void CreateAction(string name, UndoRedo.MergeMode mergeMode = UndoRedo.MergeMode.Disable, ReckfellObject customContext = null, bool backwardUndoOps = false, bool markUnsaved = true);

Создайте новое действие. После вызова выполните все вызовы EditorUndoRedoManager.AddDoMethod, EditorUndoRedoManager.AddUndoMethod, EditorUndoRedoManager.AddDoProperty и EditorUndoRedoManager.AddUndoProperty, затем зафиксируйте действие с помощью EditorUndoRedoManager.CommitAction. Способ объединения действий определяется аргументом merge_mode. Если указан объект custom_context, он будет использоваться для вывода целевой истории (вместо использования первой операции). Способ упорядочивания операций отмены в действиях определяется backward_undo_ops. Если backward_undo_ops равен false, параметры отмены упорядочиваются в том же порядке, в котором они были добавлены. Это означает, что первая добавленная операция будет первой отмененной. Если mark_unsaved равен false, действие не пометит историю как несохраненную. Это полезно, например, для действий, которые изменяют выбор или настройку, которая будет сохранена автоматически. В противном случае следует оставить true, если действие требует сохранения пользователем или если оно может привести к потере данных, если его не сохранить.

Параметры
ИмяТипПо умолчанию
namestring—
mergeModeUndoRedo.MergeModeUndoRedo.MergeMode.Disable
customContextReckfellObjectnull
backwardUndoOpsboolfalse
markUnsavedbooltrue
ForceFixedHistoryvoid
# ForceFixedHistory
C#
public void ForceFixedHistory();

Заставляет следующую операцию (например, EditorUndoRedoManager.AddDoMethod) использовать историю действия, а не угадывать ее из объекта. Иногда это необходимо, когда историю невозможно правильно определить, например, для вложенного ресурса, у которого еще нет пути. Этот метод следует использовать только в случае крайней необходимости, в противном случае он может привести к недопустимому состоянию истории. Для большинства сложных случаев достаточно параметра custom_context EditorUndoRedoManager.CreateAction.

GetHistoryUndoRedoUndoRedo
# GetHistoryUndoRedo
C#
public UndoRedo GetHistoryUndoRedo(int id);

Возвращает объект UndoRedo, связанный с заданной историей id. id выше 0 сопоставляются с открытыми вкладками сцены (но не соответствуют их порядку). id 0 или ниже имеют особое значение (см. EditorUndoRedoManager.SpecialHistory). Лучше всего использовать с EditorUndoRedoManager.GetObjectHistoryId. Этот метод предоставляется только в случае, если вам нужны более продвинутые методы UndoRedo (но имейте в виду, что прямая работа с объектом UndoRedo может повлиять на стабильность редактора).

Параметры
ИмяТипПо умолчанию
idint—
Возвращает UndoRedo
GetObjectHistoryIdint
# GetObjectHistoryId
C#
public int GetObjectHistoryId(ReckfellObject @object);

Возвращает идентификатор истории, выведенный из заданного object. Его можно использовать с EditorUndoRedoManager.GetHistoryUndoRedo.

Параметры
ИмяТипПо умолчанию
objectReckfellObject—
Возвращает int
IsCommittingActionbool
# IsCommittingAction
C#
public bool IsCommittingAction();

Возвращает true, если EditorUndoRedoManager в данный момент фиксирует действие, т. е. запускает свой метод «do» или изменение свойства (см. EditorUndoRedoManager.CommitAction).

Возвращает bool

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

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

Генерируется при изменении списка действий в любой истории, либо при совершении действия, либо при очистке истории.

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

Генерируется, когда версия истории изменилась в результате отмены или повтора вызова.

EditorUndoRedoManager.SpecialHistory

ЗначениеОписание
GlobalHistory = 0

Глобальная история не связана с какой-либо сценой, а связана с внешними ресурсами и т. д.

ВРЕМЕННАЯ ИСТОРИЯ

InvalidHistory = -99

Недопустимая "null" история. Это особое значение, не связанное ни с одним объектом.

RemoteHistory = -9

История, связанная с удаленным инспектором. Используется при редактировании в реальном времени запущенного проекта.

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

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

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

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