シーンのGI設定を自動化する方法です。
Unity2018.2.17
課題
LightingWindowのGIの設定は意識する機会が少ないものの、
うっかり間違えているとパフォーマンスに大きな影響を及ぼします。
間違いを防ぐために、Scene作成時に自動で設定を行うスクリプトを作りました。
下記の記事でもやり方が紹介されていますが、
本記事ではAssetPostProcessorを使って実装してみました。
ソースコード
それではソースコードです。
public class ScenePostProcessor : AssetPostprocessor { private void OnPreprocessAsset() { if (assetPath.EndsWith(".unity")) { var guid = AssetDatabase.AssetPathToGUID(assetPath); var asset = AssetDatabase.LoadAssetAtPath<Object>(assetPath); // Assetがまだ生成されていなかったら新規作成とみなす if (!string.IsNullOrEmpty(guid) && asset == null) { // ここで処理すると不具合が生じるのでディレイさせる EditorApplication.delayCall = () => { var previousPath = EditorSceneManager.GetActiveScene().path; // シーンを開く var scene = EditorSceneManager.OpenScene(assetPath, OpenSceneMode.Single); // GIの設定 Lightmapping.bakedGI = false; Lightmapping.realtimeGI = false; // シーンを保存 EditorSceneManager.MarkSceneDirty(scene); EditorSceneManager.SaveOpenScenes(); // 元のシーンを開く if (!string.IsNullOrEmpty(previousPath)) { EditorSceneManager.OpenScene(previousPath, OpenSceneMode.Single); } }; } } } }
説明はコメントを参照してください。
今回の実装ではScene作成時に自動的にGIがOFFになります。