2025-04-25 21:14:54 +09:00

51 lines
1.2 KiB
C#

using System.Linq;
using UniGLTF;
using UnityEditor;
using UnityEngine;
using UniGLTF.MeshUtility;
namespace VRM
{
public static class VrmPrefabUtility
{
const string BACKUP_DIR = "MeshIntegratorBackup";
public static GameObject InstantiatePrefab(GameObject prefab)
{
if (!IsPrefab(prefab)) return null;
return (GameObject)PrefabUtility.InstantiatePrefab(prefab);
}
static bool IsPrefab(Object instance)
{
if (instance == null)
{
return false;
}
if (PrefabUtility.GetPrefabAssetType(instance) != PrefabAssetType.Regular)
{
return false;
}
return true;
}
public static void ApplyChangesToPrefab(GameObject instance)
{
var prefab = instance.GetPrefab();
if (prefab == null)
{
return;
}
var path = AssetDatabase.GetAssetPath(prefab);
if (string.IsNullOrEmpty(path))
{
return;
}
PrefabUtility.SaveAsPrefabAssetAndConnect(instance, path, InteractionMode.AutomatedAction);
}
}
}