Use proper file extension for guiskin and brush assets

This commit is contained in:
ds5678 2025-02-05 02:12:55 -08:00
parent 7c455931c1
commit 1afa46fc78
2 changed files with 46 additions and 1 deletions

View File

@ -10,7 +10,7 @@ namespace AssetRipper.Export.UnityProjects.Project
{
if (monoBehaviour.IsScriptableObject())
{
return new AssetExportCollection<IMonoBehaviour>(this, monoBehaviour);
return new ScriptableObjectExportCollection(this, monoBehaviour);
}
else
{
@ -28,5 +28,26 @@ namespace AssetRipper.Export.UnityProjects.Project
};
return exportCollection is not null;
}
private sealed class ScriptableObjectExportCollection : AssetExportCollection<IMonoBehaviour>
{
public ScriptableObjectExportCollection(ScriptableObjectExporter exporter, IMonoBehaviour asset) : base(exporter, asset)
{
}
protected override string GetExportExtension(IUnityObjectBase asset)
{
IMonoBehaviour monoBehaviour = (IMonoBehaviour)asset;
if (monoBehaviour.IsGuiSkin())
{
return "guiskin";
}
else if (monoBehaviour.IsBrush())
{
return "brush";
}
return base.GetExportExtension(asset);
}
}
}
}

View File

@ -21,6 +21,30 @@ public static class MonoBehaviourExtensions
return script is not null;
}
public static bool IsGuiSkin(this IMonoBehaviour monoBehaviour)
{
if (TryGetScript(monoBehaviour, out IMonoScript? script))
{
if (script.PathID is 12001 && script.Collection.Name == "unity default resources")
{
return true;
}
}
return false;
}
public static bool IsBrush(this IMonoBehaviour monoBehaviour)
{
if (TryGetScript(monoBehaviour, out IMonoScript? script))
{
if (script.PathID is 12146 && script.Collection.Name == "unity default resources")
{
return true;
}
}
return false;
}
public static bool IsTimelineAsset(this IMonoBehaviour monoBehaviour)
{
return monoBehaviour.IsType("UnityEngine.Timeline", "TimelineAsset");