유니티 16

[유니티 C#] Json 저장 & 불러오기 너무 쉽게 구현하기

처음 유니티를 배우기 시작했을때 저장을 구현해야하는 순간이 찾아오면 어떻게 구현해야하는지 찾아보지도 않은채, 그저 '너무 어려울꺼같다' '지금 실력으로는 구현하기 힘들겠지?' 라고 무턱 겁부터 먹었던 기억이 있습니다. 그런데 지금 와서 생각해보면 왜 그렇게 겁을 냈을까? 라고 생각이 들고 왜 구현하려고 시도조차 하려고 하지 않았을까 후회가 되는 거같네요. 알고 보면 별거 아니고, 정말 쉽게 구현할 수 있는데 말이죠. 저장을 할 때 저장파일 포맷으로 여러가지가 있는데 오늘은 Json 파일로 저장하는 방법에 대해서 알아보도록 하겠습니다. Json 형태로 저장하는게 어렵지는 않을까? 생각할 수도있는데 전혀 그렇지 않습니다. 너무 쉬워서 예전에 겁먹었던 것이 허무할 정도이죠... JsonUtility이라고 하는..

Unity & C# 2021.11.12

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

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

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