unity 20

[유니티] Unity Remote 5 활용하여 모바일 개발하기

잠시 본가인 대구에 와있으면서 VR 장비가 없어 VR 개발은 잠시 쉬고 오랜만에 모바일 개발을 해볼까라는 생각이 들었습니다. 유니티로 모바일 개발할 때 테스팅 하기 너어어어무 편하게 해주는 Unity Remote 5라는 앱을 소개시켜드리고, 사용하는 방법을 나누고자 합니다. 먼저 다음 링크로 가셔서 핸드폰에 Unity Remote 5를 설치해줍니다 링크: https://play.google.com/store/apps/details?id=com.unity3d.mobileremote&hl=en&gl=US Unity Remote 5 - Apps on Google Play Unity Remote 5 on your Android device to test your game live in the Unity Edit..

Unity & C# 2021.12.02

C# event에서 listener들을 unsubscribe하는 법

유니티에서 제공하는 UnityEvent 클래스에서는 RemoveAllListeners()라고 하는 함수가 subsribe 되어있는 listener들을 다 unsubscribe 해주는 역할을 합니다. 그렇다면 c# 의 event에서는 subscribers 들을 어떻게 unsubscribe 할 수 있을까요? C# event에서도 등록되어있는 delegate를 array로 가져올 수 있는 함수가 있습니다. 바로 GetInvocationList()입니다. subsriber들을 array로 가져올 수 있다면 쉽게 그냥 foreach 문을 돌면서 -= 로 unsubsribe 해주면 되겠죠? 테스트를 위해 EventSubscriber class와 Monobehaviour 를 상속받는 EventInvoker class..

Unity & C# 2021.10.19

C# Extension Method 활용하여 MonoBehaviour에서 자주 사용하는 Delay 만들기

유니티에서 게임을 만들다가 보면 Delay(지연)을 주고 싶을 때가 많은 데요. Delay를 주는 방법으로 여러 방법이 있겠지만 개인적으로 자주 사용하는 방법은 유니티의 Coroutine를 사용하여 많이 구현하는데요. 그런데 이 Delay 코루틴도 반복해서 사용하다보니깐 이거를 C# Extension Method를 활용해서 MonoBehaviour클래스에서 편하게 사용할 수 있도록 하면 좋겠다는 생각이 들었습니다. 먼저 C# Extension Method가 무엇이냐면, 이미 구현된 타입(클래스, 인터페이스,...)에 추가로 Method를 만들 수 있는 기능입니다. Extension Method 말 그대로 확장된(추가된) 메소드라고 생각하면 좋을 듯합니다. 아래는 보통 Delay를 주고 싶을 때 Corou..

Unity & C# 2021.10.19

SourceTree에서 Git LFS 적용하기

최근 팀 작업에서 프로젝트 관리 툴로 Github과 SourceTree를 사용하고 있다. SourceTree는 이런게 있다하고 들어보기만 하고 실제로 사용해 본적이 없어 이번 기회에 공부도 하고 익숙해질겸 사용해보기로 했다. 팀 프로젝트 진행 도중 파일당 100MB가 넘는 경우가 많이 있어 그럴때마다 Push를 할 수 없다고 에러가 떴다. 그래서 용량이 큰 파일들을 처리할 수 있는 것이 Git LFS 인데 검색을 해보니 SourceTree에서는 Git LFS를 쉽게 적용할 수 있다고 나왔다. 검색을 해보니 제일 처음 repository를 clone 했을 때(push를 한번도 하지않은 상태에서) git lfs를 설정해주어야한다고 한다. (그런데 처음에 하지 않고 push가 이루어진 후에도 되는 것 같긴하다..

Unity & C# 2021.09.30

List<T>를 상속받아 CustomList<T> 만들기

List를 사용 할 때 마다 이런 기능이 있었으면 좋겠다고 생각한 적이 있다. 바로 리스트에 아이템이 추가되거나 제거 되었을 때 이벤트를 실행 시킬 수 있으면 여러 용도로 사용할 수 있겠다는 생각을 했다. 그래서 C#의 List를 상속받는 자신만의 CustomList를 만들어 보았다. CustomList.cs 먼저 CustomList.cs 를 생성해서 C#의 List를 상속받는다. using System.Collections.Generic; namespace CustomList { public interface ICustomListable { } public class CustomList : List where T : ICustomListable { public delegate void CustomLis..

Unity & C# 2021.09.16

[VR] Inside Cube

VR 플레이시 화면의 VR 카메라가 아닌 다른 일반 카메라의 화면을 출력할 수 있다는 사실을 알게 된 후, 이걸 이용해서 무엇을 만들어 볼 수 있을까 고민을 해보다가 VR 플레이어의 모습을 3인칭 시점으로 프로젝션 맵핑을 하면 재밌을 것 같다는 생각을 해보았다. VR 플레이어는 큐브 속에 들어가 있고, 이 큐브의 벽들은 더 조그마한 큐브들로 이루어져있다. 이 벽들을 이루고 있는 각각의 큐브들은 VR 플레이어의 손 collider에 반응을 할 수 있게 해보았다. 반응은 색, 소리, 스케일에 변화를 줘보았다. Unity Gameview 벽에 Projection Mapping 모습 프로젝터는 집에서 그냥 넷플릭스나 유튜브 볼 때 사용하는 프로젝터를 사용하여 실제 Projection Mapping 전시에서 쓰이..

Playground 2021.09.16

DOTween (HOTween v2)를 활용한 애니메이션 연출

제가 즐겨사용하는 Plugin DOTween 를 활용하여 Unity에서 쫀쫀(?)한 애니메이션 연출을 알아보도록 하겠습니다. DOTween 설치 먼저 Unity PackageManager에서 Dotween을 검색하여 DOTween (HOTween v2)를 download 및 import 해줍니다. import 완료 후 패널이 하나 뜰텐데요 Open DOTween Utility Panel -> Setup DOTween -> Apply를 클릭해 줍니다. Scene 세팅 그리고 Scene에 애니메이션이 들어갈 Cube를 아래와 같이 배치해보겠습니다. Cube.cs Cube.cs 클래스를 만들어서 각 큐브의 component로 붙여줍니다. using System.Collections; using System.C..

Unity & C# 2021.09.16

[PaintMusic] 스텔라장 - YOLO 커버

https://www.youtube.com/watch?v=66-eVNnfvyU PaintMusic으로 연주한 스텔라장 YOLO 커버 PaintMusic은 가상공간에서 그림을 그리고 색깔에 따라 다양한 악기와 음을 연주할 수 있는 VR 음악&예술 게임입니다. 개발 중에 스텔라장님의 곡 YOLO 를 PaintMusic의 Looper 기능을 사용하여 Cover를 만들어보았습니다. 많이 틀리지만 재밌게 보고 들어주세요~🎵

URP에서 VR + PC 두 화면 따로 출력하기

Unity Version: 2020.3.14f1 Platform: PC, Mac & Linux Standalone Template: Universal Render Pipeline VR Plugin: Oculus Integration (v32.0) VR 헤드셋을 착용하고 있는 사람의 화면과 PC에서 나오는 화면을 각각 따로 나오게 하고 싶을 경우가 있다. 나의 경우는 VR 플레이어의 모습을 3인칭으로 보는 화면을 미디어아트 프로젝트로 활용하고 싶었다. VR 카메라 화면이 아닌 일반 camera를 나오게 하는 방법은 어렵지않다. 씬에 VR camera와 일반 camera를 두 개 배치하고 일반 camera에 camera depth값을 VR Camera 보다 높여주면 된다. 3D 또는 HDRP template..

Unity & C# 2021.09.15