강께르의 개발일지
[유니티] 에디터 코딩 관련 메소드 정리 본문
에디터 코딩과 관련 없지만 오클루전 컬링 관련 메소드
OnBecameVisible
해당 메소드를 가진 오브젝트가 카메라의 렌더 범위 내에 들어오기 시작하면 호출
OnBecameInvisible
해당 메소드를 가진 오브젝트가 카메라의 렌더 범위 바깥으로 나가기 시작하면 호출
OnWillRenderObject
해당 오브젝트가 보이는 경우에 각 카메라에서 호출
카메라마다 호출하기에 다른 카메라마다 다르게 렌더할 수 있게 분기할 수 있다.
팁! 메테리얼의 색깔이 바뀌는 것은 런타임 중에 메테리얼의 인스턴스를 생성해 변경하는 것으로 원본에 영향 X
하지만 공용으로 사용하는 메테리얼에서 빠져나와 다른 새로운 메테리얼을 생성해 적용하는 것이기에
그에 따른 DrawCall이 늘어나는 점은 감안해야한다.
GeometryUtility.CalcualteFrustumPlanes
주어진 카메라의 시야 절두체(view frustum)을 통해서, 그것을 형성하는 여섯 개 평면을 반환
GeometryUtility.TestPlanesAABB
bound가 planes 배열 내에 있다면 true를 반환
=======================================================================
유니티 에디터 코딩
ScriptableWizard
마법사 창을 위해 상속하는 클래스
helpString
마법사 창의 도움말 문자열 작성 가능
[MenuItem("메뉴 위치")]
메뉴로 호출하고픈 원하는 메소드 위에 추가
ScriptableWizard.DisplayWizard
마법사 창을 보여주는 메소드, 메뉴 이름과 디스플레이하고픈 클래스를 정해줘야한다.
OnSelectionChange
선택 항목이 변경될 때마다 호출되는 메소드
하이어라키 창에서의 변경도 적용
OnWizardCreate
사용자가 만들기 버튼을 클릭할 때 호출
중간 팁!
AssetDatabase
실제 프로젝트 창과 관련 있는 작업을 위해 제공되는 클래스
AssetDatabase.CreateAsset
새로운 에셋을 지정된 경로에 생성
AssetDatabase.SaveAssets
저장되지 않은 에셋을 디스크에 저장
========================================
CustomPropertyDrawer
사용하는 이유 : 인스펙터에 표시되지 않는 사용자 정의 멤버 혹은 그 외의 멤버를 표시하기 위해서
사용하기 위해서 준비해야할 것
1. 표시하고픈 클래스 혹은 데이터
2. 그 클래스 혹은 데이터를 기반으로 인스펙터에 표시하는 메소드를 구현할 Drawer 클래스
1.의 클래스는 [System.Serializable] attribute를 추가해야 한다.
Drawer 클래스는 PropertyDrawer 클래스를 상속받아야 한다.
그 클래스에 [CustomPropertyDrawer()]를 추가, 괄호 내에 typeof(Type)을 추가.
OnGUI를 오버라이딩하여 인스펙터에 표시될 내용을 처리한다.
EditorGUI.BeginProperty
EditorGUI.EndProperty
이 사이에 인스펙터 상에서 표시하고자 하는 값을 표시한다.
참고할만한 블로그
=========================================
EditorWindow
편집기 창을 띄우기 위해 상속해야하는 클래스
GetWindow
윈도우 생성 메소드
EditorGUILayout.EnumPopup
팝업창 UI 생성 메소드
OnInspectorGUI
커스텀 인스펙터를 만들려면 이 함수를 재구현해야한다.
Editor 클래스의 메소드
EditorGUILayout.HelpBox출력문 박스 표시
EditorGUILayout.LabelField줄 단위로 필드를 표시
Event.current.type == EventType.MouseDown && Event.current.button == 0
현재 이벤트에 관련된 조건문, 참고할 것
'프로그래밍 > 유니티' 카테고리의 다른 글
[유니티] 20211005_수업 7일차 (0) | 2021.10.06 |
---|---|
[유니티] 20211006_수업 8일차 (0) | 2021.10.06 |
[유니티] 20211001_수업 5일차 (0) | 2021.10.04 |
[유니티] 20210930_수업 4일차 (0) | 2021.10.01 |
[유니티] 20210929_수업 3일차 (0) | 2021.10.01 |