본문 바로가기

기타/패스트캠퍼스 Unity

(31)
유니티 입문 패스트캠퍼스 챌린지 최종 후기 패스트캠퍼스에서 다른 강의를 듣다가 우연히 환급 챌린지를 한다고해서 신청했었다. 참가 조건을 자세히 안읽어보고 신청했었는데 30일동안 쉬는날 없이 매일 강의를 들어야하는 조건이었다. 혹시 다음에 환급 챌린지에 참여해 보고 싶은 사람이 있다면 매일 들을 각오가 꼭 필요하다. 비슷한 유니티 입문 강의는 사실 요즘 유튜브에도 많이 제공된다, 유튜브에서 유니티 무료 강의가 꽤 올라와있었고 본적도 있었는데 경험삼아 게임을 만들어보고 싶다 정도의 깊이로 접근한다면 우선 이런 강의를 따라해보는것을 추천한다. 이 강의는 실습하면서 생각한것 이상으로 깊이있는 부분까지 터치하기 때문이다. 그리고 강의자체가 '중급자'용으로 설정되어있다. 처음에는 C# 입문 강의가 배치되어있는데 조금 보고나서 흥미가 생기지않는다면 스킵하는것..
유니티 입문 패스트캠퍼스 챌린지 30일차 비교적 간단할것 같던 데미지 수치의 표시를 하는 과정이 꽤 복잡한편이었다. 데미지 숫자를 계속 보여줄게 아니기때문에 State를 관리해서 시간이지나면 사라지게 만들어야하고 사라질때 서서히 흐려지며 사라지도록 애니메이션 효과가 필요했다. 총알 데미지를 화면에 표시하기 데미지 UI 클래스 - UIDamage 스크립트 생성 - using UnityEngine.UI 추가 - SerializeField로 Text damageText 변수 추가 - 상태 열거형 정의 None/SizeUp/Display/FadeOut - ShowDamage 메소드 - Reset 메소드 - UpdateDamage 메소드 - string FilePath 프로퍼티 데미지 오브젝트 만들기 - Text UI를 추가해서 DamageText 라고..
유니티 입문 패스트캠퍼스 챌린지 29일차 이번시간에는 플레이어 상태 창을 만들고 점수 창을 나타내고 hp 게이지를 보여주는 역할까지 구현해야한다. 미사일을 발사해서 적을 격파할 때 마다 점수가 올라가야 한다. 그리고 적 미사일로부터 타격을 받을때 마다 hp 게이지가 줄어들어야 한다. 플레이어의 점수 정보 보여주기 플레이어 상태 패널 클래스 - PlayerStatePanel 스크립트를 생성 - BasePanel을 상속하도록 변경 하고 Start와 Update 제거 - using UnityEngine.UI 추가 - SerializeField로 Text scoreValue 추가 - SetScore 메소드를 추가해서 scoreValue.Text에 값을 입력 플레이어 상태 패널 UI 만들기 (1) - Scene에서 Canvas 하위에 패널 생성 - 적절..
유니티 입문 패스트캠퍼스 챌린지 28일차 강의가 이전에는 같이 코딩을 하면서 진행되었는데 어느순간부터 이미 작성된 코드를 보면서 진행하게된다. 조금 따라가기 힘든 느낌이 든다. 순서대로 작성하지 않으면 일부 코드를 빠뜨리거나 이해하기도 더 난해한것 같다. 이전 강의에서 다루었던 uGUI를 실제로 적용하는 과정이다. 패널 클래스와 매니저 클래스 제작하기 기본 패널 클래스 만들기 - BasePanel 클래스 생성 - 각 패널 클래스의 최상위 클래스 - 패널 클래스들이 공통적으로 사용할 기능 구현 - InitializePanel 메소드 - DestroyPanel 메소드 - Show 메소드 - Close 메소드 좌상단에 빨간색 게이지를 생성해서 플레이어 체력을 보이도록 구성하려 한다. 패널 관리자 만들기 (1) - PanelManager 스크립트 생성..
유니티 입문 패스트캠퍼스 챌린지 27일차 패널과 이미지 Panel의 개념과 사용법 - 상단 메뉴의 GameObject/UI/Panel로 생성 - UI 객체들의 백그라운드가 되는 이미지 - 컴포넌트의 구성은 Image와 동일하지만 속성들이 다름 - UI를 창 단위로 관리하기에 용이 - 창의 공통적인 동작을 구현한 클래스를 만들어서 사용하고 필요시 상속하기를 추천 Image의 사용 방법 - 상단 메뉴의 GameObject/UI/Image 로 생성 - Source Image에 원하는 텍스쳐 이미지를 설정 - Color 설정 가능 - Material 설정을 이용하여 특정 쉐이더의 이용이 가능 프로그래스 바(게이지) 만들기 - 상단 메뉴의 GameObject/UI/Slider로 생성 - 하위 오브젝트로 Background, Fill Area, Handl..
유니티 입문 패스트캠퍼스 챌린지 26일차 uGUI로 주요 정보를 UI로 보여주기 uGUI 개요 유니티에서의 UI 사용 - 레거시 UI - ezGUI - NGUI - uGUI 인터페이스를 표현하기위해 여러가지 방법이 있었다. 유니티에서 직접 제공하는것도있고 서드파티로 제공되는것도 있었지만 uGUI를 현재는 많이 사용한다고 볼 수 있다. uGUI 소개 - 별도의 UI카메라가 필요하지 않음 - Canvas의 하위 게임오브젝트로 UI가 구성됨 - 텍스트, 이미지, 버튼 등 기본 UI Component 제공 - 스크립트를 링크하여 이벤트 발생시 메소드 호출 - Panel 단위로 구성하면 관리에 용이함 uGUI 오브젝트 공통 - Transform을 상속받은 RectTransform을 대신 사용함 - Anchor Presets를 이용하여 간편하게 정렬 - ..
유니티 입문 패스트캠퍼스 챌린지 25일차 뭔가 눈에 보이는걸 만들어 갈 때는 즐겁게 진도가 쭉쭉 나갔던것 같은데, 최근에는 약간 이론 위주로 성능 최적화를 하는 내용에 대해서 계속 나오게된다. 간단한 Prefab 캐시 시스템 제작 (5) Effect 캐시를 위한 수정 (1) - EffectManager에 캐시를 위한 정보 추가 - Load 메소드 - Prepare 메소드 - GenerateEffect 메소드에서 캐시를 사용하도록 수정 - RemoveEffect 메소드 추가 Effect 캐시를 위한 수정 (2) - CFX_AutoDestructShuriken 클래스를 모방하여 수정한 AutoCachableEffect 클래스 제작 - WarFX에서 사용중인 이펙트 프리팹을 복제해서 Resources/Prefabs로 이동 - 복제된 프리팹에서 기존 ..
유니티 입문 패스트캠퍼스 챌린지 24일차 이번시간에는 작게 코드 수정을 하면서 최적화를 해 나가는 과정이다. 쉽게 생각해서 미리 사용할 총알을 30개 정도 만들어두고 돌려가면서 쓰고려고 한다. 총알을 필요할때마다 그때 그때 생성하려면 부하가 많이 걸리는 작업이므로 이를 줄이는 작업이다. 완전히 동일한 상황은 아니지만 일반적인 프로그래밍 상황에서도 풀을 만들어서 풀 안에서 자원을 나눠 가져 쓰는경우는 많이 볼수있다. 적 및 총알 생성/삭제에 대한 부하를 해결하기 간단한 Prefab 캐시 시스템 제작 (1) - 프리팹 생성 부하를 감소 시키는 목적 - Instantiate 부하를 줄이기 위함 - 적 캐시 - 총알 캐시 - 이펙트 캐시 간단한 Prefab 캐시 시스템 제작 (2) PrefabCacheSystem 클래스 - MonoBehaviour를 ..
유니티 입문 패스트캠퍼스 챌린지 23일차 폭발등 이펙트 처리하기 Particle System - Scene안에 다수의 작은 2D 이미지를 생성하고 애니메이션을 동작시키며 액체, 구름 및 불꽃 같은 이펙트를 만드는데 사용되는 컴포넌트 - 다양한 속성을 인스펙터 상에서 여러 개의 모듈로 조절 - 게임을 플레이하지 않아도 Scene 뷰에서 플레이 해볼 수 있음 파티클이란 3d공간 어디에서든 카메라를 통해 쳐다봐도 2d로만 보이는 아주 작은 이미지로 이루어진 효과이다. 3d게임을 자주 해보았다면 폭발이나 불타는부분이 미묘하게 2d처럼 보인적이 있었던것을 다들 경험 해 본적이 있었을것 같다. 파티클 시스템을 처음 추가하면 사진처럼 위로 솟구치는 정사각형 이미지가 자동으로 생성된다. 이 효과를 원하는 방향으로 분사되게하고 원하는 이미지를 출력하도록 해서 ..
유니티 입문 패스트캠퍼스 챌린지 22일차 적이 죽었을 떄의 처리와 점수에 대한 처리하기 점수 처리 클래스 만들기 - 간단한 점수 누적 처리 - 누적 점수 변수와 누적 메소드 추가하기 - 시스템 매니저가 점수 처리 클래스 소유 GamePointAccumulator 스크립트 생성 public class GamePointAccumulator { int gamePoint = 0; public int GamePoint { get { return gamePoint; } } public void Accumulate(int value) { gamePoint += value; } public void Reset() { gamePoint = 0; } } 그리고 이 class를 SystemManager스크립트에서 사용하도록 한다. 적 사망시 점수 누적 메소드 호출..