Unity 매뉴얼 스크립팅 API 해설
버전
- 2022.3
- 2023.2
- 2023.1
사용자 인터페이스(UI) 생성
UI 툴킷
Unity에서는 UI를 생성할 때 두 가지 주요 API를 제공합니다: 메시 API와 벡터 API입니다.
메시 API 사용
메시 API는 복잡한 형태의 2D 시각적 콘텐츠를 만들 때 유용합니다. 1. 메시 할당: MeshGenerationContext.Allocate
메서드를 사용하여 메시를 할당합니다. 2. 버텍스 및 인덱스 채우기: 할당한 메시의 버텍스와 인덱스를 설정합니다.
예제: 단일 사각형 생성
void OnGenerateVisualContent(MeshGenerationContext mgc)
{
var mesh = mgc.Allocate(4, 6);
mesh.SetNextVertex(new Vertex() { position = new Vector3(p0.x, p0.y, Vertex.nearZ), tint = wireColor});
mesh.SetNextVertex(new Vertex() { position = new Vector3(p1.x, p1.y, Vertex.nearZ), tint = wireColor});
mesh.SetNextVertex(new Vertex() { position = new Vector3(p2.x, p2.y, Vertex.nearZ), tint = wireColor});
mesh.SetNextVertex(new Vertex() { position = new Vector3(p3.x, p3.y, Vertex.nearZ), tint = wireColor});
mesh.SetNextIndex(0);
mesh.SetNextIndex(1);
mesh.SetNextIndex(2);
mesh.SetNextIndex(0);
mesh.SetNextIndex(2);
mesh.SetNextIndex(3);
}
벡터 API 사용
벡터 API는 더 간단한 2D 그래픽스 작업을 위한 API입니다. 이 API는 선, 호, 모양 등을 쉽게 그릴 수 있도록 도와줍니다.
예제: 사각형 그리기
void DrawCanvas(MeshGenerationContext mgc)
{
var painter2D = mgc.painter2D;
painter2D.fillColor = wireColor;
painter2D.BeginPath();
painter2D.MoveTo(p0);
painter2D.LineTo(p1);
painter2D.LineTo(p2);
painter2D.LineTo(p3);
painter2D.ClosePath();
painter2D.Fill();
}
선 그리기
LineTo 메서드
LineTo
메서드는 현재 위치에서 주어진 위치까지 직선을 만듭니다. 선 그리기 전 몇 가지 프로퍼티를 설정할 수 있습니다.
예제: 지그재그 선 그리기
painter2D.lineWidth = 10.0f;
painter2D.strokeColor = Color.white;
painter2D.lineJoin = LineJoin.Round;
painter2D.lineCap = LineCap.Round;
painter2D.BeginPath();
painter2D.MoveTo(new Vector2(100, 100));
painter2D.LineTo(new Vector2(120, 120));
painter2D.LineTo(new Vector2(140, 100));
painter2D.LineTo(new Vector2(160, 120));
painter2D.LineTo(new Vector2(180, 100));
painter2D.LineTo(new Vector2(200, 120));
painter2D.LineTo(new Vector2(220, 100));
painter2D.Stroke();
호 그리기
Arc
메서드는 특정 중심, 반지름, 시작 각도 및 끝 각도를 지정하여 호를 그립니다.
예제: 부채꼴 그리기
painter2D.lineWidth = 2.0f;
painter2D.strokeColor = Color.red;
painter2D.fillColor = Color.blue;
painter2D.BeginPath();
painter2D.MoveTo(new Vector2(100, 100));
painter2D.Arc(new Vector2(100, 100), 50.0f, 10.0f, 95.0f);
painter2D.ClosePath();
painter2D.Fill();
painter2D.Stroke();
커브 그리기
예제: 베지어 커브 그리기
painter2D.BeginPath();
painter2D.MoveTo(new Vector2(100, 100));
painter2D.BezierCurveTo(new Vector2(150, 150), new Vector2(200, 50), new Vector2(250, 100));
painter2D.Stroke();
2차 커브 그리기
painter2D.BeginPath();
painter2D.MoveTo(new Vector2(100, 100));
painter2D.QuadraticCurveTo(new Vector2(150, 150), new Vector2(250, 100));
painter2D.Stroke();
구멍이 있는 도형 그리기
Fill을 수행하면 구멍이 있는 경로를 만들 수 있습니다.
예제: 다이아몬드 모양의 구멍이 있는 직사각형
painter2D.MoveTo(new Vector2(10, 10));
painter2D.LineTo(new Vector2(300, 10));
painter2D.LineTo(new Vector2(300, 150));
painter2D.LineTo(new Vector2(10, 150));
painter2D.ClosePath();
painter2D.MoveTo(new Vector2(150, 50));
painter2D.LineTo(new Vector2(175, 75));
painter2D.LineTo(new Vector2(150, 100));
painter2D.LineTo(new Vector2(125, 75));
painter2D.ClosePath();
painter2D.Fill(FillRule.OddEven);
추가 리소스
- MeshGenerationContext
- Painter2D
- 에디터 및 런타임 UI에서 파이 차트 만들기
- 메시 API를 사용하여 라디안 진행 표시기 생성
- 벡터 API를 사용하여 라디안 진행 표시기 생성
Copyright © 2022 Unity Technologies. Publication 2022.3