サイレンスブログ

Unity初心者の備忘録をかねた自分のやってきたもの

【Unity】任意のシーンから再生を始める

シーン内で作業して動作確認を行いたいが、

初期化用シーンなどを経由しないと確認したいシーンまで進めないプロジェクト。

 

初期化シーンに切り替え

    ↓

再生(プレビュー)開始

    ↓

作業シーンに戻る

 

この繰り返しの作業を何度もやっているとシーンの切り替えが

面倒に感じてきます....そんな時に役立つエディタ拡張です!

 

このエディタ拡張を行うと、

再生シーンに切り替えを自動で行い、予め指定しておいたシーンから再生することが出来ます!
毎回手動でのシーン切り替えが面倒に感じた人にはかなり役に立つと思います!(実体験)

 

そして、Ctrキー + 任意のキーで実行できます。

EnterやBackSpacceなど、単一記号に対応してないものや他のショートカットキーとして優先されるもの以外のものは基本的に設定できました。

 

↓ 追記 を使ってください。

 

---------------- 以前のやつ --------------------------------------------------

 

using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;

public class StartSceneSetting : MonoBehaviour
{

    [MenuItem("Tools/PlayScene %0")]
    public static void PlayFromPrelaunchScene()
    {

           // プレイ中ならば停止する
        if (EditorApplication.isPlaying == true)
        {
            EditorApplication.isPlaying = false;
            return;
        }

        // 再生したいシーンの読み込み->再生

        
        EditorSceneManager.OpenScene("Assets/Scenes/開始したいシーン名.unity");


         if(EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())

        {

            EditorApplication.isPlaying = true;

        }
    }
}

[MenuItem("Tools/PlayScene %0")]の「%0」がショートカットキーになる場所です。

[MenuItem("Tools/PlayScene %@")]にするとCtr + @で実行されます!

 

Unityで好きなシーンからゲームを再生する - スマゲ

参考にさせていただいたところとほぼ同じなのでひっそりと自分用メモに....

何か記事を書いてみたかった。

3/29 追記

Unity5.6.4以降は%0がservice呼び出しに負けて使えないかも知れません。

 

---------------- 以前のやつ ココマデ -------------------------------------------

2019/2/5 追記

現在はこれで作業シーンまで戻れます。(unity 2018.2.1f で動作確認)

using UnityEngine;

using UnityEditor;

using UnityEditor.SceneManagement;


public class SettingStartSceneWindows : MonoBehaviour

{

    [MenuItem("Tools/PlayGame %@")] // ショートカットキーの指定

    public static void PlayFromPrelaunchScene()

    {       

        // プレイ中の場合は停止する       

        if (EditorApplication.isPlaying == true)       

        {           

            EditorApplication.isPlaying = false;           

            return; 

        }

 
        // 先頭のシーンパスを取得 

        string startScenePath = EditorBuildSettings.scenes[0].path; // ここを変更してね
        EditorSceneManager.playModeStartScene  =

            AssetDatabase.LoadAssetAtPath<SceneAsset>(startScenePath);
       

       // 再生開始

       if(EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())

        {

            EditorApplication.isPlaying = true;

        }

    }

}

Ctr + @ で再生します。参考までに!