Страница 1 из 1

Можно ли запечь источник света в отдельную лайтмапу?

СообщениеДобавлено: 13 авг 2018, 11:04
Vefery
Хочу реализовать свет от телевизора в ночной квартире через area light, но также хочу добавить возможность его отключить. В Гугле нашел код по отключении лайтмапы сцены в целом, кусочки от одной лайтмапы отключать врятли выйдет, а вот можно ли запечь этот источник света в отдельную лайтмапу и через код отключать только ее?

Re: Можно ли запечь источник света в отдельную лайтмапу?

СообщениеДобавлено: 14 авг 2018, 13:18
Bill Gates
Запекаешь свет два раза: с включенным и выключенным телеком. После первого раза переименовываешь папку с LightmapData, чтобы при втором запекании данные не перезаписались. Далее используешь что-то вроде этого (Unity 5.6):

Синтаксис:
Используется csharp
public class NewBehaviourScript : MonoBehaviour
{
    [SerializeField]
    private bool on;

    [SerializeField]
    private Lightmap tvOn;

    [SerializeField]
    private Lightmap tvOff;

    void Start ()
    {
        LightmapSettings.lightmaps = on ? tvOn.ToLightmapData () : tvOff.ToLightmapData ();
    }

}

[System.Serializable]
public class Lightmap
{
    [SerializeField]
    private Texture2D dir0;

    [SerializeField]
    private Texture2D light0;

    [SerializeField]
    private Texture2D dir1;

    [SerializeField]
    private Texture2D light1;

    public LightmapData[] ToLightmapData ()
    {
        LightmapData data0 = new LightmapData ();
        data0.lightmapDir = dir0;
        data0.lightmapColor = light0;

        LightmapData data1 = new LightmapData ();
        data1.lightmapDir = dir1;
        data1.lightmapColor = light1;

        return new LightmapData[] { data0, data1 };
    }
}