diff --git a/Assets/UniGLTF/MeshUtility/Editor/ExportDialog/ExportDialogState.cs b/Assets/UniGLTF/MeshUtility/Editor/ExportDialog/ExportDialogState.cs index 42f8a1f13..15afe51d7 100644 --- a/Assets/UniGLTF/MeshUtility/Editor/ExportDialog/ExportDialogState.cs +++ b/Assets/UniGLTF/MeshUtility/Editor/ExportDialog/ExportDialogState.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using UnityEditor; using UnityEngine; namespace MeshUtility @@ -22,24 +23,32 @@ namespace MeshUtility } #region ExportRoot管理 - GameObject m_root; + (GameObject GameObject, bool IsPrefab) m_root; public event Action ExportRootChanged; void RaiseExportRootChanged() { var tmp = ExportRootChanged; if (tmp == null) return; - tmp(m_root); + tmp(m_root.GameObject); } public GameObject ExportRoot { - get { return m_root; } + get { return m_root.GameObject; } set { - if (m_root == value) + string assetPath = default; + var isPrefab = false; + if (value != null && AssetDatabase.IsMainAsset(value)) + { + assetPath = AssetDatabase.GetAssetPath(value); + isPrefab = true; + value = PrefabUtility.LoadPrefabContents(assetPath); + } + if (m_root.GameObject == value) { return; } - m_root = value; + m_root = (value, isPrefab); m_requireValidation = true; RaiseExportRootChanged(); }