[Unity 확장] 등급 제도에서 선택한 대상을 정규 표현식으로 한꺼번에 이름을 바꾸는 도구를 만들어 봤습니다.
8682 단어 Unity 확장UnityEditorUnity
개시하다
등급 제도상의 대상을 수동으로 바꾸는 경우가 많다
"귀찮아!"
한 번은 "정규 표현식으로 이름을 바꿀 수 있다면 비교적 수월하지 않겠는가?"그런 생각이 들어서 빠르게 공구를 만들어 봤어요.
컨디션
Unity 5.5.0f3
Windows 10
제작에 관한 것
등급 제도에서 선택한 객체를 레지스트로 일괄적으로 이름을 바꾸는 편집 창을 만들어 보았습니다.
소스 코드
Unity 프로젝트에 Editor 폴더를 만들고 다음 스크립트를 Editor 폴더에 넣으십시오
HierarchyRegexRenamer.csnamespace HierarchyRegexRenamer
{
using UnityEngine;
using UnityEditor;
using System.Linq;
using System.Text.RegularExpressions;
public class HierarchyRegexRenamer : EditorWindow
{
[SerializeField] string pattern = ""; // Regexパターン
[SerializeField] string replacement = ""; // 置換文字列
// Hierarchy上で選択しているオブジェクトをリネームする
void DoRename()
{
var gameObjects = Selection.gameObjects.Where(go => !AssetDatabase.IsMainAsset(go)).ToArray(); // リネーム対象のGameObject
// Undoに登録
Undo.RecordObjects(gameObjects, "Regex Rename");
// 名前を変える
foreach (var go in gameObjects)
{
go.name = Regex.Replace(go.name, this.pattern, this.replacement);
}
}
// EditorWindowの描画処理
void OnGUI()
{
EditorGUILayout.LabelField("Hierarchy上で選択しているオブジェクトをリネームします");
GUILayout.Space(2f);
this.pattern = EditorGUILayout.TextField("Regex", this.pattern);
this.replacement = EditorGUILayout.TextField("Replacement", this.replacement);
EditorGUI.BeginDisabledGroup(Selection.gameObjects.Length == 0);
// ボタンを表示
if (GUILayout.Button("リネーム"))
{
this.DoRename();
}
EditorGUI.EndDisabledGroup();
}
// ウィンドウを開く
[MenuItem("EditorWindow/Hierarchy Regex Renamer")]
static void Open()
{
GetWindow<HierarchyRegexRenamer>();
}
}
}
도구 사용
화면 상단 메뉴의 Editor Window/Hierrarchy Regex Renamer를 선택하면 창이 열립니다.
그런 다음 원하는 Regex 및 대체 문자열을 입력하고 이름 바꾸기 버튼을 누릅니다.
Regex의 샘플
나는 내가 이 쓸 수 있다고 생각하는 레지스트 모드를 몇 개 올려 보았다.
1. 반각 공간과 전각 공간 삭제
Regex
= \s
Replacement
에 지정된 항목 없음
2. ()로 묶은 반각 숫자는 ()로 지운다
Regex
= \(\d+\)
Replacement
에 지정된 항목 없음
게임 Object(2)의 경우 (2)는 사라지고 게임Object로 바뀐다.
3. (반각 숫자)의 () 부분만 삭제
Regex
= \((\d+)\)
Replacement
= $1
게임 Object(HOGE)(2)의 경우 (2)의 ()가 사라지고 게임 Object(HOGE)2가 된다.
4. 전체 이름을 ()로 묶는다
Regex = ^.*
Replacement = ($0)
$0 을 사용하면 Regex 문자열과 일치하는 정규 표현식 기능을 사용할 수 있습니다.
앞으로의 과제
정규 표현식만 실현하기 어려운 기능도 있다.예를 들어 다음과 같은 기능
• 선택한 객체 정렬
특별한 문자를 준비할 수 있다면 이름을 바꿀 때 번호를 바꾸는 처리를 추가하면 될 것 같습니다.
Reference
이 문제에 관하여([Unity 확장] 등급 제도에서 선택한 대상을 정규 표현식으로 한꺼번에 이름을 바꾸는 도구를 만들어 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/73d8d3291d5758127156
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Unity 5.5.0f3
Windows 10
제작에 관한 것
등급 제도에서 선택한 객체를 레지스트로 일괄적으로 이름을 바꾸는 편집 창을 만들어 보았습니다.
소스 코드
Unity 프로젝트에 Editor 폴더를 만들고 다음 스크립트를 Editor 폴더에 넣으십시오
HierarchyRegexRenamer.csnamespace HierarchyRegexRenamer
{
using UnityEngine;
using UnityEditor;
using System.Linq;
using System.Text.RegularExpressions;
public class HierarchyRegexRenamer : EditorWindow
{
[SerializeField] string pattern = ""; // Regexパターン
[SerializeField] string replacement = ""; // 置換文字列
// Hierarchy上で選択しているオブジェクトをリネームする
void DoRename()
{
var gameObjects = Selection.gameObjects.Where(go => !AssetDatabase.IsMainAsset(go)).ToArray(); // リネーム対象のGameObject
// Undoに登録
Undo.RecordObjects(gameObjects, "Regex Rename");
// 名前を変える
foreach (var go in gameObjects)
{
go.name = Regex.Replace(go.name, this.pattern, this.replacement);
}
}
// EditorWindowの描画処理
void OnGUI()
{
EditorGUILayout.LabelField("Hierarchy上で選択しているオブジェクトをリネームします");
GUILayout.Space(2f);
this.pattern = EditorGUILayout.TextField("Regex", this.pattern);
this.replacement = EditorGUILayout.TextField("Replacement", this.replacement);
EditorGUI.BeginDisabledGroup(Selection.gameObjects.Length == 0);
// ボタンを表示
if (GUILayout.Button("リネーム"))
{
this.DoRename();
}
EditorGUI.EndDisabledGroup();
}
// ウィンドウを開く
[MenuItem("EditorWindow/Hierarchy Regex Renamer")]
static void Open()
{
GetWindow<HierarchyRegexRenamer>();
}
}
}
도구 사용
화면 상단 메뉴의 Editor Window/Hierrarchy Regex Renamer를 선택하면 창이 열립니다.
그런 다음 원하는 Regex 및 대체 문자열을 입력하고 이름 바꾸기 버튼을 누릅니다.
Regex의 샘플
나는 내가 이 쓸 수 있다고 생각하는 레지스트 모드를 몇 개 올려 보았다.
1. 반각 공간과 전각 공간 삭제
Regex
= \s
Replacement
에 지정된 항목 없음
2. ()로 묶은 반각 숫자는 ()로 지운다
Regex
= \(\d+\)
Replacement
에 지정된 항목 없음
게임 Object(2)의 경우 (2)는 사라지고 게임Object로 바뀐다.
3. (반각 숫자)의 () 부분만 삭제
Regex
= \((\d+)\)
Replacement
= $1
게임 Object(HOGE)(2)의 경우 (2)의 ()가 사라지고 게임 Object(HOGE)2가 된다.
4. 전체 이름을 ()로 묶는다
Regex = ^.*
Replacement = ($0)
$0 을 사용하면 Regex 문자열과 일치하는 정규 표현식 기능을 사용할 수 있습니다.
앞으로의 과제
정규 표현식만 실현하기 어려운 기능도 있다.예를 들어 다음과 같은 기능
• 선택한 객체 정렬
특별한 문자를 준비할 수 있다면 이름을 바꿀 때 번호를 바꾸는 처리를 추가하면 될 것 같습니다.
Reference
이 문제에 관하여([Unity 확장] 등급 제도에서 선택한 대상을 정규 표현식으로 한꺼번에 이름을 바꾸는 도구를 만들어 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/73d8d3291d5758127156
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Unity 프로젝트에 Editor 폴더를 만들고 다음 스크립트를 Editor 폴더에 넣으십시오
HierarchyRegexRenamer.cs
namespace HierarchyRegexRenamer
{
using UnityEngine;
using UnityEditor;
using System.Linq;
using System.Text.RegularExpressions;
public class HierarchyRegexRenamer : EditorWindow
{
[SerializeField] string pattern = ""; // Regexパターン
[SerializeField] string replacement = ""; // 置換文字列
// Hierarchy上で選択しているオブジェクトをリネームする
void DoRename()
{
var gameObjects = Selection.gameObjects.Where(go => !AssetDatabase.IsMainAsset(go)).ToArray(); // リネーム対象のGameObject
// Undoに登録
Undo.RecordObjects(gameObjects, "Regex Rename");
// 名前を変える
foreach (var go in gameObjects)
{
go.name = Regex.Replace(go.name, this.pattern, this.replacement);
}
}
// EditorWindowの描画処理
void OnGUI()
{
EditorGUILayout.LabelField("Hierarchy上で選択しているオブジェクトをリネームします");
GUILayout.Space(2f);
this.pattern = EditorGUILayout.TextField("Regex", this.pattern);
this.replacement = EditorGUILayout.TextField("Replacement", this.replacement);
EditorGUI.BeginDisabledGroup(Selection.gameObjects.Length == 0);
// ボタンを表示
if (GUILayout.Button("リネーム"))
{
this.DoRename();
}
EditorGUI.EndDisabledGroup();
}
// ウィンドウを開く
[MenuItem("EditorWindow/Hierarchy Regex Renamer")]
static void Open()
{
GetWindow<HierarchyRegexRenamer>();
}
}
}
도구 사용
화면 상단 메뉴의 Editor Window/Hierrarchy Regex Renamer를 선택하면 창이 열립니다.
그런 다음 원하는 Regex 및 대체 문자열을 입력하고 이름 바꾸기 버튼을 누릅니다.
Regex의 샘플
나는 내가 이 쓸 수 있다고 생각하는 레지스트 모드를 몇 개 올려 보았다.
1. 반각 공간과 전각 공간 삭제
Regex
= \s
Replacement
에 지정된 항목 없음
2. ()로 묶은 반각 숫자는 ()로 지운다
Regex
= \(\d+\)
Replacement
에 지정된 항목 없음
게임 Object(2)의 경우 (2)는 사라지고 게임Object로 바뀐다.
3. (반각 숫자)의 () 부분만 삭제
Regex
= \((\d+)\)
Replacement
= $1
게임 Object(HOGE)(2)의 경우 (2)의 ()가 사라지고 게임 Object(HOGE)2가 된다.
4. 전체 이름을 ()로 묶는다
Regex = ^.*
Replacement = ($0)
$0 을 사용하면 Regex 문자열과 일치하는 정규 표현식 기능을 사용할 수 있습니다.
앞으로의 과제
정규 표현식만 실현하기 어려운 기능도 있다.예를 들어 다음과 같은 기능
• 선택한 객체 정렬
특별한 문자를 준비할 수 있다면 이름을 바꿀 때 번호를 바꾸는 처리를 추가하면 될 것 같습니다.
Reference
이 문제에 관하여([Unity 확장] 등급 제도에서 선택한 대상을 정규 표현식으로 한꺼번에 이름을 바꾸는 도구를 만들어 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/73d8d3291d5758127156
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
나는 내가 이 쓸 수 있다고 생각하는 레지스트 모드를 몇 개 올려 보았다.
1. 반각 공간과 전각 공간 삭제
Regex
= \s
Replacement
에 지정된 항목 없음2. ()로 묶은 반각 숫자는 ()로 지운다
Regex
= \(\d+\)
Replacement
에 지정된 항목 없음게임 Object(2)의 경우 (2)는 사라지고 게임Object로 바뀐다.
3. (반각 숫자)의 () 부분만 삭제
Regex
= \((\d+)\)
Replacement
= $1
게임 Object(HOGE)(2)의 경우 (2)의 ()가 사라지고 게임 Object(HOGE)2가 된다.4. 전체 이름을 ()로 묶는다
Regex =
^.*
Replacement = ($0)
$0 을 사용하면 Regex 문자열과 일치하는 정규 표현식 기능을 사용할 수 있습니다.앞으로의 과제
정규 표현식만 실현하기 어려운 기능도 있다.예를 들어 다음과 같은 기능
• 선택한 객체 정렬
특별한 문자를 준비할 수 있다면 이름을 바꿀 때 번호를 바꾸는 처리를 추가하면 될 것 같습니다.
Reference
이 문제에 관하여([Unity 확장] 등급 제도에서 선택한 대상을 정규 표현식으로 한꺼번에 이름을 바꾸는 도구를 만들어 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/73d8d3291d5758127156
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Unity 확장] 등급 제도에서 선택한 대상을 정규 표현식으로 한꺼번에 이름을 바꾸는 도구를 만들어 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/r-ngtm/items/73d8d3291d5758127156텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)