본문 바로가기

전체 글

(18)
유니티 라이프 사이클(Life Cycle)에 대해 알아보ㅈㅏ! OnDisable라이프 사이클이란? 유니티 엔진에선 저희가 실행하지 않아도 자동으로 실행해주는 함수들이 있는데 이 함수들이 호출되는 주기를 라이프 사이클이라고 합니다. 라이프 사이클 실질적인 라이프 사이클은 이렇지만 이번에는 큰 것들만 순서대로 정리해보도록 하겠습니다! 1) Initialization Awake: 스크립트가 실행될 때 한번씩만 호출되며 게임의 상태 또는 변수 초기화로 사용합니다. 오브젝트가 비활성화 상태일 경우 호출되지 않지만 스크립트가 비활성화 상태인 경우엔 호출되고, 코루틴으로 실행할 수 없다는 특징이 있습니다. OnEnable: 게임 오브젝트가 비활성화 상태에서 활성화 될때마다 호출됩니다. Start: 스크립트가 활성화 될 때 한번만 호출되며 오브젝트나 스크립트가 비활성화 상태일때는..
(모델링)3D캐릭터의 구조 및 개념에 대해 알아보ㅈㅏ! 이번 시간엔 모델링 파이프라인에 대해 알아볼 겁니다! (강의를 보며 공부한 걸 정리하였습니다.) 3D 모델링이란? 모델링이란 컴퓨터 그래픽을 이용하여 가상공간에 3차원 모형을 만드는 작업을 말합니다. 이러한 모델링은 종이를 접어 만드는 페이퍼 크래프트와 별반 다르지 않습니다. 페이퍼 크라프트 모델링 평평한 종이에 도안이 컬러로 프린트 되어있음 텍스쳐 도안이 프린트 되어있는 물리적인 종이 쉐이더 종이의 재질 쉐이더 페이퍼 크라프트의 도안에 있는 접는 선을 기준으로 나있는 조각 폴리곤 이처럼 페이퍼 크라프트와 모델링은 같은 원리로 이루어져 있고, 특히나 손맵 같은 경우에는 더욱 이런 원리가 적용되어있습니다. 적은 폴리곤을 사용하면서 텍스쳐로 최대한 색상과 음양을 표현하는 페이퍼 크라프트를 연상시킬 수 있습니..
(유니티) 싱글톤 패턴에 대해 알아보ㅈㅏ! 싱글톤이란? 싱글톤 패턴이란 하나의 인스턴스만 존재하며, 전역적으로 접근할 수 있는 클래스 디자인 패턴 입니다. 어떠한 상황에 사용하는가? 게임 매니저나 오디오 매니저 등 게임 내에 한개만 필요하고 여러곳에서 접근을 할 수 있도록 만들어야 할 때 사용합니다. 싱글톤 사용하는법 싱글톤은 크게 두가지로 나누어서 적용시킬 수 있는데 첫번째로 스크립트에 삽입하는것과 싱글톤 스크립트를 상속시키는 방법이 있습니다! 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) 여러 단어를 사용할 때 맨 처음 단어를 제외한 단어들의 앞글자를 대문자로 적습니다. 낙타의 봉우리..
똥 피하기 게임을 만들어보ㅈㅏ!(3. Instantiate를 사용하여 똥을 만들기, 게임 빌드하기) 이번 시간에 똥 피하기 게임을 완성하도록 하겠습니다! 시작하기 앞서 저희는 Prefab이라는 개념을 배우고 들어가겠습니다. Prefab이란? 재사용이 가능한 GameObject를 말합니다. 프리펩은 보통 같은 컴포넌트가 붙어있는 여러 오브젝트(적 몬스터, 나무, 건물 등)를 만들 때 사용됩니다. 왜냐하면 오브젝트를 만든 이후 수정이 필요할 때 Prefab의 경우에는 부모 프리펩에서 바꾼 값이 자식 프리펩에 적용되기 때문에 매우 편리하게 여러 오브젝트의 값을 바꿀 수 있습니다. 이제 직접 만들어봅시다! 만드는 방법은 간단합니다. 하이라키창에서 Poop 오브젝트를 프로젝트 창으로 끌어다 두시면.. 오른쪽 하이라키 창에 있는 poop의 아이콘이 파란색 상자로 변했으면 Prefab화 된 겁니다! 이번엔 Poop..
똥 피하기 게임을 만들어보ㅈㅏ!(2. 플레이어와 똥 오브젝트 만들기, Rigidbody와 Collider 이해하기) 이번엔 게임 씬을 구현하겠습니다! 게임 씬에는 플레이어와, 플레이어가 떨어지지 않도록 막아주는 바닥, 똥 오브젝트, 똥 오브젝트를 생성해줄 스크립트가 필요하겠네요! 먼저 바닥부터 만들어보죠! Square를 한 개 만들고 Square의 이름을 Ground로 바꿔주겠습니다. 이후 Add Component에서 Boxcollider 2D를 추가해줍시다! 이제 이 오브젝트를 카메라의 아래에 깔아줍니다. 바닥은 이게 끝입니다. 정말 쉽죠? 다음으로 만들건 플레이어입니다. Circle 오브젝트를 하나 만들고 이번엔 이름과 태그를 Player로 바꾸겠습니다. 저는 사이즈랑 색을 조금 바꿔줬습니다! Player오브젝트에 rigidbody 2D와 Circle Collider 2D를 추가해주고 플레이어 코드를 작성하러 가기..
깃허브에 유니티 프로젝트를 올려보ㅈㅏ!(깃 설치하기) 오늘은 깃허브에 유니티 프로젝트를 올려볼 겁니다! 먼저 깃허브와 깃에 대한 설명을 하고 들어가 보죠. 깃(Git)은 로컬에서 관리가 되는 버전 관리 시스템입니다. 본인의 코드와 그 수정 내역 등을 기록하고 관리해줍니다. 깃허브(Github)는 이러한 깃을 클라우드 서비스로 운영을 해준다는 점이 다릅니다. 그렇기에 깃을 사용하는 것보다 코드의 공유도 간편하고 여러 사람들이 한 프로젝트에 참여할 수도 있습니다. 그렇다면 왜 귀찮게 코드의 버전을 관리하고 수정 내역 등을 기록하는 걸까요? 개발을 하다 보면 어느 부분에서 오류가 났는지 모르겠을 때 이전 커밋을 보며 변경점을 찾기 수월해지기 때문에 개발 시간이 단축됩니다. 다음으론 준비물을 다운로드하겠습니다! 먼저 깃을 다운로드할 건데 https://git-sc..