
Unity Hub 란많은 유니티 개발자들은 유니티를 여러 버전을 설치해두고 있다.여러 버전을 쉽게 설치하고, 관리할 수 있도록 돕는 툴이 Unity Hub이다.https://unity.com/kr/download이 링크로 들어가 이렇게 다운로드를 받아주면 된다

유니티 의 주요 기능과 사용법 설명유니티 는 게임 개발을 위한 통합 개발 환경입니다.주요 기능:프로젝트 관리: 새로운 프로젝트 생성, 프로젝트 파일 구성 및 관리씬(Scene) 관리: 게임의 각 장면과 화면을 구성하는 요소에셋(Asset) 관리: 게임에 필요한 리소스(

SpriteRenderer는 2D 이미지를 표현하는 컴포넌트입니다. 어떤 이미지를 표현할 것인지(Sprite), 이미지의 색상(Color), 이미지의 상하(FlipY)좌우(FlipX) 반전, 그리는 우선순위(Sorting, Order in Layer) 등을 설정할 수

유니티 스크립트 작성프로젝트가 생성되면 Unity Editor를 열고, 스크립트를 작성할 수 있는 코드 편집기를 선택합니다. (예: Visual Studio)스크립트를 작성할 폴더를 생성하고, 해당 폴더에 새로운 C - 스크립트 파일을 더블 클릭하여 코드 편집기에

Unity 오늘은 캐릭터의 이동에 필요한 Vector를 알아볼것이다. Vector Vector = 방향 + 크기 이다. 이 빨간색 선을 보면 둘은 똑같은 벡터이고, 시작점의 정보는 없다. 벡터의 더함은 x좌표는 x좌표끼리의 더하고 , y좌표는 y좌표끼리 더한다.
코루틴이란?코루틴을 사용하면 작업을 다수의 프레임에 분산할 수 있습니다. Unity에서 코루틴은 실행을 일시 정지하고 제어를 Unity에 반환하지만 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드입니다.대부분의 경우 메서드를 호출하면 실행을 완료한 뒤 호출한 메서

이제 입문 팀프로젝트가 끝나고 숙련과정으로 들어와서 강의를 듣게 되었다.저번 입문 팀프로젝트는 https://github.com/A7-ShootingGame-Team/ShootingGameProject이 링크를 들어가면 확인 할수있다.스카이 박스란?게임 세계의

3D SURVIVAL 지형 및 스카이 박스 준비 하기 Window - Rendering - Lighting → Skybox Material 에 설정 플레이어 준비 빈 오브젝트 생성한후 Player 변경하고, 하위 빈 오브젝트에 CameraContainer 생성한후에 Main Camera를 하위로 설정 하였다. Player에 충돌 감지를 위해 Cap...

일단 캐릭터에 필요한 UI 를 만들것이다.UI를 생성 한다.캔버스 안에 체력과 배고픔 스태미너를 표현할 이미지를 만든다.먼저 Health 를 만든다.Health의 배경Image Icon을 추가2D Sprite Package를 설치하고 Square를 생성하고 Image를

오늘은 게임에서 많이 쓰이는 UI ImageType을 대해서 알아보겠다. ImageType Simple 설명: Simple 타입은 원본 스프라이트를 그대로 표시합니다. 크기를 조절하면 이미지가 그대로 늘어나거나 줄어듭니다. 사용 예제: 아이콘: 게임 내에서 작은

오늘은 점프대와 아이템을 사용하면 그만큼 수치가 올라가는것을 만들어 볼것이다. 점프대 Rigidbody ForceMode (난이도 : ★★★☆☆) 캐릭터가 밟을 때 위로 높이 튀어 오르는 점프대 구현 OnCollisionEnter 트리거를 사용해 캐릭터

GameObject: Unity의 기본 단위입니다. 모든 게임 세계에서 표현되는 개체입니다. 예를 들어, 캐릭터, 장애물, 아이템 등 모든 것은 GameObject입니다.Component: GameObject의 기능을 정의하고 확장하는 데 사용됩니다. 각각의 Compo

오늘은 이 체력부분의 왼쪽 반원의 체력부분과 가운데의 현재 체력을 알려주는 이미지 심장 부분을 만들어 볼것이다. 먼저 하트 오브젝트를 만들어주고, 원형의 백그라운드를 설정해 주었다. 그다음

오늘은 원형 체력, 스태미너 , 목마름 구현해 볼것이다.전에 실행시키면 fill amount가 0.5에서 1로 바꿔졌던게 있었는데 그냥 반원의 이미지를 찾아서 fill amount를 1로해서 하는게 낫다 싶어서 반원의 이미지를 찾아서 설정을 하게 되었다.이미지 처럼 왼

오늘은 개인 과제인 2D 클리커의 게임 배경을 만들어 볼것이다.2D 움직이는 배경화면을 만들어볼것이다.배경에 필요한 에셋을 다운받아서 이렇게 레이어가 나누어져있다.레이어 하나를 클릭한다음여기에서 Wrap Mode가 있는데 총 4개의 Wrap Mode가 있다. 잠시 설명

오늘은 2D 클리커의 플레이어 및 적을 만들어볼것이다.에셋의 HeroKnight의 sprite를 드래그해서 Player오브젝트에 넣게되면이렇게 Animator가 생긴다.공격 애니메이션을 위해서 Attack을 만들어주고Make transition으로 두개를 이어준후 mo

오늘은 클리커 게임중의 핵심인? 오토 클릭을 만들어볼것이다.이렇게 오토클릭컨트롤이라는 스크립트를 작성하고오토클릭을 활성화 시키기 위해서는 버튼이 필요하다.버튼을 만들고 Auto Click Controller스크립트를 컴포넌트 해주고 플레이어 컨트롤러 안에 플레이어를 넣

오늘은 적을 추가하는 작업과, 상점을 구현해볼것이다. 적 추가하기 일단 적을 추가하는데 앞에서 만들었던 Bat와 똑같이 만들어 주면된다 스크립트 추가 이렇게 스크립트를 추가하고나서, 이렇게 배열에 적을 추가해주면 된다. 상점 일단 상점의 UI작업부터 하고 이렇게 왼쪽 버튼과 오른쪽 버튼을 만들어 두었고 가격은 동일하게 10원씩 정하였다. 스크립...

Unity에서 BigInteger를 사용하여 큰 숫자를 단위(k, m, b)로 표시하기오늘은 Unity에서 System.Numerics.BigInteger 클래스를 사용하여 매우 큰 숫자를 다루고, 이를 클리커 게임처럼 간단한 단위(k, m, b 등)로 변환하여 표시하

오늘은 unRailed의 캐릭터의 상호작용을 만들어볼예정이다. 캐릭터 일단 캐릭터 이동부분은 간단하게 만들었다. 이렇게 설정하고 나서 캐릭터 컨트롤러라는 컴포넌트를 이용해서 움직인다. 스페이스바를 이용한 물건 들기 > 스크립트 레이캐스트를 이용해 앞의 물체

오늘은 도구를 이용해 나무를 없애보는 작업을 할것이다.도끼 오브젝트를 만들어 이 스크립트를 넣는다이 나무 스크립트도 나무 오브젝트에 넣고 태그를 wood로 설정해준다.Hit() 메서드는 나무가 충돌을 받을 때마다 호출되어 체력을 감소시키고, 마지막 체력에 도달하면 나무

오늘은 나무 와 돌 및 도구 상호작용 리팩토리를 진행해볼 예정이다.

오늘은 온도 시스템과 물공급 시스템을 구현해볼것이다.Unity에서 온도 관리 시스템 구현Unity의 MonoBehaviour를 상속받는 Train 클래스 작성.Train 클래스는 열차의 온도를 관리하고, 특정 온도에 도달하면 불타는 상태로 전환되도록 구현.온도 변화 로

오늘은 팀프로젝트 마무리를 해볼것이다.

오늘은 Unity 되돌아보는시간을 가져볼것이다.

오늘은 최종프로젝트의 기획을 해볼것이다.장르는 2D 방치형 힐링게임이다.피그마로 와이어프레임을 작성해보았고, 큰틀은 이렇게 잡았다.이렇게 큰틀을 잡았지만 튜터님의 말씀대로 구현을 더 자세히 각각의 씬을 나눠서 그려보기로 하였다.1차 구현의 틀은 이렇게 잡았고,내일또 튜

오늘 할 구현은 Unity에서 Image의 Fill Amount를 이용한 레벨 바 구현 및 물의 최대 양 제한Canvas 생성 후, Panel 및 Image UI 요소를 추가하여 레벨 바를 구현했습니다.Panel은 레벨 바와 텍스트를 포함할 컨테이너로 사용했습니다.Im

오늘은 ResourceManager 스크립트 작성과 5레벨마다 이미지 업데이트 강화할때 소모하는 재화와 증가 지면크기 업데이트를 만들어볼것이다.이 스크립트는 물이라는 주요 자원을 관리하는 시스템을 구현합니다. 물의 양을 증가 및 감소시키는 메서드, 물의 양에 따라 레벨

오늘은 코드 리팩토링을 진행해볼것이다.오늘은 Unity 프로젝트의 리소스 관리 코드를 리팩토링하면서 객체지향 설계 원칙과 디자인 패턴을 적용했습니다. 기존 코드는 모든 리소스 관리 기능을 하나의 클래스에 포함하고 있었기 때문에 유지보수와 확장이 어려웠습니다. 이를 해결
1\. 위 코드의 출력 결과는 무엇인가요? 그 이유는 무엇인가요?2\. 위 코드의 Main 함수를 아래처럼 바꿔도 같은 방식으로 동작할까요? 그 이유는 무엇인가요?3\. 델리게이트를 사용하여 메서드를 매개변수로 전달하는 장점은 무엇인가요?출력결과는 7 , 35 이유:

오늘은 코드리팩토링과 자동재화를 추가했지만 멘토님께 계획서를 피드백받은 결과 이 게임은 포트폴리오에 쓸수없을것같다 해서 모작 게임으로 계획을 바꾸기로 하였다.오늘은 Unity 프로젝트에 여러 디자인 패턴과 객체지향 설계를 적용하여 구조를 개선했습니다. 특히 자동 재화

1\. 다음 struct 코드와 class 코드의 결과를 예측해보고, 이유를 생각해봅시다.첫 번째 코드: struct 사용결과 예측: Point 1 X: 10Point 2 X: 30이유:struct는 값 타입(value type)입니다. 따라서 point2가 point

오늘은 기획을 다시만들고 어비스리움의 모작으로 잡고 이전에 만들던 강화 시스템을 가져와서 3D프로젝트에 적용하고 바꾸는 작업을 시작하였다.Unity 3D 프로젝트 작업오늘은 Unity 3D 프로젝트에서 싱글톤 패턴을 적용하고, 델리게이트와 이벤트를 사용하여 게임 내 생
1\. 위와 같은 코드에서, 다음과 같이 다중 상속을 하는 것이 가능할까요? 가능/불가능하다면 이유는 무엇일까요?\*\*2. 만약 CC클래스 A를 상속받은 클래스 B와 C가 있습니다.클래스 D가 B와 C를 모두 상속받으려고 합니다.이때, 클래스 D에서 A 클래스의 메서
오늘은 자동재화를 많이 추가해보겠다. 상속(Inheritance)과 인터페이스(Interface) 를 활용해봐야겠다.

오늘은 자동재화 추가에 해금조건을 걸어 조건이 충족됬을 시에 업그레이드 버튼이 활성화가 되고 해금됬을시에 자동재화가 실시간에 반영되야한다.작업 개요오늘의 작업은 Unity 프로젝트에서 RootBase와 Root1 클래스, 그리고 UpgradeButton 클래스의 기능을
1\. 위의 코드가 문제가 되는 이유를 메모리 관점에서 설명해주세요.2\. 아래와 같이 string이 아닌 StringBuilder가 권장되는 이유는 무엇일까요?위 코드에서는 Logger 클래스가 로그 메시지를 누적하기 위해 string을 사용하고 있습니다. strin
1\. 다음 코드에서 제네릭을 사용한 부분을 식별하고, 해당 코드가 제네릭을 사용하지 않았을 때 발생할 수 있는 문제점에 대해 설명하세요.2\. 아래 코드가 어떤 기능을 하는지, 어떤 방식으로 동작하는지 간단하게 설명해주세요.제네릭을 사용한 부분 식별 및 제네릭을 사용

3D방치형 힐링 게임을 만들게 되면서 자동재화의 수치가 엄청나게 올라가면서 BigInteger의 중요성을 알게되어 이렇게 한번 정리를 해야겠다.오늘 배운 것오늘은 CBigInteger는 매우 큰 숫자를 표현할 수 있는 임의 정밀도의 정수 타입입니다. int나 long
스킬 시스템 구현오늘 작업한 주요 내용은 Unity에서 스킬 시스템을 구현하는 것이었습니다. 두 가지 스킬 (LifeBoostSkill과 BubbleClickSkill)을 만들었고, 각각의 스킬은 발동 후 쿨타임을 가지도록 했습니다.LifeBoostSkill: 터치 증
Queue가 무엇인지 알고 있나요? 어떤 방식으로 작동하는지 설명할 수 있을까요?Queue는 선입선출(FIFO, First In First Out) 원칙을 따르는 자료구조입니다. 이는 먼저 삽입된 데이터가 먼저 삭제되는 구조를 의미합니다. Queue의 주요 연산으로는

BubbleClickSkill 클래스 수정:스킬 지속 시간 동안 큐가 비어 있더라도 계속해서 루프가 실행되도록 수정했습니다.AddBubbleToQueue와 RemoveBubbleFromQueue 메서드를 통해 버블을 큐에 추가하고 제거하는 로직을 간단하게 수정했습니다.

1\. Time.timeScale을 0으로 하면 Update와 FixedUpdate는 모두 호출이 되지 않을까요? 그 이유는 무엇일까요?2\. Update의 호출주기에 영향을 주는 것은 무엇일까요?3\. FixedUpdate의 호출주기에 영향을 주는 것은 무엇일까요?4

아래와 같이 코드를 작성하고 오브젝트에 작성한 스크립트 컴포넌트를 추가했습니다.csharp public class SomeClass : MonoBehaviour { SerializeField private int intValue = 2;cshar

작업 내용 및 트러블슈팅오늘은 유니티 프로젝트에서 터치 생명력 생산량과 업그레이드 비용 계산 방식을 개선하고, 레벨 업 시 식물 오브젝트를 순차적으로 활성화하는 작업을 진행했습니다. 또한, 업그레이드 비용과 생명력 생산량을 공식에 따라 계산하도록 수정했습니다.작업 내용

1\. 프로세스와 스레드의 차이는 무엇인가요?2\. Unity에서 Main Thread가 아닌 다른 스레드에서 Transform을 변경할 수 있을까요?3\. 왜 모든 작업을 비동기로 처리하지 않는 걸까요?프로세스와 스레드의 차이는 무엇인가요?프로세스는 실행 중인 프로그

오늘은 Unity 프로젝트에서 스킬 시스템을 구현하면서 RootBoostSkill 클래스를 포함한 여러 스킬 클래스의 기능을 개선하였습니다. 특히, 스킬의 부스트 배수와 관련된 UI 업데이트 및 레벨 업그레이드 기능을 수정하고, 그 과정에서 발생한 문제들을 해결하였습니

1\. 오일러 각의 한계점에 대해 설명해주세요.2\. Unity 내에서 짐벌 락 (Gimbal Lock) 현상을 직접 유도해볼 수 있나요? 그 방법을 적어주세요.오일러 각의 한계점에 대해 설명해주세요.오일러 각의 한계점은 주로 다음과 같은 문제가 있습니다:짐벌 락 (G

작업 내용오늘은 Unity 게임 개발 프로젝트에서 스킬과 아티팩트의 팝업 UI를 개선하는 작업을 진행했습니다. 특히, 스킬과 아티팩트의 현재 레벨을 표시하고, 다음 레벨의 능력을 명확하게 보여주는 기능을 추가했습니다. 또한, 쿨타임을 "분:초" 형식으로 표시하는 기능도

1\. 멀티플레이 동기화는 보통 TCP일까요 UDP일까요? 그 이유를 작성해봅시다.2\. Unity Built-in Render Pipeline과 Universal Render Pipeline의 차이점은 무엇이 있을까요?멀티플레이 동기화는 보통 TCP일까요 UDP일까요

오늘은 중간 발표가 있는 날이여서 개발시간이 부족하여 잠시 돌아보는 시간을 가졌다.설명: 네비게이션 시스템은 AI 캐릭터가 씬 내에서 경로를 찾고 이동할 수 있도록 도와줍니다.주요 컴포넌트:NavMesh: 경로 탐색을 위한 네비게이션 메쉬입니다. 씬 내에서 걷거나 이동

TIL(Today I Learned) 개요 오늘은 유니티 프로젝트에서 Google Mobile Ads SDK를 사용하여 보상형 광고를 구현하는 방법을 배웠습니다. 보상형 광고는 사용자가 비디오 광고를 시청하면 앱 내 보상을 제공하는 광고 형식입니다. 이번 구현은 Goo

RootBase 클래스 수정RootBase 클래스에 꽃 오브젝트 배치를 위한 새로운 로직 추가.ActivateNextPlantObject 메서드에서 미리 배치된 오브젝트를 활성화하거나, 배열이 비어 있으면 터레인에 새로운 식물을 배치하도록 수정.RootDataSO 클래

WorldTree 클래스는 Unity 프로젝트에서 게임 오브젝트를 관리하며, 레벨에 따라 나무 프리팹의 외형을 변경하고 카메라 시야를 조정하는 역할을 합니다.주요 변경 사항프리팹 변경 로직 추가특정 레벨에 도달하면 나무 프리팹이 변경되도록 수정하였습니다.7개의 프리팹이

목표:각 Root가 고유한 반경을 사용하여 고정된 중심 위치에서 꽃을 배치하되, 서로 겹치지 않게 배치한다.작업 내용:RootBase 클래스의 CalculateFlowerPositions 메서드를 수정하여, 각 Root가 고유한 반경을 가지도록 설정.중심 위치를 -7.

TIL (Today I Learned): Unity에서 Root 간의 꽃 배치 문제 해결 개요 오늘은 Unity 프로젝트에서 각 Root의 꽃 배치를 조정하는 작업을 진행했습니다. 특히 Root 간의 간격 조절과 겹침 문제를 해결하는 데 초점을 맞췄습니다. 이 과정에서

배경게임 개발 중 특정 영역에서 꽃이 생성되지 않도록 하는 기능을 추가할 필요가 생겼습니다. 이 기능은 꽃이 생성되지 않아야 할 영역을 정의하고, 꽃 배치 시 해당 영역을 피하도록 하는 것입니다.목표특정 영역을 중심 좌표와 반경으로 정의하여 꽃이 생성되지 않도록 한다.

유니티에서 광고 쿨타임 기능 구현 목표 오늘의 목표는 유니티 게임에서 광고 쿨타임 기능을 구현하는 것이었습니다. 광고를 성공적으로 본 후 모든 스킬의 쿨타임을 초기화하고, 광고 버튼이 사용된 후 일정 시간(30분) 동안 쿨타임 상태가 되도록 하는 것이 주요 과제였습니다
오늘은 빌드를 해서 핸드폰에 얼마나 부하가 걸리는지 테스트를 해보려했지만 각종 빌드 오류에 부딪혀 결국엔 아무것도 하지 못해서 이 gradle이 도대체 무엇인가에 대해서 알아보려고 한다. 기본 개념 빌드 자동화: Gradle은 코드의 컴파일, 테스트, 배포, 패키징 등 빌드 프로세스를 자동화합니다. 개발자가 매번 수동으로 해야 할 작업을 스크립트로 정의하...

TIL 트러블슈팅: 구글 플러그인과 구글 광고 모듈 간의 충돌로 인한 빌드 오류 문제 상황: 프로젝트에서 구글 광고 모듈을 추가한 후, 빌드 과정에서 예상치 못한 충돌 오류가 발생했습니다. 이 오류는 구글 광고 모듈과 다른 구글 플러그인 간의 의존성 문제로 인해 발생한 것으로 보였습니다. 원인 분석: 구글 광고 모듈을 임포트할 때, 외부 의존성(exte...

TIL(Today I Learned) 유니티에 구글 애드몹 추가 후 발생할 수 있는 오류 및 해결 방법 1. 구글 모바일 광고 SDK 설치 오류 오류 설명: 구글 모바일 광고 SDK를 Unity에 설치할 때 Gradle 빌드 실패나 패키지 호환성 문제 등이 발생할

스킬 구현각 스킬이 지속 시간과 쿨다운 시간을 가지도록 Unity에서 스킬 시스템을 구현했습니다.스킬이 사용될 때 스킬 정보를 표시하는 기능을 추가했습니다. 여기에는 스킬 이름과 남은 지속 시간이 포함됩니다.스킬의 지속 시간이 끝나면 스킬 정보 오브젝트가 비활성화되도록

TIL (Today I Learned): Unity에서 Coroutine을 사용한 UI 비활성화 문제 해결 문제 상황 Unity 프로젝트에서 스킬 버튼을 누르면 특정 UI 오브젝트가 나타나고, 2초 후에 자동으로 비활성화되도록 하는 코드를 작성했습니다. 이를 위해 IE

Unity 프로젝트에서 광고를 시청하면 모든 스킬의 쿨타임을 초기화할 수 있는 시스템을 구현 중이었습니다. 이때 광고 버튼은 "버블 클릭 스킬"이 잠금 해제되어 레벨 1이 되었을 때만 동작해야 했습니다. 또한, 버블 클릭 스킬이 1레벨에 도달하면 잠금을 나타내는 아이콘

오늘은 CBigInteger 값을 K (Thousand), M (Million), B (Billion) 등의 표준 접미사로 변환.V (Vigintillion, 10^63)까지 표준 접미사를 사용하고, 그 이후로는 커스텀 알파벳 조합(aa, ab, ac 등)을 적용하여

TIL (Today I Learned): BigInteger 단위 포맷 문제 해결 오늘은 C#에서 BigInteger 값을 적절한 단위로 포맷하여 문자열로 반환하는 기능을 구현하는 도중 발생한 문제를 해결했습니다. 문제 상황 BigInteger 값을 K(천), M(백만), B(십억) 등의 단위로 포맷하기 위해 다음과 같은 코드를 작성했습니다. 하지만 이...

오늘의 학습 내용:Unity의 파티클 시스템을 사용하여 도넛형 안개 효과를 만드는 방법을 배웠습니다. 이 효과는 플레이어를 중심으로 안개가 도넛 형태로 형성되며, 플레이어가 멀리 있는 물체를 볼 수 없도록 시야를 제한합니다. 이 효과를 구현하는 과정에서 중요한 파티클

유니티에서 스킬의 쿨다운 타이머를 구현할 때, Time.deltaTime을 사용해 시간을 계산했다. 하지만 테스트 도중, 타이머가 실제 시간보다 빠르게 흐르는 현상을 발견했다. 예를 들어, 15초의 쿨다운 시간이 실제로는 14초 미만으로 줄어드는 것을 확인할 수 있었다

오늘은 프로젝트 마지막날로 잔버그들을 찾아 수정하는 작업을 하였다.Unity 프로젝트에서 다이아몬드라는 재화를 관리하는 코드를 작성했습니다. 이 작업에서는 다이아몬드의 양에 따라 버튼의 활성화/비활성화를 구현하는 로직을 설계했습니다.Diamond 클래스를 작성하여 다이

제네릭 싱글톤 패턴은 Unity에서 전역적으로 접근 가능한 하나의 인스턴스만을 유지할 수 있도록 하는 디자인 패턴이다.제네릭 타입을 활용해서 다양한 컴포넌트를 싱글톤으로 쉽게 구현을 할 수 있다. 클래스 정의Singleton 클래스는 T 라는 제네릭 타입을 받아들이며,

오늘은 Unity에서 상태 패턴(State Pattern)을 사용하여 캐릭터의 상태를 관리하는 방법을 배웠다. 상태 패턴은 게임에서 캐릭터의 다양한 상태(Idle, Run, Attack 등)를 효율적으로 관리하고, 상태 전환을 매끄럽게 처리할 수 있도록 도와주는 중요한

전략 패턴(Strategy Pattern)은 객체의 행위를 캡슐화하여 서로 교환 가능한 형태로 정의하고, 이러한 행위들을 객체가 동적으로 사용할 수 있도록 하는 디자인 패턴입니다. 주로 다양한 알고리즘이나 행동을 런타임에 선택하고 교체할 수 있는 상황에서 사용됩니다.게

오늘은 옵저버 패턴(Observer Pattern)에 대해 공부했다. 옵저버 패턴은 주체(Subject)의 상태가 변할 때, 이를 자동으로 옵저버(Observer)들에게 통지하는 패턴이다. 이 패턴을 통해 여러 객체 간의 상태를 동기화할 수 있으며, 이벤트 기반 시스템

이렇게 오브젝트가 많으면 하나하나 열면서 확인하기가 상당히 힘들다..이때 Alt 키를 누른채로 펼치게 되면 한번에 전부 열리게 된다.Alt를 누른채로 접기도 가능하다!작업을 할때 좀 잘못된 것 같으면 컨트롤 + z를 많이 누르게 된다.이때 컨트롤 + z 대신 컨트롤 +

오늘은 인풋시스템을 다뤄볼것이다.일단 윈도우 탭에 들어가 패키지 매니저를 들어가고이렇게 Packages를 Unity Registry로 바꿔준후 input을 검색하면 바로 input system이 나온다.이걸 임포트 하게 해준다면 인풋시스템은 설치가 완료된것이다.이 인풋

오늘은 캐릭터 애니메이션 작업을 하면서 알게된부분을 정리해볼것이다.먼저 캐릭터 에셋을 가져오고 나서 폴더를 열어보면 Idle, Hit, Run 이러한 Sprite들이 있을건데 여기서 이 Sprite들을 모두 드래그 해준후에 Player에 넣어준다.이러한 형식으로 넣어준

오늘은 Unity에서 상태 패턴(State Pattern)을 사용하여 캐릭터의 상태를 관리하는 방법을 배웠다. 상태 패턴은 게임에서 캐릭터의 다양한 상태(Idle, Run, Hit 등)를 효율적으로 관리하고, 상태 전환을 매끄럽게 처리할 수 있도록 도와주는 중요한 디자

오늘은 Unity에서 OnTriggerExit2D 메서드를 활용하여 무한 맵을 만드는 방법을 배웠습니다. 기본적으로 플레이어가 맵의 특정 영역을 벗어났을 때 맵의 오브젝트를 다시 재배치하는 방식입니다.무한 맵 구현: 플레이어가 특정 구역을 벗어났을 때, 맵의 일부분이

Enemy의 상태 패턴 구현:State Pattern을 활용하여 적이 항상 플레이어를 추적하는 동작을 구현.IdleState를 생략하고, 게임 시작 시 바로 ChaseState로 전환되도록 설정.적이 플레이어를 계속해서 추적하도록 상태를 관리하여, 플레이어와 적의 상호

오브젝트 풀링(Object Pooling)은 게임 개발에서 성능 최적화를 위해 자주 사용되는 기법 중 하나다. 게임 내에서 오브젝트를 자주 생성하거나 파괴할 경우 메모리 할당과 해제로 인해 성능 저하가 발생할 수 있다. 이를 방지하기 위해 오브젝트 풀이라는 개념을 사용

처음에 Unity에서 Enemy 클래스에 상태 패턴을 구현할 때, 적이 스폰된 후 플레이어를 추적하지 않는 문제가 발생했다. StateMachine과 ChaseState를 제대로 설정했음에도 적이 움직이지 않았고, 그 이유를 찾는 데 시간이 걸렸다.문제는 초기화 순서에

유니티에서 오브젝트가 생성되고 소멸될 때까지, 특정 시점마다 자동으로 호출되는 메서드들이 있다. 각각의 타이밍이 달라 적절히 사용해야 원하는 결과를 얻을 수 있다.스크립트의 생명주기는 크게 3단계로 나눌수 있다.시작단계(생성 및 초기화) : Awake, OnEnable

오늘 적 오브젝트가 Scene 창에서는 잘 보이지만 Game 창에서는 전혀 보이지 않는 문제를 겪었다. 처음엔 렌더링 문제나 오브젝트의 레이어 문제인 줄 알았는데, 원인은 예상 외로 간단했다. 적의 Z축 위치가 잘못 설정되어 있어서 카메라가 렌더링할 수 있는 범위를 벗

이번에 적에게 피격과 사망 상태를 부여하기 위해 HitState와 DeadState를 구현했다. State Machine을 이용해 적이 피격되었을 때 HitState로 전환하고, 체력이 0이 되었을 때 DeadState로 전환되도록 설계했다.HitState: 적이 피격

오늘 게임의 HUD 작업을 했는데, 타이머, 레벨, HP, 경험치(Exp), 그리고 킬 수를 각각 UI에 표시할 수 있게 만들었다. LateUpdate를 사용해서 게임 상태에 따라 각 UI 요소들이 실시간으로 갱신되도록 설정했고, TextMeshProUGUI와 Slid

아이템 데이터를 효율적으로 관리하기 위해 ScriptableObject를 활용한 ItemData 클래스를 작성했다. 이번 작업에서는 아이템의 타입, 아이디, 이름, 설명, 아이콘, 데미지와 같은 다양한 정보를 하나의 스크립터블 오브젝트에 담아서 관리할 수 있도록 구현했
Awake(): "Awake는 스크립트 인스턴스가 생성될 때 가장 먼저 호출됩니다.OnEnable(): "OnEnable은 게임 오브젝트나 스크립트가 활성화될 때마다 호출됩니다.Start(): "Start는 Awake가 모두 호출된 이후, 게임 오브젝트가 활성화되었을

오늘은 캐릭터의 손(Sprites) 애니메이션과 동작을 관리하는 Hand 스크립트를 작성했습니다. 각 손의 위치와 회전을 캐릭터의 방향(뒤집힘 여부)에 맞춰 조정하고, 다양한 아이템에 따라 손에 착용할 스프라이트를 변경할 수 있도록 했습니다.Hand 클래스 정의Hand

ScriptableObject는 Unity에서 제공하는 데이터 저장 객체로, 게임 데이터를 관리하고 여러 인스턴스에서 공유할 수 있도록 돕는다. 이는 MonoBehaviour처럼 게임 오브젝트에 붙는 컴포넌트는 아니지만, 에디터나 런타임에서 데이터 저장소로 활용될 수

오늘은 Unity에서 최적화를 위해 Static Batching을 적용하는 방법을 정리해봤다. Static Batching은 정적 오브젝트를 하나로 묶어 드로우 콜을 최소화하여 렌더링 성능을 크게 향상시킬 수 있다. 드로우 콜은 말 그대로 GPU가 한 번에 그릴 수 있

오늘은 유니티에서 사용되는 힙(Heap) 메모리 구조에 대해 배웠다. 힙 메모리는 게임 개발에서 중요한 동적 메모리 할당이 이루어지는 공간이며, 적절히 관리하지 않으면 성능 저하나 메모리 누수와 같은 문제를 발생시킬 수 있다.힙(Heap)은 동적 메모리 할당이 이루어지

게임에서 적과 플레이어가 충돌할 때마다 HIT 애니메이션이 반복적으로 실행되고, 캐릭터의 health가 0 이하로 떨어져도 Dead 애니메이션이 제대로 실행되지 않는 문제가 발생했다.HIT 애니메이션 반복 실행: 충돌 시마다 OnHit()이 호출되면서 HIT 애니메이션

유니티에서는 2D와 3D 렌더링을 모두 지원하며, 두 방식은 다양한 게임 스타일과 프로젝트 요구에 맞춰 선택된다. 2D와 3D는 시각적 차이뿐만 아니라 렌더링 방식, 성능 요구 사항, 그리고 제작 과정에서도 큰 차이가 있다. 각 방식의 특징을 이해하면 프로젝트 성격에

유니티에서 오디오를 다루는 건 게임의 몰입감을 크게 좌우하는 중요한 요소다. BGM, SFX, 그리고 다양한 환경음들을 조절하면서 게임 플레이에 적합한 사운드를 연출할 수 있는데, 그중에서도 오디오 필터는 특정 주파수를 조정해 소리의 질감을 바꿀 수 있다. 필터 중에서

Firebase를 이용해 로그인과 회원가입 기능을 구현하면서, 실패 시 이를 알리는 팝업창 UI가 화면에 표시되지 않는 문제가 발생했다. 로그 메시지는 정상적으로 출력되었지만, 팝업창이 활성화되지 않았다.Firebase의 SignInWithEmailAndPassword

오늘은 Unity에서 UI 패널을 서서히 투명하게 만들고, 완전히 사라지면 HUD 패널을 켜주는 코루틴을 작성했다.Unity에서는 특정 작업을 시간에 따라 나눠서 실행하고 싶을 때 코루틴(Coroutine)을 사용한다. 일반적으로 코드는 한 번 실행되면 끝나지만, 코루

오늘은 유니티의 생명주기에 대해 정리해봤다. 생명주기를 제대로 이해하면 코드 실행 순서를 예측하고 최적화하는 데 큰 도움이 된다.Unity 생명주기의 주요 메서드오브젝트가 생성될 때 가장 먼저 호출된다.주로 초기화 작업이나 싱글톤 패턴 구현 시 사용된다.DontDest
오늘은 Unity에서 Action을 활용하는 방법에 대해 정리해봤다.Action은 CAction 기본 사용법위처럼 Action은 매개변수를 받을 수도 있고, 필요에 따라 다양한 형태로 사용할 수 있다.Unity에서의 활용 예시이벤트 시스템 구현게임 내에서 특정 이벤트가
MeleeState에서 animator.SetBool("IsSwing", false);를 설정했음에도 불구하고 player.SetMoveLock(false);가 바로 적용되지 않는 문제가 발생했다. 애니메이션이 끝난 후에 바로 상태가 바뀌어야 하는데, IsSwing이

오늘은 오브젝트 풀을 활용한 수류탄 구현 과정에서 발생한 문제를 해결했다.처음에는 잘 작동하는 것처럼 보였지만, 특정 상황에서 폭발 이펙트가 재생되지 않고, 수류탄이 사라지지 않는 문제가 발생했다.오브젝트 풀에서 수류탄을 가져와 던지면, 첫 번째 던질 때는 정상적으로
Enemy가 ChaseState로 정상적으로 넘어가는 것 같았는데, 실제로는 처음 플레이어 위치로만 이동하고 멈춰 있었다.ChaseState.Enter()에서 한 번만 agent.SetDestination(target.position);을 실행하고 끝이었음.NavMes
오늘은 보스 AI의 상태 패턴을 구현했다. 보스의 행동을 다양한 상태로 나누어 관리하기 위해 StateMachine을 활용했고, 각 상태별로 코루틴을 사용하여 애니메이션과 행동을 제어하도록 구성했다.보스의 행동을 결정하는 상태로, Enter()에서 Think() 코루틴

B 버튼을 누를 때마다 발사 모드(FireMode)를 Auto → Single → Burst 순서로 변경하는 기능을 구현했다.총기 발사 모드를 변경할 때, 모드가 순환하도록 만들고 싶었다.즉, Auto → Single → Burst → 다시 Auto 형태로 돌아가야 했
오브젝트 풀에서 재사용된 적이 처음 소환될 때는 잘 움직이지만, 다시 풀에서 꺼내졌을 때는 타겟을 향해 이동하지 않고 가만히 있는 문제가 발생했다.적이 재사용될 때 NavMeshAgent와 SetDestination()을 설정했지만, 여전히 움직이지 않았다.디버깅해 보

게임 루프 전체 실행 시간을 나타냄.일반적으로 16.67ms(60FPS) 이하로 유지하는 것이 목표.첫 프레임에서 시간이 길어지는 경우, 초기화 로직 최적화 필요.점진적으로 GC 실행되면서 걸린 시간.2~3ms 정도는 괜찮지만, 지속적으로 높거나 10ms 이상 튀면 최

오늘은 갑자기 게임 인벤토리에서 아이템을 드래그해서 다른 슬롯으로 옮기는 기능을 직접 구현해보고 싶어졌다.많은 게임들에서 인벤토리 아이템을 마우스로 드래그해서 위치를 바꾸는 기능이 당연하게 들어가 있는데, 내가 직접 만들어 본 적은 없었다.마침 ScriptableObj

오늘은 문득 게임에서 자주 보이는 인벤토리 드래그 앤 드롭 기능이 떠올라, 유니티에서 인벤토리 리스트와 연동시키고 직접 구현해봤다.아이템 데이터는 ScriptableObject로 관리하고, 슬롯 UI를 동적으로 생성한 후 드래그 앤 드롭으로 아이템 위치를 바꾸는 기능까

오늘은 FPS 게임처럼 방향이나 거리감에 따라 소리가 달라지는 3D 사운드를 Unity에서 구현해봤다.플레이어가 소리에 가까워지면 소리가 커지고, 멀어지면 작아지도록 만들기왼쪽/오른쪽 등 소리의 방향성을 적용하기유니티에서는 기본적으로 3D 사운드를 구현할 수 있는 기능

오늘은 Unity에서 씬 전환 없이 동일한 씬 내에서 로딩 화면을 구현하는 방법을 정리했다.게임을 하다 보면 씬을 바꾸지 않고 내부에서 데이터나 오브젝트를 비동기로 로드해야 할 때가 있는데, 이때 사용자에게 로딩 중이라는 표시를 해주는 게 UX적으로 중요하다.예를 들어

오늘은 Unity에서 룰렛 형식의 뽑기 시스템을 직접 구현해봤다.아이템 데이터는 ScriptableObject로 관리하고, 룰렛 칸은 UI로 자동 생성되도록 했다.룰렛 원판 위에 아이템 정보가 UI로 표시되고버튼을 누르면 룰렛이 회전하면서 아이템을 랜덤으로 뽑고각 아이

오늘은 Unity에서 Microphone API를 사용해서 마이크 입력을 받아 UI로 시각화하는 시스템을 만들어봤다.마이크로 입력된 소리의 크기를 감지한다.감지된 볼륨을 Image.fillAmount로 시각화한다.조용할 땐 바가 0에 가깝고, 소리를 내면 자연스럽게 올

기존에는 prefabs 배열 하나로 Bullet과 Enemy를 같이 관리했는데,종류를 구분하기 위해 PoolKey Enum을 만들어 관리하도록 변경했다.ObjectPoolManager에서 Get(PoolKey key)로 종류를 명확히 지정하면,총알과 적 프리팹을 구분해

오늘 한 일: 1:1 게임인 걸 감안해서 자동 조준/발사를 가볍게 리팩토링했다.핵심은 타깃 탐색 제거(=TargetRef에 단일 적 캐시), 직선/포물선 두 가지 발사 모드, 리드샷 옵션 제거.나중에 봐도 바로 이해할 수 있게 수식/의도/셋업 체크리스트까지 정리.1:1