겨울팥죽 여름빙수
article thumbnail
Unity + Firebase + GooglePlayGameService 로그인 연동하기
게임을 만들자/Unity 2021. 2. 28. 18:30

매번 앱을 출시 할 때 마다, 헷갈리게 되고, 문제가 생기면 제법 시간을 많이 잡아 먹어, 정리하게 됐다. 1. Unity Firebase세팅 github.com/google/mechahamster google/mechahamster Mecha Hamster is a game where you roll through customizable environments that you can share with your friends. - google/mechahamster github.com 여기서 sdk를 다운 받고, FirebaseAnalytics.unitypackage FirebaseAuth.unitypackage 이 두개만 임포트 한다(나머지 기능은 안쓰고 있어서..). 여기서 중요한 건, Fireba..

article thumbnail
Unity Built-in to URP 변환하기
게임을 만들자/Unity 2020. 12. 17. 19:48

유니티 URP란 Unity 2019.3버전부터 경량 렌더 파이프라인(Lightweight Render Pipeline, LWRP)이 유니버설 렌더 파이프라인(Universal Render Pipeline, URP)으로 변경되었습니다. URP는 아름다운 그래픽과 뛰어난 성능을 제공하는 강력한 솔루션으로 이제 더욱 다양한 플랫폼에서 사용 가능합니다. 또한 최신 아티스트 툴을 지원하고 2D, 3D, 가상 현실(VR) 및 증강 현실(AR) 프로젝트 모두에 적합합니다. LWRP는 모든 모바일 디바이스에서 고품질 그래픽스를 구현하는 빠르고 확장 가능한 파이프라인입니다. 지난 한 해 동안 이 스크립터블 렌더 파이프라인(Scriptable Render Pipeline)은 정식으로 제작에 사용할 수 있는 수준으로 성장했..

article thumbnail
Unity, VS4M, Debugger operation failed. 해결
게임을 만들자/Unity 2020. 11. 9. 17:35

유니티에서 작업 중, 스크립트 에러를 클릭 해, 소스코드를 열었는데, 위와 같이 디버깅이 안되는 문제가 생겼다. 왼쪽 위 빨깐 박스 모양도 바껴있다. 정상적이라면, 아래와 같은 그림이어야 한다. 위와 같이 명확하게 [유니티에 연결] 이라고 표시 돼야 디버깅이 된다. 내 소스코드가 아니라, 엔진 내부에서 발생한 에러코드를 클릭 해, 여는 경우 발생하는데, 한번 이렇게 되면, 계속 디버깅이 안된다. 이 문제를 해결하기 위해, - 껐다 켜기 - 재부팅 - 유니티 디버깅 기능 껐다켜기 방법 등을 써봤으나 모두 실패 했다. 혹시나 해서, 다른 유니티 프로젝트를 켜봤는데, 그 프로젝트는 잘 연결되는 것으로 보아, 해당 프로젝트만 뭔가 꼬였구나라는 걸 직감했다. 스크립트 파일을 더블클릭 해, 파일을 여는 것이 아닌,..

article thumbnail
Unity, Spine SkeletonDataAsset change in Runtime
게임을 만들자/Spine 2020. 10. 7. 01:29

Unity에서 SkeletonAnimation 또는 SkeletonGraphic(ui용)의 SkeletonDataAsset를 교체해야하는 경우가 있다. 보통 위 Inspector내에서 교체하는데, Runtime중에 Script로 교환 할 때는 아래와 같은 코드로 해야 한다. SkeletonGraphic m_animation; .... var skeletonDataAsset = Resources.Load("{your resource path}"); m_animation.skeletonDataAsset = skeletonDataAsset; m_animation.Initialize(true); 마지막에 Initialize(true)를 해줘야 하는게 핵심이다. 끝.

Unity, Coroutine(코루틴) Lamda(람다식) 사용
게임을 만들자/Unity 2020. 9. 25. 16:05

간혹 어떤 코드가 1프레임 혹은 몇 초 후에 실행됐으면 하는 때가 있다. 예를 들어, Ui를 초기화하고, 한프레임 후 구성요소의 위치나 크기를 가져와야 하는 경우가 그렇다. 초기화하고 바로 값을 읽으면, 원하는 값을 얻을 수 없다. 아마 Unity내부에서 렌더링 되지 않아서 인 것 같다. 이 경우 한프레임 후, 그 값을 읽으면 잘 읽힌다. 이때 한프레임 후 실행되게 할 때, 코루틴을 많이 사용하는데, 이게 은근 사용하기 귀찮게 돼 있다. 좀 더 간편하게 코루틴을 사용하기 위한 클래스들 만들어보자. 1. CoroutineManager 싱클톤 클래스 아래와 같이 싱글톤 클래스를 만들어보자. 2020/01/07 - [게임을 만들자/게임 서버(C#)] - c# 싱글톤 제네릭 클래스 using System; us..

Unity, Spine SetSkin 사용
게임을 만들자/Spine 2020. 9. 20. 14:57

Unity에서 런타임 중 스프인 오브젝트의 스킨을 바꿔야 하는 경우가 있다. SkeletonAnimation.Skeleton에 SetSkin이라는 함수가 있길래, 쉽게 변경이 가능한 줄 알았는데, 잘 변경 되지 않았다. Skeleton.Update()함수도 해봤는데 먹히지 않았다. 뭐가 문제지? 라고 생각하고 검색해 본 결과 SetSkin함수 호출 후, SetSlotsToSetupPose()라는 함수를 호출해야 한다고 한다. public void SetSkin(string skin_name) { m_animation.Skeleton.SetSkin(skin_name); m_animation.Skeleton.SetSlotsToSetupPose(); } 위 코드처럼 해보면 깔끔하게 잘 변경된다.

article thumbnail
Unity, 앱 종료 및 재시작(안드로이드)
게임을 만들자/Unity 2020. 9. 17. 21:11

유저가 뒤로가기 버튼을 두번 연속으로 눌러 앱을 종료시키거나, 업데이트가 후, 재시작이 필요한 경우가 있다. 1. 앱 종료 public static void EndApp() { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else UnityEngine.Application.Quit(); #endif } 앱 종료는 에디터 상태인 경우와 앱 상태인 경우가 조금 다르다. 방법은 위와 같이, 에디터의 경우엔 UnityEditor클래스를 이용하고, 앱은 UnityEngine.Application클래스를 이용한다. 2. 앱 재시작(안드로이드) if (Application.isEditor) { jdUtil.EndApp(); return; } ..

article thumbnail
Unity, Spine, SkeletonDataAsset has missing Atlas

Spine에서 만든 캐릭터를 Unity로 가져오는데 아래 그림과 같은 에러가 발생했다. 인터넷을 검색해보니, 스파인 프로그램에서 내보기 할 때, altas파일에 txt를 꼭 확인하라고 하는데, 잘 돼 있는데도, 에러가 계속 발생했다. (다른 스파인 파일들은 잘 되는데 얘만 안됐었음..) 이럴 떄는 아래와 같이 해보자. 우선 [Import without atlases]를 클릭하자. 아틀라스 없이 임포트 하는 경우 위와 같이 된다. 임포트 후 생성된, SkeletonData 파일을 클릭한 후, Inspector를 보면, Atlas Assets Size가 0임을 확인 할 수 있다. Atlas Assets Size를 1로 바꾸고, Element에 아틀라스 파일(왼쪽 빨간 박스)을 추가해보면, 이미지가 잘 적용 ..

article thumbnail
Unity, c# Http Get 통신
게임을 만들자/Unity 2020. 9. 8. 13:49

현재 나는 소켓통신으로 서버와 데이터를 주고 받지만, 게임의 버전 정보나, 이벤트 성 데이터를 받아 올 때는, Http통신을 이용하고 있다. 1. 코드 public static string HttpGet(string url) { string responseText = string.Empty; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.Timeout = 30 * 1000; // 30초 request.Headers.Add("Authorization", "BASIC SGVsbG8="); // 헤더 추가 방법 using (HttpWebResponse resp = (HttpWebRes..

Unity, String(Hex) To Color, Color To String(hex)
게임을 만들자/Unity 2020. 7. 22. 16:18

유니티 Color객체를 생성할 때, 생성자 파라미터로, rgba색상 값을 입력할 수 있다. 이때 r,g,b,a 각각의 값은 [0~1]사이의 소수점이다. 하지만 우리가 인터넷이나, 포토샵 등 원하는 색상값을 검색해 온 경우, 'FF00B5' 16진수 문자열 값을 얻어오는 경우가 많다. 이런 경우 Color객체를 생성하는 방법에 대해 알아보자. 1. String(Hex) To Color 16진수 문자열을 Color객체로 바꾸는 방법은, 16진수 문자를 각각을 [0~255]사이 숫자로 바꾸고, 그 결과를 255로 나눠주면 된다. public static Color StrToColor(string str) { str = str.ToLowerInvariant(); if(str.Length == 6) { char[..