Exemplo n.º 1
0
        public static bool SetupLightmap(Object lightmapAssetObj)
        {
            if (!(lightmapAssetObj is LightMapAsset))
            {
                return(false);
            }


            LightMapAsset lightmapAsset = (LightMapAsset)lightmapAssetObj;

            if (lightmapAsset.lightmapFar == null || lightmapAsset.lightmapNear == null || lightmapAsset.lightmapFar.Length != lightmapAsset.lightmapNear.Length)
            {
                return(false);
            }

            int count = lightmapAsset.lightmapFar.Length;

            LightmapData[] lightmapDatas = new LightmapData[count];
            for (int i = 0; i < count; ++i)
            {
                LightmapData Lightmap = new LightmapData();
                Lightmap.lightmapFar  = lightmapAsset.lightmapFar[i];
                Lightmap.lightmapNear = lightmapAsset.lightmapNear[i];
                lightmapDatas[i]      = Lightmap;
            }
            LightmapSettings.lightmaps = lightmapDatas;
            return(true);
        }
Exemplo n.º 2
0
            private bool GetBuildLightmapParams(AssetBundleData assetBundleData, string filePath, List <Object> assetObjectList, List <string> assetObjectNameList, List <string> savePathList, string lightmapScene)
            {
                if (string.IsNullOrEmpty(lightmapScene))
                {
                    return(true);
                }

                string currentScene = EditorApplication.currentScene;

                if (!AssetDatabase.OpenAsset(AssetDatabase.LoadMainAssetAtPath(URL.assets + "/" + lightmapScene)))
                {
                    Debug.LogError("Cannot open the scene:" + filePath);
                    return(false);
                }

                if (LightmapSettings.lightmaps == null || LightmapSettings.lightmaps.Length == 0)
                {
                    Debug.LogWarning("There is no lightmap data in the scene:" + filePath);
                    return(true);
                }

                LightMapAsset lightmapAsset = ScriptableObject.CreateInstance <LightMapAsset>();
                int           count         = LightmapSettings.lightmaps.Length;

                lightmapAsset.lightmapFar  = new Texture2D[count];
                lightmapAsset.lightmapNear = new Texture2D[count];
                for (int i = 0; i < count; ++i)
                {
                    lightmapAsset.lightmapFar[i]  = LightmapSettings.lightmaps[i].lightmapFar;
                    lightmapAsset.lightmapNear[i] = LightmapSettings.lightmaps[i].lightmapNear;
                }
                string assetPath = URL.assets + "/" + filePath + ".lightmap.asset";

                assetBundleData.garbageAssetList.Add(assetPath);
                AssetDatabase.CreateAsset(lightmapAsset, assetPath);
                assetObjectList.Add(AssetDatabase.LoadAssetAtPath(assetPath, typeof(LightMapAsset)));
                assetObjectNameList.Add(filePath + ".lightmap");
                savePathList.Add(filePath + ".lightmap.unity3d");

                if (string.IsNullOrEmpty(currentScene))
                {
                    EditorApplication.NewScene();
                }
                else
                {
                    AssetDatabase.OpenAsset(AssetDatabase.LoadMainAssetAtPath(currentScene));
                }

                return(true);
            }