您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
51 行
1.5 KiB
51 行
1.5 KiB
using UnityEditor;
|
|
using UnityEditor.Build;
|
|
using UnityEditor.Build.Reporting;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering.Universal;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
[InitializeOnLoad]
|
|
class LodLightmapCopy : IProcessSceneWithReport
|
|
{
|
|
public int callbackOrder => -1;
|
|
|
|
public void OnProcessScene(Scene scene, BuildReport report)
|
|
{
|
|
Execute();
|
|
}
|
|
|
|
static LodLightmapCopy()
|
|
{
|
|
Lightmapping.bakeCompleted += Execute;
|
|
EditorApplication.playModeStateChanged += LodLightmapEdit;
|
|
}
|
|
|
|
static void LodLightmapEdit(PlayModeStateChange state)
|
|
{
|
|
if(state == PlayModeStateChange.EnteredEditMode) Execute();
|
|
}
|
|
|
|
private static void Execute()
|
|
{
|
|
if(UniversalRenderPipeline.asset.debugLevel != PipelineDebugLevel.Disabled)
|
|
Debug.Log("Baking LOD Lightmap values");
|
|
var lodGroups= Object.FindObjectsOfType<LODGroup>();
|
|
foreach (var lodGroup in lodGroups)
|
|
{
|
|
//is lod0 lightmapped
|
|
var lods = lodGroup.GetLODs();
|
|
var lod0 = lods[0].renderers;
|
|
//if(lod0[0].lightmapIndex == -1) return;
|
|
//copy settings to other lods
|
|
for (var i = 1; i < lods.Length; i++)
|
|
{
|
|
for (var j = 0; j < lod0.Length; j++)
|
|
{
|
|
lods[i].renderers[j].lightmapIndex = lod0[j].lightmapIndex;
|
|
lods[i].renderers[j].lightmapScaleOffset = lod0[j].lightmapScaleOffset;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|