Unity中动态载入Lightmapping

用Lightmapping的好处就不用多说了(渲染速度快又出效果), 下面是解决方案

一. 首先, 美术将A.Prefab放到场景中打光, 渲出Lightmapping, 假设生成的的是A_Lightmapping.exr

二.然后, 在运行时载入此A.Prefab, 这时是没有Lightmapping的, A模型是花的


三. 载入对应的Lightmapping并且添加进来

[csharp] view plain copy
  1. static public void AddLightmappingTex(string lightmappingFile, int lightmappingIndex)  
  2. {  
  3.     LightmapData[] lightmapArray = LightmapSettings.lightmaps;  
  4.     lightmapArray [lightmappingIndex].lightmapFar = Resources.Load(path) as Texture2D;        
  5.     LightmapSettings.lightmaps = lightmapArray;  
  6. }  


四.修改A.Prefab对象的lightmapIndex
[csharp] view plain copy
  1. static public void SetLightmappingIndex(GameObject obj, int lightmappingIndex)  
  2. {  
  3.     if (obj.renderer != null && obj.renderer.lightmapIndex != -1)  
  4.     {  
  5.         obj.renderer.lightmapIndex = lightmappingIndex;  
  6.     }  
  7.   
  8.     int count = obj.transform.childCount;  
  9.     for (int i=0; i<count; ++i)  
  10.     {  
  11.         SetLightmappingIndex(obj.transform.GetChild(i).gameObject, lightmappingIndex);  
  12.     }  


阅读更多
文章标签:
个人分类: unity3d
上一篇unity 解析excel
下一篇关于unity ui资源优化
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭