Unity
-
[Unity] 유니티 2D UI Canvas 타겟으로 VideoPlayer 사용Unity 2020. 4. 29. 19:47
오디오와 마찬가지로 유니티에서 비디오를 재생하는 간단한 방법이 추가되었다. VideoPlayer가 그것인데 이것을 이용해 여러 비디오 파일을 플랫폼 독립적으로 재생할 수 있다. VideoPlayer를 사용하는 방법에 대해서는 유니티 공식 문서나 다른 웹문서들에서 쉽게 찾아볼 수 있다. 대부분 문서의 경우 3D 오브젝트의 표면에 비디오를 출력하는 상황을 설명한다. 그런데 내 경우에는 2D앱을 만드는 중이라 2D Canvas 위에 비디오를 출력해야 했다. 나와 같은 고민을 하는 사람들을 위해 방법을 남겨본다. 방법의 핵심은 UI Canvas 위에 RawImage 형태의 오브젝트를 만들고, 이 오브젝트의 texture를 VideoPlayer의 타겟으로 만드는 것이다. 지금부터 간단한 예제를 통해 방법을 설명하..
-
[Unity] 유니티 StreamingAssets 폴더 활용Unity 2020. 4. 20. 20:58
유니티에서 리소스들은 Assets 폴더에 위치한다. 그런데 이 곳에 위치한 모든 리소스가 최종 완성된 바이너리에 포함되지는 않는다. 최종 바이너리에 포함되는 리소스는 Assets/Resources에 들어있는 것들이다. 이 리소스들의 경우는 Resources.Load()를 사용해 쉽게 로드할 수 있다. 이외에도 스트리밍에 필요한 멀티미디어 파일들은 StreamingAssets 폴더에 넣을 수 있다. 이 폴더에 위치한 리소스들은 타겟 머신에서 유니티가 지정한 위치로 이동되기에 플랫폼에 상관 없이 리소스에 접근하기 좋은 위치로 추천된다. 이 패스는 Application.streamingAssetsPath를 사용해서 액세스 할 수있다. Assets/StreamingAssets/sample.mp3이 있다고 가정하..
-
[Unity] 유니티 2D UI 오브젝트 위치 변경하기 (orthographicSize)Unity 2020. 4. 10. 21:22
유니티에서 씬의 3D 공간에 존재하는 게임 오브젝트의 크기를 구하거나 이동을 시키는 경우에 대한 자료는 쉽게 찾을 수 있다. 게임 내에서 오브젝트가 움직이는 것이 게임에서 제일 중요한 부분이기 때문이다. 그러나 2D UI의 경우는 조금 이야기가 다르다. 게임에서 실제로 크게 중요하지 않은 부분이어서 2D 게임을 만드는 경우를 제외하면 사용 빈도가 적기 때문이다. 하지만 유니티로 일반 앱을 만들거나 할 경우에는 2D 공간에서 대부분의 작업을 하게 되는데, 이런 경우 UI 요소의 이동이나 크기 변경에 대한 자료는 찾기가 어려웠다. 쉬운 정답을 찾는데 개인적으로 상당히 애를 먹은 경험 덕에 서론이 길어졌는데, UI 요소의 위치를 변경하는 방법에 대해 남겨보려 한다. orthographicSize 유니티에서 2..
-
[Unity] 유니티 UI 오브젝트(Object)의 width/height 변경Unity 2020. 4. 9. 22:26
최근 유니티는 UI를 만드는 것이 많이 개선되어 쉽게 UI 오브젝트를 추가할 수 있다. 그런데 이 UI의 경우 Canvas밑에 위치하게 되고 Canvas는 설정에 따라 메인 카메라의 바로 앞에 놓여지게 된다. 그래서 UI 오브젝트의 width나 height 속성을 변경하는 방법은 일반적인 게임 오브젝트와는 조금 달라진다. UI 오브젝트는 Rect Transform 컴포넌트를 가지고 있는데, 이 컴포넌트의 width와 height을 조정하는 것으로 크기 변경이 가능하다. 다음 스크립트를 통해 width를 100으로 변경할 수 있다. RectTransform rectTran = gameObject.GetComponent(); rectTran.SetSizeWithCurrentAnchors(RectTransfo..
-
[Unity] 유니티에서 오디오 파일 재생하기Unity 2020. 4. 9. 22:15
유니티에서는 아주 간단한 방법으로 오디오 파일을 재생할 수 있는데, 오디오 재생에 필요한 요소는 단 두 가지로 AudioSource와 AudioListener이다. AudioListener는 게임 신에서 발생하는 소리를 듣기 위한 컴포넌트이다. 사실 이 컴포넌트는 MainCamera에 기본적으로 붙어 있기에 따로 추가하지 않아도 된다. AudioSource는 소리를 발생시키는 컴포넌트이다. 유니티 GUI를 통해 원하는 게임 오브젝트에 추가하거나 스크립트에서 생성하여 사용할 수 있다. GUI에 컴포넌트를 추가해 소리를 재생하는 방법과 스크립트를 통해 재생하는 방법은 각각 다음과 같다. GUI를 사용한 재생 먼저 mp3등 오디오 파일을 유니티의 Assets 폴더 밑에 복사한다. 이후 유니티 GUI로 들어가면..
-
[Unity] 유니티 OpenCV Mat 과 Texture2D 변환Unity 2020. 4. 1. 20:39
유니티 프로젝트에서 C#으로 매핑된 OpenCV를 사용하고 있다. OpenCV에서는 기본적인 버퍼로 Mat를 사용하여 여러 가지 작업이 이루어지는데, 유니티 게임엔진 내부에서 렌더링을 할 때는 Texture형태를 많이 사용하기에 이 둘 사이를 오가야할 경우가 많이 있다. 예를 들어 작업이 끝난 이미지를 화면에 뿌린다던지, 반대로 화면의 이미지를 가지고 와서 OpenCV로 뭔가 처리를 해야 하는 경우가 빈번하게 발생한다. 익숙하지 않은 툴과 라이브러리로 작업을 하다 보니 둘 사이의 변경에 시행착오를 많이 겪어 이를 남겨본다. Texture2D to Mat 이 작업을 위해 유니티에 포팅된 OpenCV는 Utils.texture2DToMat이라는 함수를 제공한다. 사용방법은 간단하지만 주의할 점이 있는데, M..
-
[Unity] 유니티 라이센스 ULF 파일 적용하기Unity 2020. 3. 25. 11:05
유니티 작업 중에 라이센스가 만료되었다는 메시지가 나와 라이센스 키를 넣어 다시 작동을 시키려 했는데, ULF 파일을 넣으리는 메시지가 떴다. 생각해보니 전에 PC를 초기화할 때 똑같은 일이 있었던 것 같은데 어떻게 했는지 방법이 기억나지 않아 기억 유지를 위해 적어본다. 필요한 준비물은 유니티 계정, 라이센스 키, Unity Hub이다. 라이센스 키는 개인 사용자는 직접 유니티 페이지에 로그인해서 확인이 가능하고, 조직 사용자도 유니티 페이지에서 확인이 가능한데, 조직의 경우 조직 소유자가 개별 사용자에게 키를 할당해야 한다. 먼저 유니티 허브를 실행한다. 우상단의 자기 계정 이니셜이 보이는 아이콘을 클릭하고 "Manage License" 메뉴를 선택한다. 그러면 Preferences 화면이 나타난다...
-
[Unity] 유니티 UI Text 외곽선 넣기Unity 2020. 3. 16. 20:14
아주 오랫만에 유니티로 간단한 프로젝트를 진행하고 있다. 예전 기억에는 2D UI가 변변치 않아서 서드파티 플러그인을 사용했었는데, 최근 유니티는 훌륭한 2D UI를 제공하고 있어서 여러 가지 UI 요소를 넣는게 매우 편해졌다. 그러다가 UI.Text 컴포넌트로 스트링을 표시 중에 배경과의 구분을 위해 글자에 외곽선을 넣어야할 필요가 생겼다. 옵션이 없어서 검색을 해보니 검색어가 적절치 않았는지 쉐이더를 쓰거나 글자 크기를 변경해 글자를 두 번 그리는 등의 꼼수가 난무하는 검색 결과가 보였다. 그런데, 유니티 문서를 찾아보니 아주 손쉽게 외곽선을 추가할 수 있어서 그 방법을 남겨본다. 한 줄로 말하면 외곽선을 넣기 원하는 컴포넌트에 outline 스크립트를 추가하는 것으로 끝난다. 코드를 치지 않아도 스..