Version: 2023.2
LanguageEnglish
  • C#

AssetPostprocessor.OnPreprocessLightDescription(LightDescription,Light, AnimationClip[])

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Parameters

description A LightDescription that describes the imported camera properties and animations.
light The light generated by the Model Importer.
animations The animation clips generated by the Model Importer.

Description

Add this function to a subclass to recieve a notification when a light is imported from a Model Importer.

Unity only calls this function when ModelImporter.ImportLights is true. This function gives you control over light properties and animations during the model import process. The LightDescription structure contains all the light data from the imported file. You can use it to populate the light, its GameObject, and animation clips.

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEditor.AssetImporters;

public class SetupLightFromCameraDescription : AssetPostprocessor { void OnPreprocessLightDescription(LightDescription description, Light light, AnimationClip[] clips) { var modelImporter = assetImporter as ModelImporter; var globalScale = modelImporter.globalScale;

description.TryGetProperty("LightType", out int lightType);

switch (lightType) { case 0: light.type = LightType.Point; break; case 1: light.type = LightType.Directional; break; case 2: light.type = LightType.Spot; break; case 3: light.type = LightType.Rectangle; break; }

description.TryGetProperty("Intensity", out float intensity); description.TryGetProperty("Color", out Vector4 color); description.TryGetProperty("CastShadows", out int castShadows); description.TryGetProperty("FarAttenuationEnd", out float farAttenuationEnd); description.TryGetProperty("OuterAngle", out float outerAngle);

light.intensity = intensity * 0.01f; light.color = color; light.shadows = castShadows == 1 ? LightShadows.Hard : LightShadows.None;

if (farAttenuationEnd > 0) light.range = farAttenuationEnd * globalScale;

if (outerAngle > 0) light.spotAngle = outerAngle; } }