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
- Type: Method
- Namespace: UnityEditor
OnPreprocessLightDescription()
public void OnPreprocessLightDescription(LightDescription lightDescription, Light light, AnimationClip[] animationClip)
Parameters
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{ 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; }}