InputManager.cs 버튼입력을 위한 InputManager 스크립트를 작성하였다. Action을 사용하였는데 이는 반환값이 없는 메서드를 등록하는 델리게이트이다. Managers.cs의 Update()에서 OnUpdate()함수를 작동한다. Manage
시작에 앞서 폴더 구조를 다음과 같이 변경하였다.기존의 Resources.Load(string path) 함수는 Assets/Resources를 탐색한다.그렇기에 첫 사진과 같이 폴더를 정리하였다.ResourceManager를 통해 Prefabs폴더에 접근하여 프리팹을
기존에 키보드로만 이동했던 부분을 마우스 클릭을 통해 이동을 구현하였다.추가적인 기능 구별을 위해 Define.cs를 생성하였다.두 가지의 MouseEvent를 구현하기 위해 열거형 사용.MouseAction을 선언하였는데 이때 Action의 인자로 Define.Mou
CameraController.cs 레이캐스트를 활용하여 카메라와 플레이어 사이 벽이 있는 경우 카메라의 위치를 조절. 실행사진 [카메라와 플레이어 사이 벽 X] [카메라와 플레이어 사이 벽 O]
Animator Controller Anim_Test를 생성해서 unitychan의 controller에 넣어준다.더블클릭하면 위와 같은 화면이 나타난다. WAIT과 RUN 애니메이션을 사용할 예정이기에 기존 에셋에서 드래그 드롭으로 추가하였다.다음과 같이 코드를 작
여러 애니메이션을 섞어 자연스러운 동작 연출을 위해 사용한다.Animator에서 From New Blend Tree를 선택하여 노드를 생성한다.Blend Tree에서 섞을 애니메이션을 추가해주고 Parameter를 설정한다.Parameter의 값이 0에 가까우면 WAI
RUN과 WAIT의 Has Exit Time 체크를 해제하고 서로 연결한다.speed라는 매개변수를 추가하여 1보다 큰 경우 RUN을, 작은 경우 WAIT을 실행하도록 한다.상태에 따라 Animator의 매개변수 speed의 값을 수정하도록 하였다.
버튼을 다음과 같이 구성하였다.Canvas의 이름은 UI_Button, 버튼 이름은 PointButton, 텍스트 이름은 PointText, ScoreText.그리고 추가적으로 빈 게임오브젝트를 TestObject로 만들었다.Bind 함수는 UI의 자동화를 위한 함수로
UI_Button UIButton에 ItemIcon이라는 이미지 하나와 UIEventHandler.cs를 추가한다. 그리고 ItemIcon에도 UI_EventHandler.cs를 추가한다. UI_EventHandler.cs 인풋매니저에서 그랬듯 2개의 액션을 선언하였다. OnBeginDrag와 OnDrag는 각각 IBeginDragHandler, ...
UIEvent의 타입을 구분하기 위해 선언하였다.클릭과 드래그하는 액션 두 개를 선언하였다.게임오브젝트에 존재하는 UI_EventHandler.cs에 접근 또는 컴포넌트를 추가하는 함수이다.클릭이냐, 드래그냐에 따라 어떤 핸들러에 적용할지 구분된다.GameObject.
팝업용 UI를 위한 스크립트이다.UI_Base를 상속받는다.버튼은 팝업기능이라 정하였다.원래 UI_Base를 상속하던 것을 UI_Popup을 상속받는 것으로 변경하였다.즉 UI_Button은 UI_Popup을 상속받고, UI_Popup은 UI_Base를 상속받는다.두
Root 프로퍼티를 활용하여 ShowSceneUI나 ShowPopupUI에서 생성한 UI를 Root폴더 산하로 넣었다.SetCanvas 함수를 사용하여 UI의 sorting order를 정하였다.order가 높은 UI가 화면에 먼저 나타난다.가상함수 Init()을 구현
UI_Inven은 GridPanel과 UI_Inven_Item으로 이루어졌다.UI_Inven_Item은 이미지 아이콘과 텍스트로 이루어졌다.UI_Inven 팝업을 띄운다. 해당 과정에서 오브젝트가 생성되고 스크립트가 삽입된다.UI_Inven을 바인드한다.처음에는 인벤토
기존에 SceneManager가 존재하므로 SceneManagerEx를 작성하였다.Define에서 선언한 enum Scene에서 Scene의 이름을 추출해서 Scene을 호출하는 기능을 구현하였다.Clear함수는 BaseScene을 상속하는 클래스에서 구현할 함수이다
해당 코드를 작성하여 큐브에 첨부하고 플레이 한 결과 큐브에 닿을때마다 소리가 작동함을 확인.
기존에는 일일이 ResourceManager의 Load함수를 통해 클립에 접근해서 부담이 되었다.그걸 해결하기 위해 GetOrAddAudioClip함수를 만들었다.Clear함수는 씬 전환이 있을때 메모리를 비우기 위해 만들었다.사운드 뿐만 아니라 다른 매니저에 대해서도
단순히 풀링할 오브젝트인지 구분하기 위해 오브젝트에 부착할 스크립트이다.Pool 클래스이다.풀링할 GameObject인 Original과 게임오브젝트의 부모 오브젝트로 사용할 Root를 가진다.그리고 각 클래스는 Poolable 컴포넌트를 스택으로 가진다. Create
GameObject를 Load하는 경우 Pool매니저의 GetOriginal 함수를 사용하여 go에 접근한다.만약 풀링한 go가 있을 경우 해당 go를 반환한다. original이 Poolable 컴포넌트가 있는 경우 PoolManager에서 Pop함수를 통해 루트에
렬화라는 것은 추상적인 데이터를 전송 가능하고 저장 가능한 형태로 바꾸는 것을 의미한다.제이슨 파일을 토대로 정보를 읽어오는 것을 확인.
기존에 DataManager의 코드를 옮겨 작성하였다.LoadJson을 통해 제네릭 타입으로 파일을 읽어오는 것을 구현하였다.
플레이어가 클릭한 지점으로 이동하는데, 건물도 오르고 있다.Package Manager에서 AI Navigation을 설치한다.Navigation (Obsolete)를 선택.Bake를 누르면 다음과 같이 갈 수 있는 지역들이 하늘색으로 뜬다.Plants의 Static을
스탯을 위한 스크립트이다. 몬스터가 될 Knight에 붙여주었다.Stat을 상속해서 경험치와 재화를 추가하였다.Player에 붙여주었다.PlayerStat \_stat을 추가 하여 주었다.기존에 moveDist에서 \_speed에 해당하는 것을 \_stat.MoveSp
커서 변경이 잘 이루어지는 것을 확인.
마우스의 상태를 추가하였다.마우스의 왼쪽 버튼을 누르는 순간, 홀드, 떼는 순간을 위한 코드를 추가하였다.처음으로 눌렀을 때 누른 것에 따라 \_lockTarget을 설정해주었다.나중에 몬스터의 락온 하기 위한 변수이다.
PlayerController에서 구현한 기능을 새로 스크립트를 파서 옮겨주었다.해당 스크립트는 씬에 붙였다.attack이라는 매개변수를 추가하였다.attack이 true인 경우 Attack Animation으로 넘어간다.State를 프로퍼티로 만들었다.현재 상태와 재
변수 \_stopSkill에 따라서 animation Event가 발생했을 때 상태를 갱신하게 하였다.기존에 OnMouseEvent에 있던 코드를 OnMouseEvent_IdleRun()으로 이동하였다.애니메이터에서 Parameter와 Transtion을 다 제거하였다
Slider UI를 사용하여 체력바를 표현하였다.프리팹으로 만들었다.HPBar을 바인드하고 플레이어의 콜라이더 위에 배치시켰다.WorldSpaceUI를 위한 코드를 작성하였다.참고로 UI_HPBar는 씬도 팝업도 아니므로 WorldSpace 폴더에 저장하였다.플레이어에
테스트를 위해 Knight에게 임의로 UI_HPBar를 달아주었다.HP의 비율을 설정하기 위해 매 업데이트마다 SetHp 함수를 실행하도록 하였다.OnHitEvent에서 스탯의 hp를 수정하기 위한 코드를 작성하였다.hp가 잘 감소함을 확인하였다.
State를 위한 열거형을 선언.기존에 PlayerController에서 공통으로 사용될 부분을 옮겨왔다.override 해서 사용할 것들은 virtual로 선언.처음에는 Idle 상태일텐데, 잘 작동하는지 확인하기 위해 Debug.Log를 사용하였다.몬스터 애니메이션
몬스터가 플레이어를 감지하고 공격하는 거리를 정하였다.Idle 상태에서 플레이어가 사정거리 내에 있으면 상태를 Moving으로 변경한다.사정거리 내인 경우 공격을 시작한다.그렇지 않은 경우 플레이어를 향해 이동한다.공격 애니메이션을 취할때 사용하는 이벤트 함수이다. 몬
WorldObject의 타입을 정하기 위해 선언하였다.몬스터를 스폰 , 디스폰 하기 위한 매니저이다.디스폰의 경우 플레이어는 Pooling이 된다.플레이어의 hp가 0 이하가 되면 플레이어 오브젝트를 풀링시키고, 타겟을 null로 초기화한다.플레이어와 몬스터를 스폰해주
데미지 처리는 공격받는 입장에서 처리하는 것이 수월하므로 위와 같이 작성하였다.피가 일정치 만큼 떨어지면 위의 OnDead함수를 호출한다.OnHitEvent()에서 데미지 처리에 해당하는 코드를 위와 같이 변경하였다.Exp 프로퍼티에 대해 값 변경이 이루어지는 경우 레
AddMonsterCount 함수를 액션에 추가해 주었다. 현재 몬스터 수와 예약된 수가 유지해야할 몬스터 보다 적으면 코루틴을 실행시킨다.코루틴을 통해 몬스터를 스폰하는 것이 예약이 된다.랜덤한 시간, 랜덤한 위치에 몬스터를 생성하는 코루틴 함수이다.SpawningP