반응형
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- tcp네트워크
- 아이패드
- tcp
- 어플
- End of Darkness
- 집 정리
- 비행기 모드
- 소캣(Socket)
- unity
- 자바
- 안드로이드
- TCP 네트워크 방식의 연결
- 나지보
- 변경된 정보
- 리눅스
- 벨팡
- php 홈디렉토리 변경방법
- Collection Framework
- 명령어
- 나지보 특성
- 스랄 특성
- 아이폰
- game
- 포트(Port)
- 에셋
- 히오스
- 게임
- 안드로이드 Application Lifecycle
- 기업의 행포
- 컬렉션 프레임
Archives
- Today
- Total
Do Something IT
[Unity Custom MenuItem] 계층뷰 상의 여러개 프리펩 오브젝트들을 한번에 Apply 하기 본문
반응형
계층뷰 상의 여러개의 프리펩 오브젝트들을 한번 Apply 하는 것을 제작 하였습니다.
사용방법은 아래와 같습니다.
1. 계층 뷰에서 갱신할 프리펩 오브젝트들을 선택합니다.
2. 마우스 오른쪽을 클릭하여 CustomMenu > Apply Prefabs를 클릭하면 여러개의 프리펩
오브젝트들이 원클릭에 갱신이 실행됩니다.
잘못 선택된 프리펩이아닌 오브젝트는 무시하고
부모가 아닌 프리펩의 차일들을 선택 되었을때 부모를 찾아 중복 체크를 하여 하나만 갱신됩니다.
PS. 보너스로 JGUI도 마우스 오른쪽 클릭 메뉴 아이템으로 옮겨 두었습니다.
using UnityEngine; using UnityEditor; using System.Collections; using System.Collections.Generic; public class csPrefabApplyer { [MenuItem("GameObject/CustomMenu/Apply Prefabs", false, 0)] static void Init(MenuCommand menuCommand) { if (Selection.objects.Length > 0) { if (menuCommand.context == Selection.objects[0]) { GameObject[] prefabs = Selection.gameObjects; Dictionary_prefabDicList = new Dictionary (); for (int i = 0; i < prefabs.Length; i++) { // 프리펩이 아닌 오브젝트는 무시 if (PrefabUtility.GetPrefabParent(prefabs[i]) != null) { // 최상위 부모가 아닐때 최상위 부모를 검색하여 추가 GameObject root = PrefabUtility.FindRootGameObjectWithSameParentPrefab(prefabs[i]); if (!_prefabDicList.ContainsKey(root.name)) { _prefabDicList.Add(root.name, root); } } else if (PrefabUtility.GetPrefabParent(prefabs[i]) == null && PrefabUtility.GetPrefabObject(prefabs[i]) != null) { // 최상위 부모일때 추가 GameObject target = PrefabUtility.GetPrefabObject(prefabs[i]) as GameObject; if (!_prefabDicList.ContainsKey(target.name)) { _prefabDicList.Add(target.name, target); } } } // 갱신 foreach (KeyValuePair prefab in _prefabDicList) { PrefabUtility.ReplacePrefab(prefab.Value, PrefabUtility.GetPrefabParent(prefab.Value), ReplacePrefabOptions.ConnectToPrefab); } return; } } } }
반응형
'Unity3D > Editor' 카테고리의 다른 글
[unity] 코드상 프리펩 링크 완전히 끊기 (0) | 2016.11.18 |
---|---|
[Unity] menuItem 여러번 실행 막기 (0) | 2016.10.31 |
[Unity] Apply Prefab Editor (0) | 2016.10.31 |
[Unity extension Editor menu] 유니티 에디터 확장 메뉴 만들기 (0) | 2016.10.28 |
Comments