예쁜 꿈을 꾸라고
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기
      • Unreal Engine
        • 기능 구현
        • Bug
        • Dedicated Server
        • GAS
        • Behavior Tree
      • Unity
        • 기능 구현
        • Bug
        • 프레임워크
        • 기타
      • C++ 게임 프로그래밍
        • 게임 프로그래밍 기초
        • 게임 수학
        • 게임 프레임워크
        • 게임 서버
      • WindowsAPI
        • DirectX 11
      • 개발 환경설정
      • 자료구조와 알고리즘
      • Git
      • 포트폴리오
      • 프로젝트 회고
      • 취업준비
      • 기타
  • 홈
  • 태그
  • 방명록
Unity/기능 구현

[Unity] Follow Camera

카메라가 플레이어를 따라오도록 하는 로직을 작성하는 아이디어는 다음과 같습니다. 카메라의 위치 값을 플레이어의 위치 값이 변동하는 만큼 위치를 동적으로 변경 해당 방법을 유니티에서는 코드로 직접 만들어서 사용할 수도 있고, 시네머신 카메라 플러그인을 다운로드하여 에디터에서 딸깍으로 처리하는 방법이 있습니다. 1. 코드로 카메라를 따라오게 설정하는 방법메인 카메라의 위치를 Update 함수에서 매 프레임 플레이어의 위치를 받아서 처리해주는 방법이 있습니다.이 로직에서는 선형보간법(Lerp)을 사용하여 카메라 플레이어보다 약간 느리게 따라가며 부드러운 카메라 이동을 구현합니다. 이보다 더 쉬운 방법으로는 2. 시네머신 카메라먼저 이 기능을 사용하기 위해서는 메뉴 Window - PakageManager ..

2026. 1. 6. 16:14
Unity/프레임워크

[Unity] 최적화 : 플랫폼별 오디오 및 이미지(Atlas) 파일 설정

# 오디오사운드의 경우, 플랫폼에 관계없이 아래와 같이 설정합니다. 플랫폼 별로 설정을 달리할 필요가 없습니다. 다만 배경음의 경우에는 품질을 100으로 높이고, 효과음의 경우에는 품질을 낮춰서(19) 사용합니다. # 이미지이미지는 2D 이미지라면 최적화를 고려해서 아틀라스를 사용합니다.아틀라스란, 여러 리소스를 이미지 파일 하나에 욱여넣은 것을 말합니다. 아래 이미지를 예시로 들면, 26개의 이미지가 하나의 파일에 담겨 있는 상태입니다.프로그램은 이미지 한 장만 로드하고, 인덱스로 구분하여 해당 위치의 리소스를 화면에 렌더링하는 방식을 사용합니다. GPU 입장에서는 이미지 26장을 로드하는 것보다, 이미지 한 장을 로드하여 메타 파일 정보를 토대로 이미지를 가져오는 것이 훨씬 빠릅니다. 이유는 C..

2026. 1. 1. 13:03
Unity/프레임워크

[Unity] Localization Remote load

Addressables와 AWS S3를 통해 다국어 지원관련 데이터를 서버에 업로드하고, 사용자가 원격으로 다운로드 받아 진행할 수 있도록 처리합니다. 이러한 방식을 사용하는 이유는, 앱스토어에 앱을 업데이트 하지 않고 핫픽스를 통해 문제를 해결할 수 있기 때문입니다. 로컬라이즈 작업을 모두 마쳤다는 가정 하에 원격 로드 처리를 하겠습니다. https://kabu0129.tistory.com/396 [Unity] Localization : 다국어 지원 시스템게임을 출시할 때, 하나의 언어만 지원하지 않고 현지화 전략으로 해당 지역에 맞게 언어를 지원하는 시스템이 있습니다.영미권 국가에서는 영어로, 한국에서는 한국어로, 일본에서는 일본어로kabu0129.tistory.com 1. Addressables ..

2026. 1. 1. 05:19
Unity/프레임워크

[Unity] Localization : 다국어 지원 시스템

게임을 출시할 때, 하나의 언어만 지원하지 않고 현지화 전략으로 해당 지역에 맞게 언어를 지원하는 시스템이 있습니다.영미권 국가에서는 영어로, 한국에서는 한국어로, 일본에서는 일본어로 언어를 지원하는 기능을 유니티에서 구현합니다. 유니티는 현지화 기능을 Localization 플러그인을 통해 지원하고 있습니다. 1. 메뉴 Window - PakageManagement - Unity Registry에서 Localization 검색 후 설치 다운로드가 끝났으면 2. 메뉴 Window - Asset Management - Localization Tables 클릭 유니티의 다국어 지원은 key 값에다 해당 언어를 매핑하는 방식입니다.그래서 표를 이용합니다. 당연히 표는 csv 파일로 작성할 수 있습니다. 3..

2025. 12. 30. 15:22
Unity/Bug

[Unity] native-googlesignin not found

구글 Signin을 플러그인을 통해 로그인 기능을 구현하여 빌드 테스트를 진행하니 다음과 같은 에러가 뜹니다. DllNotFoundException: Unable to load DLL 'native-googlesignin'. Tried the load the following libraries 'native-googlesignin' because of '~~~'at Google.impl.GoogleSignIn_Create(System.IntPtr data) [0x0000] in ;0 빌드에 구글 로그인 관련 dll 파일을 로드하지 못해서 로그인 관련 기능을 수행할 객체를 생성하는데 실패했다는 것으로 보입니다. 그러면, dll 파일이 왜 빌드에서 빠졌는지 몇가지 확인을 했는데, 저는 두 가지 방법을 사용..

2025. 12. 29. 11:27
Unity/프레임워크

[Unity] Google AdMob 연동

# Admob : Google에서 지원하는 인앱 광고 연동 시스템 먼저, 인앱 광고를 추가하기 위해서 구글에서 제공하는 앱 ID를 생성해야 합니다. # 초기 설정1. GoogleAdmob 가입 및 앱 추가 2. 메뉴 - 앱 - 앱 설정 클릭 여기서 앱 ID를 확인할 수 있습니다. ※ 주의 : 실제 출시 버전에서만 앱 ID를 사용하고, 테스트 환경에서는 구글이 제공하는 테스트 광고 ID를 사용해야 합니다.테스트 환경에서 실제 앱 ID를 사용할 경우, 어뷰징으로 불이익을 받을 수 있습니다. 테스트 ID는 배너 / 전면 / 보상형 등 광고 유형에 따라 다르고 플랫폼별로 다릅니다.해당 ID 값은 구글 Admob Unity 문서에서 확인할 수 있습니다. https://developers.google.com/..

2025. 12. 29. 11:08
Unity/기능 구현

[Unity] Input System으로 이동

과거 자료들은 이동 처리를 아래처럼 처리하는 것이 일반적이다.float horizontal = Input.GetAxisRaw("Horizontal");float vertical = Input.GetAxisRaw("Vertical");moveDirection = new Vector3(horizontal, 0, vertical).normalized;characterController.Move(moveDirection * moveSpeed * Time.deltaTime) Input Manager라고 불리던 방식은 최신 버전인 유니티 6에서는 동작하지 않는다. 이를 사용하기 위해서는 메뉴 Edit - Project Settings - Player 로 들어가서 기타 설정에 하단에서 입력 설정을 Both로 변경해줘..

2025. 12. 9. 10:35
Unity/프레임워크

[Unity] csv 파일 관리 : DataTable Manager

엑셀로 작성한 데이터 표를 Unity에 로드하는 과정을 도와줄 Manager 클래스를 만든다. 이러한 리소스를 로드하는 객체가 프로그램에 여러 개일 필요가 없다.객체가 하나만 있으면 되고, 또 전역에서 해당 데이터 테이블의 자료에 접근할 수 있어야 한다. 이 조건을 만족시키는 싱글톤 객체로 생성한다. Key-Value 형태로 IDataTableInfo 인터페이스를 상속받은 객체만을 저장하는 멤버를 가진다. 굳이 IDataTableInfo 라는 인터페이스를 정의한 이유는1. foreach문에서 모든 데이터 테이블을 한 번에 로드하기 위함2. C#의 리플렉션을 통해 IDataTableInfo를 상속받은 객체만 자동으로 추려서 저장하기 위함 에디터에서 일일이 IDataTableInfo를 상속한 스크립트를 ..

2025. 12. 4. 01:32
Unity/프레임워크

[Unity] 관리자 클래스 : Singleton Pattern

유니티 게임 제작을 위해 몇가지 필요한 기능들을 세팅하고 시작한다. 먼저 각종 Manager 클래스인데, 매니저 클래스는 게임이 시작해서 종료될 때까지 프로그램의 생명주기를 함께해야 한다.즉, 로비에서 플레이 화면으로 전환된다고 해서 파괴되어서는 안될 중요한 클래스들이다. 대표적으로 입력 매니저, 오디오 매니저, 리소스 매니저 같은 녀석들이 해당된다. 이러한 객체들을 내가 직접 만들어서 관리하기 위해 Singleton 패턴을 사용해 프로그램에서 "유일한" 객체임을 보장해주는 방식을 사용한다. 싱글톤 패턴의 핵심은1. 정적(static) 객체 : 프로그램의 생명주기를 따라가고 전역에서 접근하기 위해2. this가 null이면 생성해서 반환하고, null이 아닌(이미 존재하는) 상태라면 나 자신(this) ..

2025. 12. 4. 00:43
Unity/기능 구현

[Unity] Playerprefs

Playerprefs : 유니티에서 제공하는 데이터 저장용 유틸리티 클래스 Key-Value 방식으로 로컬 PC에 데이터를 영구적으로 저장한다. 핵심은 "영구적"에 있다.즉, 게임을 종료했다가 다시 실행해도 상태가 보존된다는 특징이 있다. existSaveData는 최초에는 false이다. false일 때, Save를 한번 해주는 함수를 호출하고, 여기서 true로 저장을 한 번 해주게되면, 그 다음부터는 영구적으로 true가 된다. 그런데 영구적이기 때문에 테스트 환경에서는 불편함이 있을 수 있다. 이 때는 유니티 에디터에서 Edit - Clear All PlayerPrefs를 눌러 정리할 수 있다. 데이터가 저장되는 파일을 직접 찾아볼 수도 있는데, 저장된 파일은 레지스트리 편집기에서 Softw..

2025. 12. 1. 19:56
Unity/프레임워크

[Unity] 싱글톤(Singleton)과 Title Scene의 관계

게임을 개발하다보면 프로그램에서 유일해야하는 존재들이 몇 있다.게임 엔진 코어가 그러할 것이고, 사운드, 입력 시스템 등이 그렇다. 로우 레벨 객체는 게임 엔진이 처리해준다지만, 내가 만드는 프로젝트에서도 유일해야하는 대상이 존재한다면 싱글톤 패턴을 통해 단 하나만 생성됨을 보장할 수 있다. 이러한 싱글톤 객체는 프로그램이 시작하면 메모리에 할당해두고, 게임이 실행되는 내내 사용해야 한다.그러나 게임은 상황에 따라 Scene을 전환하면서 리소스를 로드하고 언로드하기를 반복할텐데 이 때 싱글톤 객체가 삭제되지 않도록 지켜줘야 한다. 그리고 이 과정을 처리하기 가장 좋은 공간이 타이틀 씬(Title Scene)이다. 타이틀 씬은 말 그대로 게임이 처음 시작되고 게임 회사, 팀, 타이틀을 보여주는 역할을 한다..

2025. 12. 1. 03:16
Unity/기타

[Unity] 로그(Log) Conditional 설정

프로젝트를 진행하면서 출시용 버전에서는 치명적인 문제가 아니라면 로그를 띄우지 않도록 설정해줘야 한다.로그를 띄우는 것 자체의 비싼 문자열 연산 비용을 소비하기 때문이다. 매번 배포용 빌드를 할 때 개발용 로그를 일일이 지우는 것이 아니라 Conditional이라는 속성을 사용하여 특정 전처리 심볼이 정의되어 있을 때만 해당 함수를 호출 코드를 컴파일하도록 지시한다. 이후, 유니티 에디터로 돌아가서 심볼을 추가해줘야 한다. 메뉴 Edit - Project Settings - Player로 가서 스크립트를 추가하고 저장한 뒤 에디터로 Ctrl + S로 저장해줘야 한다. 그래야 파일에 저장이 된다.

2025. 12. 1. 03:07
Unity/기능 구현

[Unity] Monster 설정

몬스터는 기본적으로 직접 씬에 배치하는 방향으로 작업하지 않는다. Spawner라는 객체를 만들어 몬스터를 일정 주기마다 스폰시키는 방식을 사용한다. 유니티 에디터에서 스크립트를 생성하고, 다음과 같은 멤버를 생성한다.public으로 설정하여 추후 에디터에서 수정할 수 있도록 세팅한다.여기서 GameObject를 통해서 몬스터를 지정하고,Player의 위치를 가져와서 플레이어의 현재 위치를 기준으로 일정 거리에서 원형으로 몬스터가 하나씩 스폰되도록 만들 것이다. 함수는 다음과 같다. 먼저 몬스터를 스폰한다. 스폰할 랜덤한 위치값을 구하기 위해 Random 함수를 사용한다.랜덤 값의 범위는 0도부터 360도이다. PI는 호도법으로 180도이다.여기서 구해낸 각도를 x는 cos, y는 sin 함수를 통해 구..

2025. 11. 29. 22:47
Unity/기능 구현

[Unity] 캐릭터 초기 설정

캐릭터 에셋을 하나 하이어라키에 추가한다. 그 다음으로 Project 폴더에서 마우스 우클릭으로 - MonoBehaviour 스크립트를 추가한다. 생성한 스크립트 이름을 PlayerMovenment로 짓고 하이어라키에 올린 캐릭터에 드래그 앤 드랍을 통해 스크립트를 컴포넌트로 추가한다. 그 다음 PlayerMovement 스크립트를 더블클릭하여 IDE를 실행한다.이제 코드를 기본적인 이동, 회전, 애니메이션 코드를 작성한다. 이동 : 가로 이동(Horizontal)과 세로 이동(Vertical)값을 가져온다. 이 때 좌우 키와 상하 키를 동시에 누르면 대각선 이동이 되는데 이 때 대각선 이동의 크기가 1을 초과하지 않도록 normalized를 해준다.마지막으로 컨트롤러를 통해 방향과 크기(Speed..

2025. 11. 28. 20:27
Unity/기타

[Unity] Font를 Font Asset으로 변환하기(TMP)

기존 레거시 방식의 UI Text는 비트맵 폰트로 폰트 크기를 확대하거나 축소하면 앨리어싱 현상이 발생해 흐릿하게 보이는 문제가 있었다.따라서 유니티는 해상도나 폰트 크기 변경에 관계 없이 선명한 텍스처를 출력하기 위해 기존 방식을 버리고 TMP(Text Mesh Pro) 방식을 도입했다. UI에 폰트를 적용하기 위해서 TextMeshPro를 사용해서 폰트 에셋을 생성해줘야 한다. 등록할 폰트를 지정하고, 아래 옵션대로 입력한 뒤 저장 유니티 엔진으로 드래그 앤 드랍 하이어라키에서 UI - Text-TextMeshPro 클릭 폰트 에셋 설정에 들어가면 생성한 폰트 에셋이 보인다.

2025. 11. 26. 17:47
  • «
  • 1
  • »

공지사항

전체 카테고리

  • 분류 전체보기
    • Unreal Engine
      • 기능 구현
      • Bug
      • Dedicated Server
      • GAS
      • Behavior Tree
    • Unity
      • 기능 구현
      • Bug
      • 프레임워크
      • 기타
    • C++ 게임 프로그래밍
      • 게임 프로그래밍 기초
      • 게임 수학
      • 게임 프레임워크
      • 게임 서버
    • WindowsAPI
      • DirectX 11
    • 개발 환경설정
    • 자료구조와 알고리즘
    • Git
    • 포트폴리오
    • 프로젝트 회고
    • 취업준비
    • 기타
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #게임 프로그래밍
  • #1. ㅇ
  • #C++
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © 예쁜 꿈을 꾸라고 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바