본문 바로가기

unity3d62

[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.
[admob] app-ads.txt 추가 또는 업데이트 대응 방법 Admob에서 전달받은 'app-ads.txt 파일이 누락되거나 잘못되었습니다.' 경고 메시지에 대한 해결 방법에 대해 알아보자. 1. app-ads.txt 파일 누락시 발생할 수 있는 경고 - admob에서 app-ads.txt를 통해 광고 인벤토리를 판매하도록 승인된 광고 소스를 광고주가 식별할 수 있다. - 따라서, app-ads.txt 파일을 누락이 지속되면, 수익이 갑자기 줄어들 수 있음을 경고해 주고 있다. 2. 해결 방안 - Admob - admob에서 app-ads.txt 항목으로 진입하여 APP-ADS.TXT 설정 방법을 클릭한다. - 경고로 전달받은 E-mail 링크나 알림을 통해서도 직접 접근이 가능하다. - App-ADS.TXT 설정방법을 누른 후 아래 값을 복사해 놓는다. 2. 해.. unity3d/Troubleshooting 2022. 5. 18.
[unity] 에셋번들 shader missing(핑크색 현상) 코드로 수정하기 유니티에서 파일 관리 및 에셋 동적 로드를 위해 에셋 번들을 주로 사용한다. 하지만 간혹 유니티 버전을 올리거나 환경이 변경되었을 때 에셋 번들을 다운로드하면, 셰이더 컴파일 오류로 인해 모델이 핑크색(shader missing)으로 보이는 현상을 코드로 수정하는 방법을 알아보자. 1. Shader Missing 현상 분석 - Unity에서 AssetBundle 로드 시 간혹 아래와 같이 핑크색으로 보이는 화면을 마주칠 때가 있다. - Assetbundle을 제작했을 때의 환경(유니티 버전)과 다운로드 받았을 때의 환경이 다른 경우 주로 발생한다. - 메터리얼을 포함하는 컴포넌트는 다양한 종류가 있지만 우선 확인해봐야 할 컴포넌트는 MeshRenderer 컴포넌트이다. MeshRenderer 컴포넌트의 .. unity3d/Troubleshooting 2022. 5. 17.
[unity] Resize Image class 소셜 플랫폼이나 게임 앱에서 다양한 개인 사진을 서버로 업로드 할 때 용량의 문제가 발생한다. Unity에서 큰 사이즈의 Image 파일을 Resize 하여 작은 용량의 상태로 서버로 업로드 할 수 있는 방법에 대해 알아보자. 1. Resize Image를 해야 하는 이유 - 앱에서 개인 프로필 사진을 로컬에서 불러와서 설정하는 경우를 가정해보자. 사용자는 앱에서 갤러리 라이브러리를 열고, 내 사진을 선택하여 프로필 이미지를 교체하고 이 과정에서 프로필 사진은 바이트로 저장되어 서버로 전송이된다. 문제는 내 갤러리의 사진 사이즈가 2048 을 넘어가게 되면, 서버 부담도 커지고. 다운로드 받을 때 걸리는 시간도 길어질 것이다. - 물론 서버 단에서 이미지 최적화 후 다시 내려주는 경우도 있지만, 클라이언.. unity3d/Class 2022. 5. 16.
[unity] 모듈 제작 : 사운드 플레이어 만들기(3) 사운드 플레이어 모듈의 화면 구성 및 Bgm과 Effect Sound 의 컴포넌트 설정 방법에 대해 알아보자. 1. 사운드 모듈 연결 구성 - Modules 라는 Scene을 만든 후 Modules 라는 GameObject를 생성한다. - Modules 자식으로 SoundPlayer GameObject를 생성한다. - SoundPlayer GameObject 자식으로 Bgm과 Effect 라는 GameObject를 생성한다. - 하이어라키 구조는 다음과 같다. - Modules - SoundPlayer - Bgm - Effect - SoundPlayer GameObject에 SoundPlayer.cs 컴포넌트를 Add 해준다.(아래 그림 설정 방법 참고) - BGM GameObject에는 Audio So.. unity3d/Modules 2022. 5. 16.