48 lines
1.4 KiB
C#
48 lines
1.4 KiB
C#
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using System.Collections.Generic;
|
|
|
|
[InitializeOnLoad]
|
|
public class PlatformMeshCompression : AssetPostprocessor
|
|
{
|
|
// Map GUIDs to compression settings: (PC, Android)
|
|
static readonly Dictionary<string, (ModelImporterMeshCompression pc, ModelImporterMeshCompression android)> compressionMap
|
|
= new Dictionary<string, (ModelImporterMeshCompression, ModelImporterMeshCompression)>
|
|
{
|
|
{ "e82fc872936dfa44a8653aab54da1bba", (ModelImporterMeshCompression.Off, ModelImporterMeshCompression.Medium) },
|
|
};
|
|
|
|
static PlatformMeshCompression()
|
|
{
|
|
EditorApplication.delayCall += ReimportMappedAssets;
|
|
}
|
|
|
|
static void ReimportMappedAssets()
|
|
{
|
|
foreach (var guid in compressionMap.Keys)
|
|
{
|
|
string path = AssetDatabase.GUIDToAssetPath(guid);
|
|
if (!string.IsNullOrEmpty(path))
|
|
{
|
|
AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate);
|
|
}
|
|
}
|
|
}
|
|
|
|
void OnPreprocessModel()
|
|
{
|
|
var modelImporter = (ModelImporter)assetImporter;
|
|
string guid = AssetDatabase.AssetPathToGUID(assetPath);
|
|
|
|
if (compressionMap.TryGetValue(guid, out var compressions))
|
|
{
|
|
#if UNITY_ANDROID
|
|
modelImporter.meshCompression = compressions.android;
|
|
#else
|
|
modelImporter.meshCompression = compressions.pc;
|
|
#endif
|
|
}
|
|
}
|
|
}
|
|
#endif
|