기즈모 활용 하기(Gizmos)
Unity 에서 Editor에서 보이는 Gizmo를 커스터마이징해서 필요한 정보를 더 많이 노출되고 개발에 용이하게 사용이 가능하다. Edior에서만 처리가되기 때문에 처리하는 플랫폼이 Editor가 아닌 경우에는 노출되지 않는것을 명심해야 한다.
Unity 설명에서 Gizmos는 시각적 디버깅 또는 씬뷰에서 설정을 돕기위해서 사용한다고 한다.
항상 노출되려면 OnDrawGizmos 에서 구현한다.
반응형
오브젝트를 선택할때 기즈모에서 나오도록 하는 경우는 OnDrawGizmosSelected 에서 구현한다.
OnDrawGizmos는 매 프레임마다 호출된다.
using UnityEditor;
void OnDrawGizmos() {
//Always
}
void OnDrawGizmosSelected() {
//Select Object
}
Gizmos에 정보를 표현하는 방식으로 Text 출력은 다음과 같다.
Handles.Label(GetUpPosition(), $"HP {hp}");
< Gizmos Icon >
Gizmos를 통한 Icon 표현 참고로 Assets/Gizmos의 경로에 Icon이 있어야 한다.
Gizmos.DrawIcon(position, "icon", true);
< Gizmos Line 추가 >
Gizmos.DrawLine(startPosition, endPosition);
반응형
<Unity Test Code>
using UnityEngine;
using UnityEditor;
public class ExampleScript : MonoBehaviour
{
public float value = 7.0f;
}
// A tiny custom editor for ExampleScript component
[CustomEditor(typeof(ExampleScript))]
public class ExampleEditor : Editor
{
// Custom in-scene UI for when ExampleScript
// component is selected.
public void OnSceneGUI()
{
var t = target as ExampleScript;
var tr = t.transform;
var pos = tr.position;
// display an orange disc where the object is
var color = new Color(1, 0.8f, 0.4f, 1);
Handles.color = color;
Handles.DrawWireDisc(pos, tr.up, 1.0f);
// display object "value" in scene
GUI.color = color;
Handles.Label(pos, t.value.ToString("F1"));
}
}
반응형
< Gizmos 옵션 >
Gizmos에 대한 자주 사용하는 옵션은 다음과 같다.
.color | 색상 변경 |
.DrawCube | 큐브 생성 |
.DrwaGUITexture | 텍스쳐 생성 |
.DrawIcon | 아이콘 생성 |
.DrawLine | from~ to로 향하는 라인 생성 |
.DrawMesh | Mesh 생성 |
.DrawRay | from 에서 direction 있는 Ray 생성 |
.DrawSphere | 구체 생성 |
.DrawWireCube | Wireframe box 생성 |
.DrawWireMesh | WireFrame Mesh 생성 |
.DrawWireSphere | WireFrame 구체 생성 |
Gizmos를 활용하는 방법은 무궁무진하다.
이동하는 WayPoint를 시각적으로 표현하는 코드는 다음과 같다.
if(platform.waypoints.Length <2)
return;
Gizmos.color = Color.white;
for(int i=0; i<platform.waypoints.Length -1 ;i++)
Gizmos.DrawLine(platform.waypoints[i].position, platform.waypoints[i+1].position);
if(platform.loop)
Gizmos.DrawLine(platform.waypoints[0].position, platform.waypoints[platform.waypoints.Lenght-1].position);
Unity Gizmos Menu : [링크]
Unity Gizmos Function : [링크]
Creating Custom Gizmos for Development : [링크]
★☆☆☆☆
반응형
'개발 > Unity' 카테고리의 다른 글
Unity) 고급 프로젝트 설정 /커맨드 라인 설정 (0) | 2021.10.27 |
---|---|
Unity) Google Admob 적용하기(광고붙이기) (0) | 2021.10.25 |
Unity)안드로이드 심볼 활성화(Enabling Android symbols) (0) | 2021.10.07 |
Unity) 앱 난독화(Proguard) (2) | 2021.10.04 |
Unity)문재해결) Fatal Error Logs/AssetImportWorker0.prev.log: 다른 프로세스가 파일을 사용중이기 때문에 프로세스가 엑세스 할 수 없습니다. (0) | 2021.09.29 |
댓글