質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

998閲覧

Edit-Selectionで設定し、Unityを閉じたあと再度プロジェクトを起動した後でも設定が残る方法がわからない

kudo201810

総合スコア30

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/02/07 23:48

バージョン:Unity 2019.2.11f1 (64-bit)

以下に記載の機能

UnityのEditor操作で使うと便利な事

特定のゲームオブジェクトの選択状態を記録しておく機能で
オブジェクトを選択した状態で
Unityメニュー→Edit→SelectionのSave Selection 番号で、
ショートカットキーではCtrl+Alt+番号、で登録が出来て
そのあと、Ctrl+Shift+番号のショートカットキーを押す

この機能ですが、

Unityを閉じた後、再度、そのプロジェクトを開くと
設定が無くなってしまいます。

プロジェクトを再度起動した後でもこの設定を残す方法はありますでしょうか?

毎回、再設定するのが、かなり、めんどくさいため、
ぜひとも、よろしくお願いいたします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

この機能は使ったことがありませんが、確かに一度閉じるとクリアされるようです。
スプリクトでエディタ拡張などを行い、代替機能を用意する方法があります。
即席ですが、一例として以下のスクリプトをEditorフォルダに配置すれば、仰せられた機能が実現できないでしょうか。
上記の意味が理解できない場合は分かる方に依頼した方が良いでしょう。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEditor; 5using System.Reflection; 6 7/// <summary> 8/// 選択状態の読み書きを行う(EditorPrefs拡張) 9/// </summary> 10public class SelectionSaver : Editor 11{ 12 // とりあえず3つだけ 13 // 既存のショートカットと競合するので手動で削除するか別のキーにすること 14 [MenuItem("Edit/SelectionSaver/Load Selection 1 %#1")] static void Load1() { SelectionSaverInstance.Instance.Load(0); } 15 [MenuItem("Edit/SelectionSaver/Load Selection 2 %#2")] static void Load2() { SelectionSaverInstance.Instance.Load(1); } 16 [MenuItem("Edit/SelectionSaver/Load Selection 3 %#3")] static void Load3() { SelectionSaverInstance.Instance.Load(2); } 17 18 [MenuItem("Edit/SelectionSaver/Save Selection 1 %&1")] static void Save1() { SelectionSaverInstance.Instance.Save(0); } 19 [MenuItem("Edit/SelectionSaver/Save Selection 2 %&2")] static void Save2() { SelectionSaverInstance.Instance.Save(1); } 20 [MenuItem("Edit/SelectionSaver/Save Selection 3 %&3")] static void Save3() { SelectionSaverInstance.Instance.Save(2); } 21} 22 23/// <summary> 24/// 機能本体 25/// </summary> 26public class SelectionSaverInstance 27{ 28 static SelectionSaverInstance instance; 29 30 long[] ids = new long[3]; 31 PropertyInfo inspectorModeInfo; 32 33 public static SelectionSaverInstance Instance 34 { 35 get 36 { 37 if (instance == null) 38 { 39 instance = new SelectionSaverInstance(); 40 } 41 42 return instance; 43 } 44 } 45 46 /// <summary> 47 /// 初期化とEditorPrefsからの読み込みを行う 48 /// </summary> 49 public SelectionSaverInstance() 50 { 51 inspectorModeInfo = typeof(SerializedObject).GetProperty("inspectorMode", BindingFlags.NonPublic | BindingFlags.Instance); 52 53 for (int i = 0; i < ids.Length; i++) 54 { 55 ids[i] = long.Parse(EditorPrefs.GetString("Selection" + i, "0")); 56 } 57 } 58 59 /// <summary> 60 /// id変換 61 /// </summary> 62 /// <param name="_object"></param> 63 /// <returns></returns> 64 public long GetObjectLocalIdInFile(Object _object) 65 { 66 long idInFile = 0; 67 SerializedObject serialize = new SerializedObject(_object); 68 inspectorModeInfo.SetValue(serialize, InspectorMode.Debug, null); 69 SerializedProperty localIdProp = serialize.FindProperty("m_LocalIdentfierInFile"); 70 idInFile = localIdProp.longValue; 71 return idInFile; 72 } 73 74 /// <summary> 75 /// リストとEditorPrefsに保存する 76 /// </summary> 77 /// <param name="key"></param> 78 public void Save(int key) 79 { 80 if (Selection.activeObject != null) 81 { 82 ids[key] = GetObjectLocalIdInFile(Selection.activeObject); 83 EditorPrefs.SetString("Selection" + key, ids[key].ToString()); 84 } 85 } 86 87 /// <summary> 88 /// リストから呼び出す 89 /// </summary> 90 /// <param name="key"></param> 91 public void Load(int key) 92 { 93 long id = ids[key]; 94 foreach (GameObject obj in Object.FindObjectsOfType(typeof(GameObject))) 95 { 96 if (GetObjectLocalIdInFile(obj) == id) 97 { 98 Selection.activeObject = obj; 99 break; 100 } 101 } 102 } 103}

投稿2020/02/11 03:10

cider0318

総合スコア135

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kudo201810

2020/02/11 04:00

エディタ拡張を作っていただけるとは、素晴らしいです。 コマンドが重複しているためか、選択画面が1度出るものの、 動きました。ありがとうございました。使わせていただきます。 実は、この質問、回答がなかったためエディタ拡張を勉強していたところでしたが わからず、断念しておりました。本当にありがとうございました。 この機能、Unityで設定を保存してほしいのですが、今のバージョンでは なぜか設定が残らないので本当もったいない機能だなと思いました。
cider0318

2020/02/11 04:39

お役に立てて何よりです。 今回は質問どおりに回答した次第ですが、慣れていくうちに「ドラッグ&ドロップでもっと簡単に登録したい」「今何が登録されているか知りたい」などの欲求が生まれるかと思いますので、続きをご自身で実装してみるのも良いかと思います。 このあたりの好みは人それぞれですので、Unityからすると「拡張できるので好きにしてください」ということになります。 余談ですが、EditorPrefsで読み書きするキーを"Selection {番号}"としていますが、このままだとすべてのプロジェクト共通になってしまうので、プロジェクト固有の文字列を加えた方が良いかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問