public static void GenerateSceneBuildSettingJson() { var setting = new SceneBuildSetting(); var scenes = EditorBuildSettings.scenes; for (int i = 0; i < scenes.Length; i++) { var sceneName = Path.GetFileNameWithoutExtension(scenes[i].path); Debug.Log(sceneName); setting.sceneNames.Add(sceneName); } using (var fs = new FileStream($"{GetProjectParentPath()}/{SceneBuildSettingJsonName}", FileMode.Create)) { using (var sw = new StreamWriter(fs)) { var jsonText = JsonUtility.ToJson(setting); sw.Write(jsonText); } } AssetDatabase.Refresh(); }
private static string[] GetCorrectScene(SceneBuildSetting buildSetting) { var allSceneNames = new List <string>(); //guidが返ってくる var assets = AssetDatabase.FindAssets("t:Scene"); for (int i = 0; i < buildSetting.sceneNames.Count; i++) { for (int k = 0; k < assets.Length; k++) { //guidからAssets以下のパスを取得する string path = AssetDatabase.GUIDToAssetPath(assets[k]); //シーン名のみを取得する string sceneName = Path.GetFileNameWithoutExtension(path); if (buildSetting.sceneNames[i] == sceneName) { allSceneNames.Add(path); } } } return(allSceneNames.ToArray()); }
public static void Build() { var output = ""; var platform = BuildTarget.StandaloneWindows64; var sceneSetting = new SceneBuildSetting(); bool isDevelopment = false; var args = System.Environment.GetCommandLineArgs(); for (int i = 0; i < args.Length; i++) { switch (args[i]) { case "-outputPath": output = args[i + 1]; break; case "-platform": platform = (BuildTarget)Enum.Parse(typeof(BuildTarget), args[i + 1]); break; case "-sceneSet": sceneSetting = GetSceneBuildSetting(args[i + 1]); break; case "-development": isDevelopment = true; //Developmentビルドにする break; default: break; } } var option = new BuildPlayerOptions(); option.locationPathName = output; Debug.Log($"Output path = {output}"); if (isDevelopment) { //optionsはビットフラグなので、|で追加していくことができる option.options = BuildOptions.Development | BuildOptions.AllowDebugging; } option.target = platform; //sceneSetting.jsonが引数に入ってなかったらProjectRootの親から持ってくる if (sceneSetting.sceneNames.Count == 0) { sceneSetting = GetSceneBuildSetting( $"{ShellScriptGeneratorConstants.GetProjectParentPath()}/{ShellScriptGeneratorConstants.SceneBuildSettingJsonName}"); } var scenes = GetCorrectScene(sceneSetting); //AddScenesToBuildSetting(scenes); option.scenes = scenes; Debug.Log("/////////////////////////"); for (int i = 0; i < scenes.Length; i++) { Debug.Log(scenes[i]); } Debug.Log("/////////////////////////"); var result = BuildPipeline.BuildPlayer(option); if (result.summary.result == UnityEditor.Build.Reporting.BuildResult.Succeeded) { Debug.Log("BUILD SUCCESS"); } else { Debug.LogError($"BUILD FAILED {result.summary}"); } }