static void ToPrefab() { //确保选择一个Hierarchy视图下的游戏对象 if (Selection.activeTransform) { Renderer renderer = Selection.activeTransform.GetComponent <Renderer>(); //确保有renderer组件 if (renderer) { PrefabLightmap prefabLightmap = Selection.activeTransform.GetComponent <PrefabLightmap>(); if (!prefabLightmap) { prefabLightmap = Selection.activeTransform.gameObject.AddComponent <PrefabLightmap>(); } prefabLightmap.lightmapIndex = renderer.lightmapIndex; prefabLightmap.lightmapScaleOffset = renderer.lightmapScaleOffset; Object prefab = PrefabUtility.GetPrefabParent(renderer.gameObject); //获取这个物体在project中的源prefab //如果有Prefab文件就更新,没有就创建新的 if (prefab) { PrefabUtility.ReplacePrefab(Selection.activeTransform.gameObject, prefab, ReplacePrefabOptions.ConnectToPrefab); } else { PrefabUtility.CreatePrefab(string.Format("Assets/Resources/{0}.prefab", Selection.activeTransform.name), Selection.activeTransform.gameObject, ReplacePrefabOptions.ConnectToPrefab); } } } }
public static void UpdateLightmap(int sceneId) { string text = null; Scene scene = DataReader <Scene> .Get(sceneId); if (scene == null) { return; } if (!string.IsNullOrEmpty(scene.lightmap)) { text = scene.lightmap; } else { string[] array = scene.path.Split(new char[] { '/' }); if (array.Length > 0) { text = array[array.Length - 1]; } } if (string.IsNullOrEmpty(text)) { return; } string pathOfPrefab = FileSystem.GetPathOfPrefab(text); if (string.IsNullOrEmpty(pathOfPrefab)) { return; } GameObject gameObject = AssetManager.AssetOfNoPool.LoadAssetNowNoAB(pathOfPrefab, typeof(Object)) as GameObject; if (gameObject != null) { PrefabLightmap component = gameObject.GetComponent <PrefabLightmap>(); if (component == null) { return; } LightmapData[] array2 = new LightmapData[component.lightmap_far.get_Count()]; for (int i = 0; i < array2.Length; i++) { array2[i] = new LightmapData(); array2[i].set_lightmapFar(component.lightmap_far.get_Item(i)); } LightmapSettings.set_lightmaps(array2); LightmapSettings.set_lightmapsMode(0); } }