카테고리 없음

Unity 본캠프 37일차

julesnow 2025. 5. 29. 04:36

🩸💧💦

 

https://docs.unity3d.com/kr/2022.3/Manual/UsingTheEditor.html

 

Unity 인터페이스 - Unity 매뉴얼

이 섹션에서는 가장 많이 사용되는 에디터 창과 각 창을 최대한 활용하는 방법에 대해 자세하게 설명합니다.

docs.unity3d.com

 

https://docs.unity3d.com/kr/current/Manual/UnityHotkeys.html

 

Unity 단축키 - Unity 매뉴얼

단축키 관리자는 Unity의 키보드 단축키를 관리하는 핵심 툴입니다. Mac 트랙패드에 대한 단축키도 설정할 수 있습니다.

docs.unity3d.com


협업 규칙

 

1. 에셋 관리 폴더 만들기

2. 깃 브랜치 전략

3. 씬 폴더 관리 방식

4. 깃 커밋 규칙 (동시 푸쉬 방지)

5. mamager값 수정할 때마다 말하기/ 싱글톤을 사용할 매니저정하기 게임,씬 : 싱글톤 필요 /값 수정이나 참조 가져올 때

6. 수정 부분에 있어서 바로 바로 상의하기 !

7. 커밋/푸쉬 순서

8. 파일이름 규칙

 


세션 7회차 : UI FrameWork

1. RectTransform : Canvas 로 넘어간 이후에 다~

 설명 : 해상도, 앵커, 피봇 / 앵커 기준으로 크기 조절

 특징 : 특정 Transform 으로 사용 X

 

주의 : 앵커 설정 중요

 

- Canvas 기준으로 따라가기 때문에 전체로 놓고 조절~ -> 스트레치로 설정하자. 

 Why? 좌우로 늘어나면 고정되는 부분이 변하니까

- UI로 게임 요소 X, UI로만 사용하자.

 

 

2. Anchor 의 사용 기준 : Anchor의 사용 위치를 잘 파악하기 (대칭 구조...)

 

 사용 : Scree,safeArea에서 받아와서 사용! -> 노치, Screen 에서 설정 가능

 

공식적인 룰) Canvas - UI 거칠 루트 (새 폴더) - 자식으로 포함

 

더보기

ReccTransform rt = GetComponent<RectTransform>();

 

Vector2 anchorMin = safeArea.position;

Vector2 anchorMax = safeArea.position + safeArea.size;

 

anchorMin.x /= Screen.width;

anchorMin.y /= Screen.heigth;

anchorMax.x /= Screen.width;

anchorMax.y /= Screen.heigth;

 

...

 

- web 빌드와 pc 빌드만으로 테스트 충분하다.

 

 

4. Canvas 분리 전략

  • Canvas 종류
    • Canvas_Fixed: 고정 UI (상태창, 조이스틱 등)
    • Canvas_Window: 창 형태 UI
    • Canvas_Popup: 팝업 창
  • Render Mode
    • WorldSpace:
      • 크기 축소 필요 (0.01)
      • GraphicRaycaster 필수
      • EventCamera 설정해야 UI 이벤트 처리 가능
      • UI는 월드 단위 계산 → 카메라 거리·각도 영향 받음
      • LookAt 처리 필요할 수 있음
      • Build 시 주의 요소 많음
  • 문제 해결 Q&A
    • Q: UI 터치가 안 먹혀요!
    • A:
      • GraphicRaycaster 있는지 확인
      • EventSystem 존재 여부 확인
      • 최적화란 사소한 점검부터!
  • UI Scale Mode
    • Scale with Screen Size 설정 꼭 확인!

Event System 구성 팁

  • InputSystemUIInputModule로 교체 필요 (New Input System 기준)
  • ActionMap을 Player / UI로 분리해서 관리하기

5. UI 기본 구조

  • UI 구분
    • FixedUI: 항상 존재 (HUD, 조이스틱 등)
    • WindowUI: 열고 닫는 창
    • PopupUI: 알림, 선택창 등
  • 대표 UI 예시
    • ConfirmPopup, Toast, Name UI
  • 핵심 컴포넌트
    • UIType: UI 종류 명시 (enum)
    • UIManager: 전체 UI 관리
    • BaseUI: 공통 UI 클래스
    • UIPath: Resources 경로 저장용
    • UIPool: UI 오브젝트 풀링
  • BaseUI 구조
    • 공통 기능 제공 (Init, Open, Close 등)
  • UIManager 팁
    • UIManager.Instance 남발하지 말고, Start() 등에서 변수로 저장해 사용
  • 버튼 처리 팁
    • Yes/No 버튼은 매개변수 분리
    • or 파라미터용 클래스로 관리

 

  • UIPath 사용 예시
    • UIType.MainWindow → "UI/WindowUI/MainWindow"
  • UIPool
    • 재사용 가능한 UI를 풀링해서 성능 최적화

 

 

public class ConfirmParam 
{
    public string Title;
    public string Message;
    public bool ShowCancel;
    public Action OnConfirm;
    public Action OnCancel;
}

 

6. UIType 예시

 

public enum UIType {
    None = 0,
    MainWindow,
    InventoryWindow,
    ConfirmPopup,
    ToastMessage
}
고정된 값은 static으로 관리하고 참조!

 

 

7. 최적화 전략

  • 처리 후 결과가 있다면 반드시 return 하자!
  • 반환값은 메서드와의 소통 창구
  • 반환값 & 파라미터부터 신경 써라
  • 주석, 예외처리도 성실하게!

 

파일 저장 관련 신규 지식

using System.IO;               // 파일 저장/읽기용
using Newtonsoft.Json;         // 객체 → JSON 변환

// 저장 경로 (기기별 경로 차이 있음)
Application.persistentDataPath
// 예시
// Windows: C:/Users/헴/AppData/LocalLow/회사이름/게임이름
// Mac: ~/Library/Application Support/회사이름/게임이름

 

 

 

using UnityEngine → MonoBehaviour 안 쓸 땐 생략 가능