편집기 확장을 중지하고 편집기를 재생해 보십시오
입문
나는 어떤 프로젝트에서 엔지니어로 일하는 사람이다.
이 프로젝트의 기획자로부터 무대 제작을 순조롭게 진행해 달라는 요구를 받았다
3D 공간 메쉬를 따라 객체를 배치하고 계속 개선하는 도구를 만듭니다.
기획사를 사용하지만 프로젝트 멤버는 누구나 무대를 만들 수 있다.
・배정받을 때는 멤버가 적고 일정도 정해지지 않았다.
• 수많은 무대가 한 장면 한 장면 만들어졌다.
・유니티를 처리할 수 있는 사람은 드물다.
이런 가운데 멤버가 늘어나기 전에 무대를 만드는 기법을 확립하는 것이 시작이라고 덧붙였다.
이 기사는 제작 과정에서 생각난 것과 배운 것을 소개했다.
Unity 2019.1.9f1
만든 물건
Tiled Map Editor 등의 표현법을 참조하면서 Z축을 추가하여 메쉬를 3면으로 만드는 자체 제작 도구입니다.
XYZ 면을 각 축에서 이동하여 3D 공간의 위치와 범위를 지정할 수 있습니다.
면과 선은 Gizmo로 표현한다.
(나는 유사물이 이미 많이 존재한다고 생각한다)
아이콘과 무늬가 들어가지 않도록 화면에서 디스플레이를 삭제했습니다.
설정물 목록, 파일 읽기와 쓰기, 승패 조건 설정 등 기능이 화면 끝에 배열되어 있다.
상공을 포위하여 Y면의 높이를 변경합니다.
기능 추가, 편집기 확장
Unity에 자체 제작 기능을 추가하면 편집기를 확장합니다.
자신도 활용할 점이 많다.
특히 비엔지니어에게 미세 조정 부품을 제공할 때
값의 설정, 미세 조정이라면 편집기 확장에 아무런 문제가 없습니다
"무대를 자유롭게 만들고 직접 테스트를 해보고 싶다!!!"규모는...?
대량의 디스플레이와 조작...
처음에는 아무런 의문도 없이 편집기로 확장해서 만들었다.
1. 다른 창을 열거나 SceneView에서 버튼을 엽니다.
2. 마우스 왼쪽 버튼을 객체 선택에서 메쉬의 범위 지정으로 변경합니다.오른쪽 단추를 누르면 바로 카메라 조작을 할 수 있다.
3. 키보드는 XYZ 축의 선택, 구성, 삭제와 같은 처리 전환에 사용됩니다.
4. Undoredo도 필요할 것 같으니 키보드를 사용하세요.(원래 준비는 됐는데 이렇게 자기 작품에 소용이 없어서...)
5. 화면 표시를 누릅니다.디스플레이에 설정 수를 반영합니다.(화면 업데이트 타이밍이 복잡해...)
6. 각 View 및 Inspector의 입력도 유효합니다.
생각하는 곳이 갈수록 많아지다.
Unity에 여러 개의 단축키가 미리 설정되어 있기 때문에 버튼 조작이 취소됩니다.
그리고 다른 OS의 단축키도 있기 때문에 그것과 함께 놀지 않았다.
소홀히 하면 관련 기능이 폭발한다.
가장 중요한 것은 모든 프레임의 처리가 어렵다는 인상을 준다.
편집기의 디스플레이 업데이트 시간은 이해하기 어렵다.입력은 언제 받습니까?
재생할 때랑 왜 이렇게 다른지...?
솔직히 게임 자체가 더 쉬워요... 이게 뭐예요?
재생할 때 하면 자유예요.
입력, 업데이트 등 모두 이곳에서 제어할 수 있습니다!
게임 내 공연을 진행하는 것과 같은 처리 표시물은 이동할 수 있습니다!
그래서 전체 도구를 다시 만들기로 결심하고 재생 버튼을 누르면 게임 동작의 도구로 바뀌어 문제점이 모두 해결됐다.
새로운 요구가 있어도 유니티의 동작과 충돌하지 않습니다.
모두 SceneView의 확장으로 방법을 강구하고 싶은데 너무 많이 갇혀 있는 것 같아요.
동적 전환 게임 탭 설정
편집기에서 재생할 때 스테이지 편집을 가져오기 때문에 재생 과정에서 게임 탭의 Gizmos와 해상도를 동적으로 변경해야 합니다.매번 수동으로 전환하는 것은 매우 번거롭다.
· 단계 편집에는 Gizmos의 XYZ 면이 필요합니다.(Game 태그의 Gizmos는 평소에 자주 꺼짐)
· 스테이지 편집은 가능한 한 크고 PC의 모니터에서 진행되기 때문에 가로 길이의 사이즈(1920x1080)가 이상적이다.
・테스트 게임은 스마트폰 단말기 사이즈에 따라 진행해야 한다.
게임 태그는 GameView 클래스이지만 비공개 클래스라서 접근할 수 없기 때문에 C#의 반사로 대응합니다.
GameView 클래스 살펴보기
Type 유형에서 GameView 인스턴스와 MethodInfo PropertyInfo를 가져옵니다.
GetMethods()와 GetProperties()로 조사하면'SetShow Gizmos','selected Size Index'가 그렇다.var type_GameView = Assembly.Load ("UnityEditor.dll").GetType ("UnityEditor.GameView");
var instance = EditorWindow.GetWindow (type_GameView);
// type_GameView.GetMethods(BindingFlags.Public | BindingFlags.Instance);
// type_GameView.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance);
var gizmosInfo = type_GameView.GetMethod ("SetShowGizmos", BindingFlags.Public | BindingFlags.Instance);
var sizeIndexInfo = type_GameView.GetProperty ("selectedSizeIndex", BindingFlags.NonPublic | BindingFlags.Instance);
게임 탭 설정 변경
SetShow Gizmos는 bool형이기 때문에 두 가지 선택밖에 없습니다.
selectedSizeIndex는 게임 탭의 해상도 드롭다운 목록에서 시작하는 순서인 것 같습니다.
이↑ 이미지의 경우 현재 값은 4입니다.
위에서 얻은 정보에서 호출 처리를 사용하면 게임 옵션 카드의 설정을 바꿀 수 있습니다.// ステージ編集中は true テストプレイ中は false
gizmosInfo.Invoke(instance, new object[] { true } );
// ステージ編集中は 4
// iPhoneXとしてテストプレイするなら 5 か 6
sizeIndexInfo.SetValue(instance, 4, null);
총결산
편집기 확장에서 업데이트를 입력하고 표시하는 제어를 잘 모르겠습니다.
전체 도구를 게임으로 처리하고 제어하기 쉬운 편집 재생성에서 이동하세요
사용자에 대한 설명은 쉽고 요구도 쉽게 받아들일 수 있다
일반적인 게임에서 의식하지 못했던 Unity Editor의 내부도 조작하고 싶은데...
반작용을 이용하면 어느 정도 받아들일 수 있다
더 편리했어
도구 사용자는 게임적인 조작으로 처리할 수 있기 때문에 나는 이것이 의미 있는 생각이라고 생각한다.
특히 반사 지식을 얻었다.
가장 중요한 것은 시간이 넉넉해서 만든 것이다.정말 감사합니다.
Reference
이 문제에 관하여(편집기 확장을 중지하고 편집기를 재생해 보십시오), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/udonLove/items/4b55ad5d144a6b1edc46
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Tiled Map Editor 등의 표현법을 참조하면서 Z축을 추가하여 메쉬를 3면으로 만드는 자체 제작 도구입니다.
XYZ 면을 각 축에서 이동하여 3D 공간의 위치와 범위를 지정할 수 있습니다.
면과 선은 Gizmo로 표현한다.
(나는 유사물이 이미 많이 존재한다고 생각한다)
아이콘과 무늬가 들어가지 않도록 화면에서 디스플레이를 삭제했습니다.
설정물 목록, 파일 읽기와 쓰기, 승패 조건 설정 등 기능이 화면 끝에 배열되어 있다.
상공을 포위하여 Y면의 높이를 변경합니다.
기능 추가, 편집기 확장
Unity에 자체 제작 기능을 추가하면 편집기를 확장합니다.
자신도 활용할 점이 많다.
특히 비엔지니어에게 미세 조정 부품을 제공할 때
값의 설정, 미세 조정이라면 편집기 확장에 아무런 문제가 없습니다
"무대를 자유롭게 만들고 직접 테스트를 해보고 싶다!!!"규모는...?
대량의 디스플레이와 조작...
처음에는 아무런 의문도 없이 편집기로 확장해서 만들었다.
1. 다른 창을 열거나 SceneView에서 버튼을 엽니다.
2. 마우스 왼쪽 버튼을 객체 선택에서 메쉬의 범위 지정으로 변경합니다.오른쪽 단추를 누르면 바로 카메라 조작을 할 수 있다.
3. 키보드는 XYZ 축의 선택, 구성, 삭제와 같은 처리 전환에 사용됩니다.
4. Undoredo도 필요할 것 같으니 키보드를 사용하세요.(원래 준비는 됐는데 이렇게 자기 작품에 소용이 없어서...)
5. 화면 표시를 누릅니다.디스플레이에 설정 수를 반영합니다.(화면 업데이트 타이밍이 복잡해...)
6. 각 View 및 Inspector의 입력도 유효합니다.
생각하는 곳이 갈수록 많아지다.
Unity에 여러 개의 단축키가 미리 설정되어 있기 때문에 버튼 조작이 취소됩니다.
그리고 다른 OS의 단축키도 있기 때문에 그것과 함께 놀지 않았다.
소홀히 하면 관련 기능이 폭발한다.
가장 중요한 것은 모든 프레임의 처리가 어렵다는 인상을 준다.
편집기의 디스플레이 업데이트 시간은 이해하기 어렵다.입력은 언제 받습니까?
재생할 때랑 왜 이렇게 다른지...?
솔직히 게임 자체가 더 쉬워요... 이게 뭐예요?
재생할 때 하면 자유예요.
입력, 업데이트 등 모두 이곳에서 제어할 수 있습니다!
게임 내 공연을 진행하는 것과 같은 처리 표시물은 이동할 수 있습니다!
그래서 전체 도구를 다시 만들기로 결심하고 재생 버튼을 누르면 게임 동작의 도구로 바뀌어 문제점이 모두 해결됐다.
새로운 요구가 있어도 유니티의 동작과 충돌하지 않습니다.
모두 SceneView의 확장으로 방법을 강구하고 싶은데 너무 많이 갇혀 있는 것 같아요.
동적 전환 게임 탭 설정
편집기에서 재생할 때 스테이지 편집을 가져오기 때문에 재생 과정에서 게임 탭의 Gizmos와 해상도를 동적으로 변경해야 합니다.매번 수동으로 전환하는 것은 매우 번거롭다.
· 단계 편집에는 Gizmos의 XYZ 면이 필요합니다.(Game 태그의 Gizmos는 평소에 자주 꺼짐)
· 스테이지 편집은 가능한 한 크고 PC의 모니터에서 진행되기 때문에 가로 길이의 사이즈(1920x1080)가 이상적이다.
・테스트 게임은 스마트폰 단말기 사이즈에 따라 진행해야 한다.
게임 태그는 GameView 클래스이지만 비공개 클래스라서 접근할 수 없기 때문에 C#의 반사로 대응합니다.
GameView 클래스 살펴보기
Type 유형에서 GameView 인스턴스와 MethodInfo PropertyInfo를 가져옵니다.
GetMethods()와 GetProperties()로 조사하면'SetShow Gizmos','selected Size Index'가 그렇다.
var type_GameView = Assembly.Load ("UnityEditor.dll").GetType ("UnityEditor.GameView");
var instance = EditorWindow.GetWindow (type_GameView);
// type_GameView.GetMethods(BindingFlags.Public | BindingFlags.Instance);
// type_GameView.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance);
var gizmosInfo = type_GameView.GetMethod ("SetShowGizmos", BindingFlags.Public | BindingFlags.Instance);
var sizeIndexInfo = type_GameView.GetProperty ("selectedSizeIndex", BindingFlags.NonPublic | BindingFlags.Instance);
게임 탭 설정 변경
SetShow Gizmos는 bool형이기 때문에 두 가지 선택밖에 없습니다.
selectedSizeIndex는 게임 탭의 해상도 드롭다운 목록에서 시작하는 순서인 것 같습니다.
이↑ 이미지의 경우 현재 값은 4입니다.
위에서 얻은 정보에서 호출 처리를 사용하면 게임 옵션 카드의 설정을 바꿀 수 있습니다.
// ステージ編集中は true テストプレイ中は false
gizmosInfo.Invoke(instance, new object[] { true } );
// ステージ編集中は 4
// iPhoneXとしてテストプレイするなら 5 か 6
sizeIndexInfo.SetValue(instance, 4, null);
총결산
편집기 확장에서 업데이트를 입력하고 표시하는 제어를 잘 모르겠습니다.
전체 도구를 게임으로 처리하고 제어하기 쉬운 편집 재생성에서 이동하세요
사용자에 대한 설명은 쉽고 요구도 쉽게 받아들일 수 있다
일반적인 게임에서 의식하지 못했던 Unity Editor의 내부도 조작하고 싶은데...
반작용을 이용하면 어느 정도 받아들일 수 있다
더 편리했어
도구 사용자는 게임적인 조작으로 처리할 수 있기 때문에 나는 이것이 의미 있는 생각이라고 생각한다.
특히 반사 지식을 얻었다.
가장 중요한 것은 시간이 넉넉해서 만든 것이다.정말 감사합니다.
Reference
이 문제에 관하여(편집기 확장을 중지하고 편집기를 재생해 보십시오), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/udonLove/items/4b55ad5d144a6b1edc46
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(편집기 확장을 중지하고 편집기를 재생해 보십시오), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/udonLove/items/4b55ad5d144a6b1edc46텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)