본문 바로가기

유니티

(11)
유니티로 배우는 게임 디자인 패턴 2판 책 설명 책 제목: 유니티로 배우는 게임 디자인 패턴 제2판 내용: 유니티를 기반으로 게임에 적용할 수 있는 디자인 패턴에 대한 설명 한줄평: 디자인 패턴이 다양하고 자세하게 적혀있어 정말 맛있다! 특징 이 책의 특징으로는 유니티에서 사용할만한 디자인 패턴을 아주 깔ㅡ끔하고도 친절하게 설명해주고 있습니다. 또한 코드를 마디 마디 설명해주기 때문에 이해가 빠르게 되었습니다. 개인 감상평 평소 혼자 게임개발을 하고 있어서 디자인 패턴은 싱글톤과 옵저버 패턴만 사용하고 있었고 다른 패턴들의 적용 법이나 원리는 공부를 제대로 한 적이 없었는데 아 책에서 나오는 디자인 패턴들을 보니 굉장히 편해 보이는 패턴들이 많이 보였습니다. 또한 개발을 할 때 들어보지 못한 이벤트 버스와 데커레이터, 퍼사드 패턴 등에 대한 ..
무적 기능을 구현해보ㅈㅏ!(코루틴) 오늘은 코루틴을 사용하여 무적 기능을 구현해보도록 하겠습니다! 먼저 저는 두가지 방법을 생각해보았는데 1. bool값 이용 2. layer 이용 이중 bool값을 이용하는 방법에 대해 설명을 해보도록 하겠습니다. 코드 [SerializeField] private bool invincibility; 저희가 무적인지 아닌지 판단할 때 사용하기 위한 bool 형식의 변수입니다. private void OnTriggerEnter2D(Collider2D col) { if (col.CompareTag("Bullet")) { OnDamaged(); } } 저는 2D상에서 구현을 하였기 때문에 OnTriggerEnter2D를 사용하였지만 3D이신 분들은 OnTriggerEnter를 사용해주시면 되겠습니다. 만약 닿은 ..
UGUI에 대해 알아보ㅈㅏ! UGUI란? Unity Game User Interface의 줄인말로 유니티에서 사용되는 GUI를 부르는 용어입니다. 하이라키창에서 우클릭을 해보면 UI라는 칸이 나오는데 이 UI의 항목별로 알아보는 시간을 가져보죠! UI요소 Canvas -UI의 전체적인 배치를 위한 영역입니다. Text -캔버스 위에 텍스트를 표시합니다. Image -캔버스 위에 원하는 이미지를 표시합니다. RawImage -캔버스 위에 원하는 이미지를 표시합니다. 주로 텍스쳐를 랜더링하기 위해 사용합니다. Button -캔버스 위에 클릭이 가능한 버튼을 생성합니다. 버튼을 클릭했을 시에 함수를 발동시키는 이벤트를 넣을 수 있습니다. Toggle -캔버스 위에 클릭이 가능한 토글 버튼을 생성합니다. 버튼을 클릭했을 시에 함수를 발동시..
모델링 파이프라인에 대해 알아보ㅈㅏ! 이번시간엔 모델링 파이프라인에 대해 알아볼겁니다! (강의를 보며 공부한걸 정리하였습니다.) 들어가기 앞서 UV란? 3D메쉬에 텍스쳐를 입힐 수 있도록 폴리곤들을 2D형태로 만들어준것을 말합니다 파이프라인 손맵 파이프라인 메쉬와 UV제작 zbrush를 사용하여 high poly와 low poly를 만들고 노멀맵과 AO를 추출하여 손맵의 베이스를 어느정도 만들고 하는 방법과 high poly를 만들지않고 바로 low poly를 만든 후 텍스쳐를 직접 그려나가는 방법이 있습니다. 요즘은 먼저 서술된 방법을 사용하는 사람들이 많지만 아직 실무에 있는 사람들중 두번째 방법을 고집하는 사람들도 있습니다. 페인팅 앱을 사용한 채색 (3D Coat) 완성된 low poly 위에 3D Coat나 C4D의 바디페인트등을 ..
유니티 라이프 사이클(Life Cycle)에 대해 알아보ㅈㅏ! OnDisable라이프 사이클이란? 유니티 엔진에선 저희가 실행하지 않아도 자동으로 실행해주는 함수들이 있는데 이 함수들이 호출되는 주기를 라이프 사이클이라고 합니다. 라이프 사이클 실질적인 라이프 사이클은 이렇지만 이번에는 큰 것들만 순서대로 정리해보도록 하겠습니다! 1) Initialization Awake: 스크립트가 실행될 때 한번씩만 호출되며 게임의 상태 또는 변수 초기화로 사용합니다. 오브젝트가 비활성화 상태일 경우 호출되지 않지만 스크립트가 비활성화 상태인 경우엔 호출되고, 코루틴으로 실행할 수 없다는 특징이 있습니다. OnEnable: 게임 오브젝트가 비활성화 상태에서 활성화 될때마다 호출됩니다. Start: 스크립트가 활성화 될 때 한번만 호출되며 오브젝트나 스크립트가 비활성화 상태일때는..
(유니티) 싱글톤 패턴에 대해 알아보ㅈㅏ! 싱글톤이란? 싱글톤 패턴이란 하나의 인스턴스만 존재하며, 전역적으로 접근할 수 있는 클래스 디자인 패턴 입니다. 어떠한 상황에 사용하는가? 게임 매니저나 오디오 매니저 등 게임 내에 한개만 필요하고 여러곳에서 접근을 할 수 있도록 만들어야 할 때 사용합니다. 싱글톤 사용하는법 싱글톤은 크게 두가지로 나누어서 적용시킬 수 있는데 첫번째로 스크립트에 삽입하는것과 싱글톤 스크립트를 상속시키는 방법이 있습니다! public class GameManager : MonoBehaviour { private static GameManager instance = null; void Awake() { if(instance == null) { instance = this; } else { Destroy(gameObject)..
코루틴에 대해 알아보ㅈㅏ! 오늘은 코루틴에 대해 알아보도록 하겠습니다! 코루틴은 어떤 상황에 사용할까? 보통 코루틴은 특정 행동을 지연시킬 때 사용하게 되는데, Update에서 시간을 지연시키는 행동을 하게 되면 currentTime = Time.deltaTime 이라는 코드를 매 프레임마다 실행시켜줘야해서 비효율적인 코드가 됩니다. 이러한 상황속에서 코드의 비효율적인 부분을 고칠 수 있는 게 코루틴입니다. 코루틴은 어떻게 선언할까? 코루틴을 선언할 때는 앞에 IEnumerator를 붙여줘야 합니다. IEnumerator TimeCheckCoroutine() { //cooooode yield return new WaitForSeconds(3f); } 이후 코루틴 함수 내에 제어권을 돌려주는 yield return을 적어줘야 하죠...
유니티에서 명명규칙과 코딩 규칙을 알아보ㅈㅏ! 오늘은 명명규칙에 대해 알아보겠습니다! 명명규칙이란? 프로젝트를 진행할 때 개발 생산성과 운영의 효율을 높이기 위해 지켜야 하는 규칙입니다. 보통 팀에서 정한 규칙을 따른 거거나 정한 규칙이 없으면 언어 자체 규칙을 따르기도 합니다. 왜 필요한가? 예를들어 협업을 한다고 생각해봅시다. 협업을 하던 도중 변수명이 A, b, aAb, asdf, LancelotsFavouriteColour 등 알아볼 수 없는 변수명이 있었고 이 변수를 만든 프로그래머는 현재 연락이 닿지 않습니다. 이러한 상황이 일어나면 곤란하겠죠? 그렇기 때문에 명명규칙을 지키며 코드를 작성하는 겁니다. 명명규칙 카멜 케이스(camelCase) 여러 단어를 사용할 때 맨 처음 단어를 제외한 단어들의 앞글자를 대문자로 적습니다. 낙타의 봉우리..