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")]..
코루틴 사용중 팅김 현상과 해결
·
📖TIL/🤔발생한 문제와 해결
코루틴을 배우는 과정에서 작성한 코드에 문제가 발생게임 실행 후 유니티 엔진이 팅겨버리는 신기한 체험을 했다.( 신기하긴 한데 두번 다시 겪고 싶지 않은 현상이었다. ) ▼ 문제의 코드public class EnemySpawner : MonoBehaviour{ [Header("Prefab")] [SerializeField] private GameObject enemyPrefab; [Header("Settings")] [SerializeField] private float spawnDelay = 1.5f; [SerializeField] private int limit = 0; [Header("Coordinate")] [SerializeField] private floa..
WaitForSeconds vs WaitForSecondsRealtime
·
🧊Unity Basic/코루틴&이벤트
WaitForSeconds vs WaitForSecondsRealtimeUnity 코루틴 ( Coroutine ) 에서 시간을 잠시 멈추는 기능을 다룰 때 자주 등장하는 클래스이다.이름은 비슷하지만 시간을 어떻게 계산하느냐의 차이가 있다.구분설명영향을 받는 요소WaitForSecondsTime.timeScale ( 시간 배율 ) 의 영향을 받는 대기한다Time.timeScaleWaitForSecondsRealtime실제 시간 ( Real - time ) 을 기준으로 대기한다X 1. WaitForSeconds 게임의 시간 배율 ( Time.timeScale ) 에 영향을 받는다예시 : Time.timeScale = 0.5f → 게임 속도가 절반 → 1초 대기는 실제 2초 걸린다예시 : Time.timeS..
IEnumerable vs IEnumerator
·
🧊Unity Basic/코루틴&이벤트
IEnumerable vs IEnumerator 1. IEnumerableIEnumerable 은 IEnumerator 와 함께 자주 등장하는 개념이다.IEnumerable 은 C# 에서 반복 가능한 ( 순회 가능한 ) 컬렉션을 나타내는 인터페이스이다.namespace System.Collections{ public interface IEnumerable { IEnumerator GetEnumerator(); }}이 객체는 내부의 요소들을 하나씩 꺼내서 반복할 수 있다는 의미이다.foreach 문을 사용할 수 있게 해준다List , Array , Dictionary , Queue , Stack 같은 대부분의 컬렉션 클래스들은 모두 IEumerable 을 구현한다. 2. IE..
코루틴 ( Coroutine )
·
🧊Unity Basic/코루틴&이벤트
코루틴 ( Coroutine )유니티에서 함수의 실행을 일시중지하고 나중에 다시 이어서 실행할 수 있는 유용하고 범용적으로 사용하는 개념이다.일반 함수의 반환인 return 대신에 yield 키워드를 사용한다.yield 키워드 사용시 사용이 일시 중지되고 다른 코드를 실행하거나 유니티에게 제어권을 반납하고 다음 실행시 중단점부터 이어서 실행한다. 이런 동작 방식 때문에 마치 비동기적으로 작업을 처리하는 것 같지만 코루틴은 라이프 사이클 내에서 직렬적으로 일을 처리하는 동기 작업이다.유니티 프로그래밍에서 코루틴은 굉장히 자주 사용되고 아주 중요한 개념이다.그 만큼 사용시의 주의점 또한 아는 것이 중요하다. 보통 함수는 한 번 호출되면 제어권을 쥐고 끝까지 실행되고 종료된다.다른 함수를 실행하고 싶어도 이전..
251017
·
📖TIL
코루틴코루틴은 유니티에서 시간을 제어하며 실행 흐름을 잠시 멈췄다가 다시 이어주는 기능이다.시간 지연용 코드가 많아질수록 흐름을 추적하기 어려워지니까 필요한 부분에 써야한다.다른 코드들와 코루틴의 차이점은다른 코드들로 이루어진 함수는 그 함수가 끝날때까지 제어권을 가지고 있으므로함수가 끝나지 않으면 다른 함수들을 실행할 수가 없는데코루틴은 사용시 다른 함수들도 얼마든지 사용 가능하기 때문에 유용하다