Перейти к основному содержимому

API: IWorldGraph, WorldGraph и EditorGraph

GraphEngine: общая база

Графы WorldGraph и EditorGraph наследуются от generic-базы GraphEngine<TSceneData, TPortData, TConnectionData, TTransitionData>, Поэтому все методы из раздела WorldGraph (ниже) доступны и в EditorGraph — только с подменой generic-типов. EditorGraph поверх этого добавляет редакторские помощники.

IWorldGraph (рантайм)

IWorldGraph — это чистый рантайм-граф, содержащий только актуальные методы для работы с графом. Устаревшие методы, которые в 1.2 вызывались через WorldGraphContainerContainerEditorData в редакторе), помечены [Obsolete] и оставлены на самих этих типах — в контракт IWorldGraph они не входят. Получить граф можно через ITransitionManager.Graph.

МетодНазначение
IReadOnlyList<SceneRuntimeData> GetScenesData()Все сцены графа.
IReadOnlyList<ConnectionRuntimeData> GetEdgesData()Все связи графа.
bool TryGetPortData(string guid, out PortRuntimeData data)Данные порта.
bool TryGetOppositePassageGuid(string guid, out string opposite)Guid противоположного порта по связи.
bool TryGetSceneDataByPortGuid(string guid, out SceneRuntimeData data)Сцена, на которой расположен порт.
bool TryGetSceneDataByBuildIndex(int buildIndex, out SceneRuntimeData data)Сцена по Build Index.
bool TryGetSceneDataByAddress(string address, out SceneRuntimeData data)Сцена по Addressable-адресу (только под WGE_ADDRESSABLES — см. Поддержка Addressables).
bool TryGetPassageTransitionData(string currentPortGuid, out RuntimeTransitionData data)Данные перехода для GoFromAsync (по связи в графе).
RuntimeTransitionData GetTeleportTransitionData(string currentPortGuid, string targetPortGuid)Данные перехода для GoToAsync (телепорт между любыми портами).
List<SceneRuntimeData> GetNeighboursData(SceneRuntimeData sceneData, bool ignoreShortcuts)Соседние сцены, в которые можно перейти из портов указанной сцены.
List<SceneRuntimeData> GetNeighboursData(IEnumerable<string> passageGuids, bool ignoreShortcuts)Соседние сцены, в которые можно перейти из произвольного набора Guid портов.
bool CanPassTransition(string guid, bool ignoreShortcuts)Можно ли пройти через порт.
bool CanPassTransition(string guid, bool ignoreShortcuts, out TransitionPassStatusType status)Можно ли пройти через порт, с детальным status (Allowed,BlockedByDirection, BlockedByShortcut и т.д.).
bool IsShortcutOrigin(string guid), IsShortcutDestination(string guid)Признак shortcut типа связи у порта.
bool IsOneWayOrigin(string guid), IsOneWayDestination(string guid)Признак one-way типа связи у порта.

WorldGraph (рантайм)

WorldGraph — конкретная реализация IWorldGraph. Его публичная поверхность полностью совпадает с интерфейсом (таблица выше): никаких дополнительных или устаревших методов на самом WorldGraph нет. Получить его можно через WorldGraphContainer.GetWorldGraph() или WGEProjectConfig.Instance.GetWorldGraph().

примечание

Устаревшие Get-методы (возвращавшие default при отсутствии данных) заменены на TryGet-аналоги. Сами [Obsolete]-версии оставлены не на WorldGraph, а на WorldGraphContainer (рантайм) и ContainerEditorData (редактор) — для плавной миграции. См. Замена Get-методов на TryGet.

EditorGraph (редактор)

Включает все методы из WorldGraph (с типами SceneNodeData/PortData/EdgeData/EditorTransitionData), плюс редакторские помощники:

МетодНазначение
IEnumerable<(string Guid, string Path)> GetAllPortsDropdownData()Все порты графа в формате "NodeName/PortName" → Guid — для PortsDropdown с выбором среди всех портов.
IEnumerable<(string Guid, string Name)> GetPortsDropdownData(string scenePath)Порты конкретной сцены — для PortsDropdown с выбором среди портов одной сцены.
bool TryGetSceneDataBySceneAssetGuid(string sceneAssetGuid, out SceneNodeData data)Сцена по Guid ассета.
bool TryGetSceneDataByPath(string path, out SceneNodeData data)Сцена по пути к .unity-ассету.
подсказка

В коде редактора получить EditorGraph можно через RefreshContext.EditorGraph (из Refresh(RefreshContext)) или WorldGraphContainer.EditorGraph. В рантайме граф доступен как IWorldGraph через ITransitionManager.Graph; конкретная реализация — WorldGraph (например, из WGEProjectConfig.Instance.GetWorldGraph()).