본문 바로가기

분류 전체보기486

[Unity] 디자인 패턴 : 전략 패턴(Strategy Pattern) Unity와 C#을 통한 전략 패턴(Strategy Pattern) 사용 방법에 대해 알아보자. 1. 전략 패턴이란? 행동을 정의하고 캡슐화해서 각각의 행동이 추가될 때 유연하고 독립적으로 변경하여 사용할 수 있게 도와주는 패턴 특정 상황에 따라 행동을 바꾸고 싶을 때 적용하면 유용한 패턴 ex) 캐릭터가 전투 상황에 따라 무기를 교체할 때 2. 사용 예제 - 문제 상황 필자가 좋아하는 자동차로 상황을 만들어 보겠다. 자동차 회사들의 자동차를 시뮬레이션하는 프로그램을 제작한다고 가정해보자. H사의 - HCar 자동차 모델이 있고, T회사의 TCar 자동차 모델이 있다. 모든 자동차는 Display() : 자동차 외관을 보여주는 함수, Move() : 자동차가 굴러가면서 움직이는 함수 두 가지 함수를 가지.. unity3d/DesignPattern 2022. 6. 16.
[Unity] UI를 위한 UGUI 최적화 방안 Unity UI에서 사용하는 UGUI의 최적화 방안과 성능 향상을 위한 방안에 대해 알아보자. Unity에서 UI 구성시 아직까지는 UGUI를 이용하여 UI 요소를 화면에 배치하고 화면을 구성하는 것이 일반적이다. 게임이나 앱이 대규모일수록 UI 구성도 많아지고 복잡해진다. 이럴 경우 디자이너와의 커뮤니케이션도 상당히 중요하다. 디자이너와의 협업을 위해서는 반드시 유니티에서의 UI 최적화 방안에 대해 알고 커뮤니케이션하는 게 좋다. UI 최적화의 가장 기본이 되는 것은 Unity Graphics의 Batches 및 SetPass calls 수치 값을 낮추는 게 중요하다. Batches는 하나의 랜더링 돼야 하는 항목이 늘어날수록 하나씩 추가되며 SetPass calls는 같은 이미지라도 메터리얼이 달라질.. unity3d/Research 2022. 6. 14.
[Unity] 넷플릭스 같은 멀티 스크롤뷰 UI 만들기 Unity UI에서 스크롤 뷰를 확장하여 넷플릭스(Netflix) UI 같이 멀티 스크롤 뷰가 되는 방법에 대해 알아보자. Unity UI 제작 시 메인 페이지는 상하 좌우로 스크롤이 되어야 하고, 메인 페이지 내 서브 페이지는 좌우로 스크롤돼야 하는 화면을 만든다고 가정해보자. (넷플릭스 메인화면과 같은 화면) 기본적으로 메인 페이지의 ScrollRect 컴포넌트의 Horizontal 옵션을 체크 해제하여 상하 좌우 스크롤만 되도록 하게 하고, 서브 페이지의 ScrollRect에는 Vertical 옵션을 체크 해제하여 좌우만 스크롤되도록 구성을 하는 것이 일반적이다. 이럴 경우 문제가 서브페이지에서 상하 스크롤을 할 경우 상하 스크롤이 되지 않는다. 서브 페이지에서 상하 스크롤을 할 경우, 메인 페이지.. unity3d/Class 2022. 6. 13.
[Unity] UI 재사용 스크롤뷰 제작 Unity UI에서 스크롤 뷰는 상당히 많은 곳에서 사용한다. 이런 스크롤 뷰를 재사용 가능한 스크롤 뷰로 만드는 방법에 대해 알아보자. Unity ScrollView의 단점은 스크롤되는 데이터가 많아질수록 느려지고 메모리 사용도 많아진다는 점이다. 따라서, 스크롤뷰에 아이템을 Instantiate를 통해 모든 데이터를 생성하는 것이 아닌 일부 아이템을 가지고 데이터만 교체해주는 오브젝트 풀링 방식으로 개선하게 되면, 속도 향상 및 메모리 확보 효과도 좋다. Instantiate를 통한 오브젝트 생성 및 Destroy를 통한 오브젝트 삭제의 과정을 거치지 않기에 프레임 밀림 현상도 개선이 된다. 해당 기능 구현을 위해 총 2개의 base 클래스를 먼저 제작해보자. 1. UIRecycleViewContro.. unity3d/Class 2022. 6. 10.
[Unity] UI PageView Class Unity UI에서 페이지 단위로 View를 구성하는 PageView Class를 제작해보자. Unity에서 페이지 단위로 UI를 나누고 싶을 때 활용하면 좋은 PageView Class를 제작해보자. 해당 기능은 사진첩을 커버 플로우 형태로 보거나 책을 넘기는 기능 등에 사용하면 좋다. Unity에서 기본적으로 제공하는 ScrollView를 활용하여 쉽게 구현이 가능하다. 1. UIPagingViewController Class 작성 - 해당 클래스는 Page를 관리하고 View를 드래그하여 컨트롤할 수 있는 클래스이다. - Unity에서 제공하는 Scroll 컴포넌트를 필수 컴포넌트로 가지고 있어야 한다. - Unity EventSystem에서 제공하는 IBeginDragHandler 및 IEndDr.. unity3d/Class 2022. 6. 9.
[Unity] UI DragDrop Class Unity UI에서 자주 사용하는 DragDrop 기능을 구현해보자. Unity에서 미니 2D Game 기능 중 DragDrop 기능은 상당히 많이 사용한다. Unity에서 2D Image를 마우스(터치)를 통해 Drag 하고 원하는 위치에 Drop 할 수 있는 클래스를 제작해 보자. 1. 사전 준비 - LeanTween 플러그인 설치 - Unity에서 Tween 기능 구현을 위해 LeanTween 라이브러리 에셋을 사용하겠다. - LeanTween은 에셋스토어를 통해서 무료로 다운로드할 수 있다. - Drop존에 가까이 왔을 때 자동으로 Drop존으로 Tween 하도록 할 때 해당 라이브러리 기능을 사용한다. - 다운로드 받으러 가기 2. UIDragBehaviour Class 작성 - UIDragBe.. unity3d/Class 2022. 6. 8.
[unity] WebRTC 사용법 Unity WebRTC 튜토리얼 및 샘플을 토대로 Unity에서 어떤 개념으로 화면 공유가 되는 건지 연구해 보자. Unity용 WebRTC 샘플 파일 설치 및 소개는 블로그 이전 편을 참고하면 좋다. WebRTC 소개 및 설치 방법 [unity] WebRTC 소개 및 설치 방법 Unity WebRTC에 대한 설명과 WebRTC for unity 패키지 설치 방법에 대해 알아보자. 1. WebRTC 소개 - WebRTC는 Web-Realtime Communication의 약자로, 웹에서 실시간 커뮤니케이션할 수 있는 기술을 말한다. -.. wonjuri.tistory.com 네트워크 관련 지식이 많지 않아. 해당 샘플 파일을 이해하는데 초기 어려움이 많았다. 서버 없이 네트워크처럼 화면, 영상, 음성이 .. unity3d/Research 2022. 6. 7.
[unity] WebRTC 소개 및 설치 방법 Unity WebRTC에 대한 설명과 WebRTC for unity 패키지 설치 방법에 대해 알아보자. 1. WebRTC 소개 - WebRTC는 Web-Realtime Communication의 약자로, 웹에서 실시간 커뮤니케이션할 수 있는 기술을 말한다. - WebRTC는 오픈소스이며, Apple, Google, Microsoft, Mozilla 등의 지원을 받을 수 있다. - WebRTC 표준은 크게 두 가지 기술인 미디어 캡처 기기와 P2P 연결을 말한다. - 무료로 사용 가능하다. - 실시간 영상 전송, 화면 공유, 음성 전송 등의 기능을 제공한다. 2. Unity WebRTC 소개 - Unity WebRTC란 Unity와 WebRTC(JavaScript)를 연결해 주는 인터페이스(c#) 패키지다.. unity3d/Research 2022. 6. 3.
[unity] Open Path Utility editor class Unity의 UIElements를 사용하여, 자주 사용하는 폴더를 바로 열어볼 수 있는 기능을 가진 Open Path Utility Editor Class를 작성해보자. 1. Open Path Utility Class 제작 이유 - 유니티를 하다 보면 항상 특정 폴더를 열어야 할 때(Asset Path, PersistentDataPath, StreamingAssetPath 등) 파인더를 열어서, 해당 폴더를 찾아가곤 했다. 개발할 때 이런 시간적 비용이 점점 커짐에 따라, 해당 기능을 유니티 에디터 기능으로 만들고, 유니티에서 바로 폴더를 열 수 있는 기능을 제작해 놓으면, 상당 부분 개발 시간(비용)을 줄일 수 있다. 2. Unity UIElements 소개 - UIElement는 unity 2019버.. unity3d/Class 2022. 5. 30.
[unity] 모듈 제작 : Localization Manager 제작 Unity에서 GoogleSheet를 활용하여 현지화 언어 변환 모듈인 Localization Manager Class를 만들어 보자. 1. 구글 시트 생성 및 테이블 작성 - 구글 시트를 하나 생성한 후 간단한 테이블을 하나 만들어 준다.(구글시트 바로가기) - 테스트를 위한 테이블 구조는 아래와 같다. Korean English Japanese 호랑이 =GOOGLETRANSLATE(A2,"Ko","En") =GOOGLETRANSLATE(B2,"Ko","ja") 사자 =GOOGLETRANSLATE(A3,"Ko","En") =GOOGLETRANSLATE(B3,"Ko","ja") 코끼리 =GOOGLETRANSLATE(A4,"Ko","En") =GOOGLETRANSLATE(B4,"Ko","ja") - 기본 .. unity3d/Modules 2022. 5. 30.
[unity] 2D Rounded Mask Shader Unity에서 모서리가 Round 된 Masking을 처리하는 Shader를 만들어 보자. 1. 기존 Masking 사용 방법 모서리 라운드 같은 경우도, 기존에는 마스킹을 주로 사용하였다. Mask 컴포넌트를 사용하면 퍼포먼스나 깨끗하게 마스킹이 안 되는 현상이 있기 때문에 최근에는 셰이더를 많이 이용한다. 유니티의 마스크를 사용하는 방법은 기존 글을 참고해주기 바란다. 2022.05.27 - [unity3d/Shader] - [unity] 2D Circle Mask Shader [unity] 2D Circle Mask Shader Unity에서 Circle 형태의 Masking 을 처리하는 Shader에 대해서 알아보자. 앱 개발 중 동그란 썸네일 및 동그란 아이콘 이미지를 구현해야 되는 상황이 생겼.. unity3d/Shader 2022. 5. 27.
[unity] 2D Circle Mask Shader Unity에서 Circle 형태의 Masking을 처리하는 Shader에 대해서 알아보자. 1. 기존 Masking 사용 방법 앱 개발 중 동그란 썸네일 및 동그란 아이콘 이미지를 구현해야 되는 상황이 생겼다. 간단하게 샘플을 만들어 보면, Icon 이미지와 Mask 이미지를 준비한다. 유니티 프로젝트에서 Canvas와 Panel을 만들고 아래와 같이 자식 구조를 해준다. 중요한 점은 MaskImage 게임오브젝트에 Mask 컴포넌트가 붙어 있어야 된다. 실행해보면, 동그랗게 잘 마스킹이 잘 된 것을 확인할 수 있다. 이렇게 구성했을 경우 batch가 7이 된다. 2. Shader를 사용한 Masking 방법 Unity 프로젝트에서 Create-> Shader 를 클릭한 후 아무 셰이더를 1개 만들어 준.. unity3d/Shader 2022. 5. 27.
[unity] 모듈 제작 : UniTask 활용한 Network system 제작 Unity Restful network manager 를 제작하여, 웹서버와 통신하는 모듈을 만들어 보자. 유니티에서 가장 흔하게 사용하는 방식은 UnityWebRequest와 코루틴을 통한 웹서버클라이언트 간 통신 방법이 있다. 코루틴을 사용한 방법들은 유니티 레퍼런스에 잘 설명되어 있으니 참고해보면 좋을 것 같다. https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html Unity - Scripting API: UnityWebRequest UnityWebRequest handles the flow of HTTP communication with web servers. To download and upload data, use D.. unity3d/Modules 2022. 5. 26.
[unity] 모듈 제작 : 팝업 시스템 만들기(5) 마지막으로 PopupManager 컴포넌트를 연결하고 테스트하는 방법에 대해 알아보자. 1. 컴포넌트 연결 1. 팝업 객체에 PopupAnimator 컴포넌트와 Popup 컴포넌트를 붙여준 후, 아래 이미지와 같이 멤버 변수들을 세팅해준다. Tween Type을 통해, 팝업의 Tween 효과를 설정한다. 타입 정보는 LeanTween 공식 문서를 통해 확인하면 좋다. LeanTweenType 확인하러 가기 LeanTweenType LeanTweenType Class Pass this to the "ease" parameter, to get a different easing behavior Example: LeanTween.rotateX(gameObject, 270.0f, 1.5f).setEase(Lean.. unity3d/Modules 2022. 5. 24.
[unity] 모듈 제작 : 팝업 시스템 만들기(4) Popup에 필요한 Buttons 클래스와 Popup의 정보를 가지고 있는 Info 클래스를 작성해보자. 1. 스크립트 작성 1. Popup : 팝업 객체에 붙는 컴포넌트로 팝업 내 UI 요소들을 컨트롤하는 클래스 2. PopupManager : 팝업을 관리하는 매니저 클래스 3. PopupAnimator : 팝업 애니메이션을 관리하는 클래스 3개 클래스는 이전 편을 참고하자. 2022.05.24 - [unity3d/Modules] - [unity] 모듈 제작 : 팝업 시스템 만들기(3) [unity] 모듈 제작 : 팝업 시스템 만들기(3) 팝업을 관리하는 매니저 클래스인 PopupManager Class를 제작해보자. 1. 스크립트 작성 제작 해야될 스크립트는 총 7가지로 각 클래스 별 기능 설명을 하.. unity3d/Modules 2022. 5. 24.
[unity] 모듈 제작 : 팝업 시스템 만들기(3) 팝업을 관리하는 매니저 클래스인 PopupManager Class를 제작해보자. 1. 스크립트 작성 제작 해야될 스크립트는 총 7가지로 각 클래스 별 기능 설명을 하자면 다음과 같다. 1. Popup : 팝업 객체에 붙는 컴포넌트로 팝업 내 UI 요소들을 컨트롤 하는 클래스 2. PopupManager : 팝업을 관리하는 매니저 클래스 3. PopupAnimator : 팝업 애니메이션을 관리하는 클래스 4. PopupButton : 팝업 전용 버튼 클래스 5. PopupButtonInfo : 팝업 전용 버튼 정보 클래스 6. PopupButtonType : 팝업 버튼 타입 정의 Enum 7. PopupInfo : 팝업 생성을 위한 정보를 담은 클래스 1. Popup Class - 타이틀, 내용, 버튼의 .. unity3d/Modules 2022. 5. 24.
[unity] 모듈 제작 : 팝업 시스템 만들기(2) 유니티의 UGUI를 통한 팝업 시스템의 UI 구성에 대해 알아보자. 1. UI 구성 유니티에서 Scene을 하나 생성하고 Canvas를 하나 추가해준다.(마우스 우클릭 -> UI -> Canvas) Canvas의 컴포넌트 중 Canvas Scaler의 옵션을 Scale With Screen Size로 변경 후 원하는 해상도로 맞춰준다. 필자는 기본 모바일 해상도(HD) 1280*720으로 설정했다. 또한 Canvas 컴포넌트의 Sort Order도 적당히 높여준다. 그 이유는 팝업은 항상 최상위 레이어로 랜더링 돼야 하기 때문이다. 프로젝트에서 캔버스들의 Sort Order 값을 확인한 후 팝업은 최상위 Order 값으로 설정하는 것이 좋다. 또한 프로젝트에서 Render Mode를 카메라로 설정해도 상.. unity3d/Modules 2022. 5. 24.
[unity] 모듈 제작 : 팝업 시스템 만들기(1) Unity에서 UGUI를 사용하여 빌더 패턴을 통해 공통 팝업 시스템을 만드는 방법에 대해 알아보자. 1. 팝업 시스템 소개 유니티에서 각 씬이나 화면마다 팝업에 해당하는 UI를 구성하고, 이벤트를 연결해주는 작업은 상당히 많은 시간을 소비하게 한다. 따라서 자주 사용하는 팝업 시스템 같은 요소는 공통화 시스템으로 제작하여 싱글톤 패턴으로 인스턴스를 공유해서 사용하면 개발 시간 절약 및 유지보수에 상당히 유용하다. 따라서 이번 글에서는 싱글톤 패턴과 빌더 패턴을 사용하여, 팝업 시스템(모듈)을 만들어 보고자 한다. 싱글톤 패턴을 통해, 다양한 씬에서 하나의 인스턴스를 가지고 호출할 수 있게 할 수 있는 장점이 있으며, 빌더 패턴을 사용하면, 팝업의 필요한 데이터만 설정할 수 있어 가독성도 좋아지고, 유연.. unity3d/Modules 2022. 5. 24.
[unity] Build Script class Unity에서 프로젝트 세팅으로 하는 빌드가 아닌, 빌드를 스크립트를 통해서 빌드할 수 있는 Build Script Class를 제작해보자. 1. Build Script를 사용해야 되는 이유 - Unity에서 빌드는 File Build Settting -> Build or Build And Run을 통한 빌드를 하는 것이 일반적이다. 하지만 프로젝트를 열때마다 입력해야 하는 keystore 비밀번호나, apk 경로, apk 이름 등을 간소화하고자 빌드 스크립트를 이용하는 경우도 많아지고 있다. - 게임이나 앱 제작 시 빌드 스크립트만 잘 구축해 놓아도 상당히 시간 비용을 줄일 수 있다. 2. Build Script 제작 방법 1. 우선 프로젝트를 열고 Asset/Scripts/Editor 폴더를 만들어 .. unity3d/Class 2022. 5. 20.
[unity] 구글플레이 인앱 업데이트 및 인앱 리뷰 연동 클래스 구글 플레이 API 중 Unity에서 사용하기 유용한 Play In-App Update와 Play In-App Review 클래스를 묶어 매니저 클래스를 만들어 보자. 1. Play In-App 사용 이유 - 구글에서 제공하는 Play In-App 라이브러리 중 Billing 이나 Play Asset Delivery 같은 api 도 있지만, 유니티에서 제공하는 인앱 결제 라이브러리나 addresable 같은 파워풀한 기능들이 있으니, 따로 추가할 필요는 없어 보인다. - Unity에서 사용할만한 Play In-App 은 Update와 Review가 유용해보인다. - Play In-App Update : 버전 코드가 올라간 앱이 플레이스토어에 출시되면, 앱에서 자동으로 사용자에게 앱 업데이트를 알려주고, .. unity3d/Class 2022. 5. 19.