- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #52023-10-27 20:01:40애니메이션 엔진 닷트윈을 활용하여 간단한 UI 애니메이션을 완성하였다. 설정, 크레딧 패널은 페이드인/ 아웃 효과를 주었고 팝업 창의 경우 위에서 아래로 내려오는 애니메이션을 적용하였다. 오브젝트 컴포넌트 뒤에 닷트윈 함수를 붙혀서 사용하면 되는되 아주 직관적이고 편리하였다. 다음과 같이 모션의 특정 상황에서 함수를 호출하는 콜백 기능도 제공한다. public void MoveUp(GameObject panel) { panel.GetComponent().DOAnchorPos(new Vector2(0, 700), _transSpeed).OnComplete(() => gameObject.SetActive(false)); } UIManager 클래스의 OpenUI() 메서드에서 모든 UI 객체를 나타내는 것을..
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #42023-10-26 21:48:46메인메뉴, 로비, 인게임 씬을 유동적으로 관리하는 씬매니저를 제작하였다. 우선 열거형으로 게임 내 사용할 여러 씬을 정의하였다. Scene 열거형을 인수로 받아 씬을 비동기로 로드하는 LoadSceneAsync메서드를 코루틴으로 호출한다. LoadSceneAsync 메서드는 비동기로 씬을 로드하고 로딩바 창을 표시하는 역할을 한다. private IEnumerator LoadSceneAsync(string sceneName) { progressSlider.value = 0; loaderUI.SetActive(true); AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(sceneName); asyncOperation.allowSceneActivat..
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #32023-10-25 23:47:02본격적인 스크립트 작업에 들어가기 전 전체적인 설계를 해놓는 것이 바람직하다고 판단하였다. 우선 유니티에서 UI 요소, 데이터, 로직의 흐름을 어떻게 다루는지에 대해 찾아보았다. 그 중 MVC패턴에서 파생된 MVP패턴에 관련된 자료를 찾았고 적용해보기로 결정하였다. MVP패턴은 모델, 뷰, 프레젠터 세가지의 구성 요소로 나뉜다. 간단하게 정리하면 모델은 데이터와 관련된 로직을 처리하는 역할을 한다. 뷰는 정보를 표시하고 입력을 받는 UI 요소 자체를 나타낸다. 프레젠터는 모델과 뷰를 연결하는 역할을 한다. 세가지 요소로 나누어 강력한 결합을 방지하여 유지보수 및 확장성이 향상된다. 어제 간단하게 제작한 팝업 관련 스크립트를 가져와 수정해보았다. public class UIPopupPresenter : M..
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #22023-10-24 20:58:09오늘은 어제에 이어서 대부분의 시간에 게임 기획적인 회의를 진행하였다. 특히 전반적인 플레이 로직에 관련하여 정리하였고 이를 기반하여 내가 맡은 UI작업을 원활하게 진행할 수 있을 것 같다. 회의 내용을 기반으로 게임의 플로우 차트를 다음과 같이 그려보았다. 변경된 내용이 있어서 조금 수정할 예정이다. 추가적으로 팝업 UI의 전반적인 로직을 완성하였다. PopupUIManager 클래스를 통해 팝업창을 열고 닫는다. 버튼 클릭이벤트를 설정하고 각 버튼에 대한 팝업을 나타내는 메서드를 정의하였다. 각 메서드 내에서 UIPopup 클래스의 SetPopup 메서드를 가져와서 사용한다. UIPopup 클래스를 사용하여 팝업의 내용 및 동작을 정의한다. 팝업창은 많은 곳에서 공통적으로 사용하는 부분이다. Acti..
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트#12023-10-23 20:54:588주간의 최종 팀 프로젝트가 시작되었다. 첫날에는 긴 시간 끝에 대략적인 게임의 기획을 마무리하였다. 3D 액션 RPG를 개발하기로 하였고 보스 전투를 중심적으로 제작할 계획이다. 플랫폼은 모바일로 결정하였다. 나는 우선 UI 및 HUD 부분을 담당하기로 하였다. 델리게이트를 활용한 UI 이벤트 처리, UI 리소스 매니징 등을 다시 복습해볼 수 있는 좋은 기회라고 생각한다. 닷트윈을 통한 UI 애니메이팅도 적용해볼 계획이다. 간단하게 인게임 와이어프레임을 다음과 같이 설계하는 것으로 하루를 마무리지었다. 내일부터 본격적인 코드 작업 및 에디터 UI 디자인 작업에 들어갈 예정이다.
- [ 카테고리 없음 ]유니티 게임개발 - 게임 개발 심화 팀 과제 #42023-10-20 19:31:31[스킨 상점 시스템] 상점 씬에서 게임 내 사용할 수 있는 스킨을 관리하는 클래스 SkinPanel 내에서는 스킨SO 데이터를 받아와 정보를 저장합니다. 또한 PlayerPurchase 클래스의 플레이어 구매 스킨 관련 데이터를 처리하는 인스턴스를 저장합니다. EquipSkin() 메서드 내에서 스킨이 잠겨 있지 않고 구매되어 있으면 스킨을 장착하거나 구매를 시도합니다. using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class SkinPanel : MonoBehaviour { public SkinSO skinInfo; public TMP..
- [ 카테고리 없음 ]유니티 게임개발 - 게임 개발 심화 팀 과제 #32023-10-17 21:39:19메모리 게임을 토대로 새로운 미니 게임을 구현하였다. 이 게임은 플레이어가 버튼 패턴을 따라 클릭하는 게임이다. 플레이어가 선택한 버튼 순서를 추적하는 리스트를 선언하고 플레이어가 버튼을 클릭할 때 호출되는 AddToPlayerSequenceList를 통해 버튼 id를 받아와서 리스트에 추가한다. 그 다음 실제 게임에서의 패턴과 플레이어의 패턴을 비교하여 성공 혹은 실패를 판정한다. 성공했을 때는 점수를 올리고 다음 라운드를 시작하는 메서드를 호출하여 게임을 지속한다. using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class Memory..
- [ 카테고리 없음 ]유니티 게임개발 - 게임 개발 심화 팀 과제 #22023-10-16 21:04:31스킨 선택 시스템을 간단하게 구현하였다. Static 변수 skinToLoad를 선언하여 프리팹을 플레이어의 하위에 instantiate하는 방식으로 스킨을 불러온다. 기존의 캐릭터 컨트롤러의 변수에 넣어줘야할 것들을 위해 컴포넌트를 외부에서 불러오는 방식을 선택했다. EquipSkin메서드를 통해 스킨 선택 씬에서 특정 스킨을 선택해서 내보낸다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class SkinLoadController : MonoBehaviour { public static GameObject skinToLoad; [SerializeField] private GameObject ..