Last active
February 7, 2016 16:11
-
-
Save tsubaki/ee385a65c0f2ba166896 to your computer and use it in GitHub Desktop.
マルチシーン環境下でライトマップを焼く
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using System.Collections; | |
using UnityEditor.SceneManagement; | |
using UnityEditor; | |
using System.Linq; | |
[CreateAssetMenu()] | |
public class LightmapBaker : ScriptableObject { | |
[SerializeField] SceneAsset mainScene = null; | |
[SerializeField] SceneAsset[] scenes = new SceneAsset[0]; | |
public void Bake() | |
{ | |
if (EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo () == false) { | |
return; | |
} | |
string mainScenePath = AssetDatabase.GetAssetPath(mainScene); | |
string[] giScenes = scenes.Select (c => AssetDatabase.GetAssetPath (c)).ToArray(); | |
LoadScenes (mainScenePath, giScenes); | |
Lightmapping.Bake (); | |
} | |
static void LoadScenes (string mainScenePath, string[] giScenes) | |
{ | |
EditorSceneManager.OpenScene (mainScenePath, OpenSceneMode.Single); | |
foreach (var scene in giScenes) { | |
EditorSceneManager.OpenScene (scene, OpenSceneMode.Additive); | |
} | |
} | |
[CustomEditor(typeof(LightmapBaker))] | |
class LightmapBakerEditor : Editor | |
{ | |
public override void OnInspectorGUI () | |
{ | |
base.OnInspectorGUI (); | |
var targetInstance = target as LightmapBaker; | |
if (targetInstance.mainScene == null) { | |
EditorGUILayout.HelpBox ("メインのシーンを登録してください", MessageType.Error); | |
return; | |
} | |
if (targetInstance.scenes.Length == 0) { | |
EditorGUILayout.HelpBox ("結合するシーンを登録してください", MessageType.Info); | |
} | |
if( GUILayout.Button("Bake")){ | |
targetInstance.Bake (); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment