유니티 6에서 프로젝트를 새로 만들려고 봤더니 뭔가 엄청 빠져있는 게 보인다.
가령 create 에서 script 추가가 Scripting을 클릭해서 MonoBehaviour Script로 만들 건지 Empty C# Script로 만들 건지를 선택해야 한다거나,
버튼을 만들었는데 OnClick이 빠지고 clicked로 바꼈다거나...
여러모로 귀찮아졌다.
그래서 새로 알게 된 내용을 정리해 둔다. 또 찾아보고 싶지 않기 때문이지.
그냥 이전 걸 그대로 사용하는 게 더 편할 것 같아서 잠깐 UI Toolkit을 사용하지 말고 uGUI를 그대로 사용해 볼까도 했는데 나온 지도 꽤 됐길래 이쪽으로 쓰는 게 더 맞을 것 같다.
일단
UXML 파일 생성
1. UXML 파일을 만들어야 한다.(UI Document)
- 프로젝트 창에서
Assets > Create > UI Toolkit > UI Document를 선택해 UXML 파일을 생성한다.
2. UI Builder 열기.
- 생성한 UXML 파일을 더블 클릭하면 UI Builder가 열린다.
2. UI 구성 만들기 (UI Builder 사용)
1. UI Builder에서
- VisualElement를 루트로 두고,
Library에서 자신이 쓸,
- Label(Text 출력용),
- Button(추가할 버튼)
- 필요하다면 Image드래그해서 배치.
2. 각 요소에 이름 지정하기.
- Inspector에서 각 요소의 Name 필드를 입력한다.
ex.
- Label의 Name : DialogueText
- Button의 Name : StartButton
사이즈나 위치값은 inspector에서 수정하면 된다.
3. UIDocument 컴포넌트 추가
1. 씬에 빈 GameObject 생성(ex. DialogueUI)
2. UIDocument 컴포넌트 추가.
3. UIDocument의 SourceAsset에 방금 만든 UXML파일 할당.
4. C# 코드에서 UI 컨트롤 제어
1. UI 요소 찾기 및 이벤트 연결.
using UnityEngine;
using UnityEngine.UIElements;
public class DialogueUIController : MonoBehaviour
{
public UIDocument uiDocument; // Inspector에서 연결
void Start()
{
var root = uiDocument.rootVisualElement;
// UXML에서 지정한 이름으로 요소 찾기
Label dialogueText = root.Q<Label>("DialogueText");
Button startButton = root.Q<Button>("StartButton");
// 버튼 클릭 이벤트 등록
startButton.clicked += () =>
{
dialogueText.text = "대화가 시작되었습니다!";
// 여기에 Dialogue System 연동 코드 추가
};
}
}
2. GameObject에 스크립트 추가
위에 있는 스크립트를 UIDocument가 붙은 GameObject에 추가하고, Inspector에서 uiDocument 필드에 UIDocument 컴포넌트 연결.
'유니티' 카테고리의 다른 글
유니티 에셋 ) 유니티 6으로 만들어진 Maze Rotator 패키지를 열어봤다 마주한 오류들. (0) | 2025.04.08 |
---|---|
유니티 ) h8man님의 pseudo 3d game에 장애물 연타로 나오게 하기. (0) | 2025.02.18 |
유니티 ) Text Mesh Pro를 사용해 그라데이션을 줘보자.(Color Gradient Presets) (0) | 2025.02.12 |
유니티 ) 카메라 stack을 사용해보자. (0) | 2025.01.23 |
유니티 복권 긁기 기록용 스크립트. 수정중 - 박스 콜라이더 스크립트 (0) | 2024.12.18 |