Unity 预设Lightmap信息丢失 使用ScriptableObject保存Lightmap信息动态赋值

当在Unity中动态加载或修改预设时,Lightmap信息可能会丢失。为解决这个问题,可以利用ScriptableObject来保存Lightmap数据。创建ScriptableObject类,然后在编辑器中记录和保存Lightmap信息。在预设加载后,遍历所有Renderer并进行动态赋值,以恢复Lightmap设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下代码都是手敲完成,不是源工程中复制的,如有错误请下载源工程查看

动态加载预设或者修改预设信息时  预设Lightmap信息丢失,需要将预设Lightmap信息保存起来,加载完成后动态赋值一次。

选择了使用ScriptableObject进行数据保存。

先创建ScriptableObject类(Lightmap和对象关联字段去掉了)。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(menuName = "Data/ScripttableTest")]
public class ScripttableTest : ScriptableObject
{
    public List<LightmapInfo> lightmapInfos = new List<LightmapInfo>();
}

[System.Serializable]
public class LightmapInfo
{
    public int lightmapIndex;
    public Vector4 lightmapScaleOffset;
}

然后Creat一个ScriptableObject资源

接下来是信息记录部分,依然在编辑器下完成:

首先获取需要保存的对象,保存Lightmap信息:

        GameObject[] gameObjects = Selection.gameObjects;

        if (gameObjects != null &&
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值