AssetPostprocessor.OnPreprocessLightDescription(LightDescription,Light, AnimationClip[])
Параметры
| Параметр | Описание |
|---|---|
| описание | LightDescription, который описывает импортированные свойства камеры и анимации. |
| светлый | Свет, генерируемый импортером модели. |
| анимации | Клипы анимации, созданные импортером моделей. |
Описание
Добавьте эту функцию в подкласс, чтобы получать уведомление при импорте света из Импортера Модель.
Unity вызывает эту функцию только тогда, когда ModelImporter.ImportLights является истинным. Эта функция позволяет вам управлять свойствами света и анимацией во время процесса импорта модели. Структура LightDescription содержит все данные света из импортированного файла. Вы можете использовать ее для заполнения света, его GameObject и анимационных клипов.
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; } }