Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


OnPreprocessLightDescription(LightDescription, Light, AnimationClip[])

Add this function to a subclass to recieve a notification when a light is imported from a Model Importer.
Read time 1 minuteLast updated 7 days ago

Definition

OnPreprocessLightDescription()

public void OnPreprocessLightDescription(LightDescription lightDescription, Light light, AnimationClip[] animationClip)

Parameters

lightDescription

LightDescription

light


animationClip

Remarks

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.

Examples

using System.Collections.Generic;using UnityEditor;using UnityEngine;using UnityEditor.AssetImporters;public class SetupLightFromCameraDescription : AssetPostprocessor{ // Increment the version number, when the AssetPostprocessors code/behavior is changed static readonly uint k_Version = 0; public override uint GetVersion() { return k_Version; } 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; }}