将此函数添加到子类中,以便在立方体贴图纹理完成导入之前获得通知。
请注意,您应该避免以这种方式修改 TextureImporter 设置,因为它对当前正在导入的纹理没有任何影响,而是在下次导入纹理时应用。此行为是不确定的,因此不可取。
using UnityEditor; using UnityEngine; using System.Collections;
// Postprocesses all cubemaps that are placed in a folder // Here we just halve the texels values public class ProcessCubemap : AssetPostprocessor { void OnPostprocessCubemap(Cubemap texture) { string lowerCaseAssetPath = assetPath.ToLower(); if (lowerCaseAssetPath.IndexOf("/postprocessedcubemaps/") == -1) return;
for (int m = 0; m < texture.mipmapCount; m++) { for (int face = 0; face < 6; face++) { CubemapFace f = (CubemapFace)face; Color[] c = texture.GetPixels(f, m);
for (int i = 0; i < c.Length; i++) { c[i].r = c[i].r * 0.5f; c[i].g = c[i].g * 0.5f; c[i].b = c[i].b * 0.5f; }
texture.SetPixels(c, f, m); } // Instead of setting pixels for each mipmap level, you can also // modify only the pixels in the highest mip level. And then simply use // texture.Apply(true); to generate lower mip levels. } } }