unity烘焙场景的创建、保存和使⽤(附demo项⽬)这是⼀个⼊门教程,demo项⽬:1.打开Unity,新建⼀个场景2.打开Light窗⼝:如下图红框处设置参数: 调 整 导 ⼊ 的 模 型 参 数 :1.导 ⼊ 本 地 materials,并 apply: 2.打 勾 , 并 apply: 把模型拖拽到Hierarchy窗⼝,右键 对 象 ,点 击 下图⽅ 框处:勾选 对 象 的static属性: 设置灯 光 的属 性 : 回 到Light窗⼝,点 击 按 钮 开始 烘 焙 :等 待 ⼏ 分 钟 即 可 烘焙好:原图: 烘焙后效果图: 但是这个模型只能放在当前场景使⽤,要想在别的场景也能使⽤,就需要制作预设。⾸先拖拽对象到资源窗⼝创建预设,并给预设附⼀个PrefabLightmapData脚本,上 ⾯ 的demo项⽬⾥ 有 ,代 码 如 下 :using UnityEngine;using System.Collections.Generic;public class PrefabLightmapData : MonoBehaviour { [System.Serializable] struct RendererInfo { public Renderer renderer; public int lightmapIndex; public int lightmapIndex; public Vector4 lightmapOffsetScale; } [SerializeField] RendererInfo[] m_RendererInfo; [SerializeField] Texture2D[] m_Lightmaps; void Awake() { if (m_RendererInfo == null || m_RendererInfo.Length == 0) return; var lightmaps = LightmapSettings.lightmaps; var combinedLightmaps = new LightmapData[lightmaps.Length + m_Lightmaps.Length]; lightmaps.CopyTo(combinedLightmaps, 0); for (int i = 0; i < m_Lightmaps.Length; i++) { combinedLightmaps[i + lightmaps.Length] = new LightmapData(); combinedLightmaps[i + lightmaps.Length].lightmapColor = m_Lightmaps[i]; } ApplyRendererInfo(m_RendererInfo, lightmaps.Length); LightmapSettings.lightmaps = combinedLightmaps; } static void ApplyRendererInfo(RendererInfo[] infos, int lightmapOffsetIndex) { for (int i = 0; i < infos.Length; i++) { var info = infos[i]; info.renderer.lightmapIndex = info.lightmapIndex + lightmapOffsetIndex; info.renderer.lightmapScaleOffset = info.lightmapOffsetScale; } }#if UNITY_EDITOR [UnityEditor.MenuItem("Assets/Bake Pre...