Waypoint
·
🧊Unity Basic/트랜스폼
웨이포인트 ( Waypoint )웨이포인트는 게임 오브젝트가 이동할 경로상의 위치 지점을 의미한다.Unity 에 내장된 클래스나 키워드가 아니라 , 개발자가 Transform 좌표를 여러 개 지정하 만든 사용자 정의 지점 집합이다.경로상의 포인트라는 의미로 많이 사용될 뿐 , Unity 가 특별히 제공하는 클래스나 타입은 아니다.웨이포인트는 개발자가 경로 이동 시스템을 구현할 때 관례적으로 많이 사용하는 이름이다.게임 오브젝트 ( NPC , 적 AI , 카메라 등 )가 이동할 경로나 루트를 따라가기 위해 거쳐야 할 위치 정보를 저장한 것이다.순찰하는 경비병이 일정한 길을 반복해서 돌아다닐 때카메라가 특정 경로를 따라 움직일 때자동차 , 드론 , 몬스터가 미리 설정된 길을 따라 이동할 때이 때 각 지점이 ..
Time.deltaTime
·
🧊Unity Basic/프레임&델타타임
Time.deltaTime유니티의 Time.deltaTime 은 초보 때는 프레임마다 곱해주는 값 정도로 배운다.실제로는 프레임 독립적인 게임 로직을 유지하기 위한 핵심 개념이다. Time.deltaTime 은 지난 프레임과 이번 프레임 사이의 시간 ( 초 단위 ) 를 의미한다. 게임이 60 FPS ( 초당 60 프레임 ) 으로 돌아가고 있다면 한 프레임이 약 1/60 = 0.0167 초 정도가 걸린다.그럼 Time.deltaTime 은 대략 0.0167 값을 가지게 된다.반대로 30 FPS ( 초당 30 프레임 ) 이라면 한 프레임당 시간이 더 길어져서 Time.deltaTime = 0.0333 정도가 걸린다. Time.deltaTime 이 필요한 이유프레임 속도는 PC 성능이나 GPU 부하 , 장면..
251019
·
📖TIL
디자인패턴Adapter Pattern어댑터 패턴은 서로 다른 인터페이스를 가진 클래스들을 함께 작동하게 하고 싶을 때 사용Client : 해당 패턴을 사용하는 사용자
얕은 복사 vs 깊은 복사
·
⭐C Sharp/00. 문법
얕은 복사 ( Shallow Copy ) vs 깊은 복사 ( Deep Copy )얕은 복사 ( Shallow Copy )객체의 필드 값만 복사하고 , 참조형 필드가 가리키는 객체는 복사하지 않는다원본과 복사본이 같은 참조형 객체를 공유하게 된다 ▼예시 코드class Person{ public string Name; public Address Addr;}class Address{ public string City;}Person p1 = new Person { Name = "HoChan", Addr = new Address { City = "Seoul" } };Person p2 = p1; // 얕은 복사p2.Addr.City = "Incheon"; Console.WriteLine(p1.Ad..
Struct
·
⭐C Sharp/📌문법 사전
Struct ( 구조체 )값 형식의 사용자 정의 자료형으로 , 상속은 불가능하지만 인터페이스는 구현 가능// 구조체 선언struct 구조체이름{ // 변수(필드) 자료형 변수명; // 생성자 public 구조체이름(자료형 매개변수) { 변수명 = 매개변수; } // 메서드 public void 함수이름() { // 실행할 코드 }}// 구조체 사용구조체이름 변수명 = new 구조체이름(값);변수명.함수이름(); ⚠️ 주의struct 는 값 형식 ( Value Type ) 으로 , 스택에 저장된다클래스와 달리 상속 불가 , 기본 생성자 정의 불가인터페이스 구현은 가능하다생성자를 정의할 경우 모든 필드를 초기화해야 한다참조형처럼 ..
Adapter Pattern
·
🧊Unity Basic/디자인패턴
어댑터 패턴 ( Adapter Pattern )프로그램 제작이나 유지보수 시에는 다양한 상황을 마주할 수 있다.기존의 코드를 변경시키지 않으면서도 다형성을 접목해 여러 객체들을 다룰 수 있어야 한다.다른 디자인패턴과 마찬가지로 구현 코드에 집중하기 보다는 패턴의 본질에 집중하고다양한 방식으로 구현될 수 있음을 인지해야 한다.어댑터 패턴은 C# 개발에서도 굉장히 자주 등장하는 패턴이다.서로 맞지 않는 코드들을 연결해서 함께 작동하게 만드는 다리 역할을 하는 패턴이다. 서로 호환되지 않는 인터페이스를 가진 클래스들을 연결 ( 호환 ) 시켜주는 중간 변환기 ( bridge ) 역할의 디자인 패턴이다이미 존재하는 코드 ( 또는 라이브러리 ) 를 수정하지 않고 , 새로운 시스템과 연결해서 함께 작동하도록 만드는 ..
Design Pattern
·
🧊Unity Basic/디자인패턴
디자인 패턴 ( Design Pattern )프로그램 제작에 있어서 기존의 코드를 재사용하거나 수정해야 하는 경우가 발생할 수 있다.하지만 대상이 되는 코드의 길이가 너무 길거나 작성한지 오래되어 레거스 코드가 되어버린 경우코드의 의도를 알아보기 힘들고 섣불리 수정할 수 없는 경우도 있다.또는 기존의 코드를 수정하지 않으면서 객체지향의 다형성을 응용해야 하는 경우도 있을 수 있다.디자인 패턴이란 자주 등장하는 문제를 효율적으로 해결하기 위한 , 재사용이 가능한 설계 템플릿이다.프로그래밍 중 반복적으로 등장하는 구조적 / 행동적 문제를 미리 검증된 형태로 해결하는 설계 방법이다.유니티에서는 객체 생성 , 관리 , 상호작용 구조를 체계적으로 짜기 위해 디자인 패턴을 자주 활용한다. ▼ 유니티에서 디자인 패..
Coroutine 핵심 키워드
·
🧊Unity Basic/코루틴&이벤트
Coroutine 핵심 키워드 정리키워드설명IEnumerator코루틴 함수의 반환형. yield 를 사용할 수 있게 해준다.yield return코루틴을 잠시 중단 ( 대기 ) 하고, 이후 다시 이어지게 하는 핵심 구문이다.yield break코루틴을 즉시 종료한다StartCoroutine( )코루틴을 실행시킬 때 사용하는 함수이다.StopCoroutine( )특정 코루틴을 중단할 때 사용한다.StopAllCoroutines( )현재 실행 중인 모든 코루틴을 중단한다. 대기 관련 정리구문설명yield return null;한 프레임 대기 후 다음 코드 실행 ( Update( ) ) 와 비슷하다yield return new WaitForSeconds(float seconds);지정한 초 만큼 대기한다.y..
가끔 적이 한방에 Destroy 경우
·
📖TIL/🤔발생한 문제와 해결
적의 체력을 세팅하고 탄환으로 적을 맞출시적의 체력이 감소하고 탄환 오브젝트는 삭제하는 코드를 작성했다. 의사코드Enemy 체력을 5 로 세팅Bullet 이 EnemyTag 와 충돌했을때Enemy Hp--if ( Hp == 0 ) Destroy ( gameObject )bullet 은 Destroy ( gameObject ) ▼ 발생한 문제여기서 또 문제가 발생했다.적용이 되는것 같으면서도 가끔 Enemy 가 한 방에 Destroy 되는 현상이 발생내가 모르는 사이 크리티컬 확률이 생긴건가??public class Enemy : MonoBehaviour{ [Header("Info")] [SerializeField] private int hp = 5; [Header("Movement")]..