본문 바로가기

Unity

(14)
[Unity][c#] Firebase 에서 받은 데이터를 객체로 변환하기 유니티에서 파이어베이스의 값을 가져와 dictionary형태로 받았는데, 바로 내가 원하는 오브젝트 형식으로 변환해서 관리하고싶을때 이 방법을 사용하면 된다. 스태틱 클래스 생성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 public static class ObjectExtensions { public static T ToObject(this IDictionary source) where T : class, new() { var someObject = new T(); var someObjectType = someObject.GetType(); foreach (var item in source) { ..
Assets 폴더 안의 에셋 동적으로 로딩하기 보통 resources 폴더 안에 있는 에셋(이미지, 음악)등을 로드할때에는 resources.load() 나, resources.loadall() 을 이용하면 된다. 하지만 Resources 폴더 외에 다른 폴더에있는 에셋을 로드해야 할 때가 있다. 하나의 에셋을 로드할땐 AssetDatabase.LoadAssetAtPath(assetPath, typeof(에셋타입)); 을 사용하면된다. resources.loadall() ; 대신 사용할 함수를 찾고있었는데, 함수가 따로 마련되지는 않은것같다. 따라서 Assets 폴더의 하위폴더 속 모든 에셋을 로드하는 방법을 알아보려한다. string[] guids = AssetDatabase.FindAssets("", new string[] { "Assets/Ch..
[Unity] Localization : 다중언어 지원 게임을 개발하면 한국어버전/영어버전으로 여러가지 버전을 만들어야 할 일이 있다. 이럴때는 빌드를 따로 두번 하는것이 아니라 설정을 통해 언어를 정하고, 하나의 빌드본안에서 json파일을 읽어 게임내 텍스트의 언어를 바꾸도록한다. 오늘은 이 기능을 구현해보자!! 1. LocalizationData.cs [System.Serializable] public class LocalizationData { public LocalizationItem[] items; } [System.Serializable] public class LocalizationItem { public string key; public string value; } 이 클래스는 언어데이터를 담을 클래스이다. Monobehaviour 을 상속받지..
[Unity] LoadingScene 만들기 씬에서 씬으로 전환할 때 로딩화면을 사용하지 않으면 부자연스러울때가 있다. 혹은 로딩시간이 오래걸릴 때 로딩바를 넣거나, 게임 팁을 추가하거나 할 수 있다. 로딩씬을 따로 추가하여 a씬에서 b씬으로 넘어갈때 a씬->로딩씬 -> b씬으로 이동하여 자연스러운 씬의 이동을 노려보자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 public class LoadingSceneMa..
[Unity] CSV 파싱하기 게임정보를 csv파일에 저장하고, 게임시작시 파싱하여 데이터를 관리하는 경우가 많다. csv를 파싱하는방법을 알아보자 using UnityEngine; using System; using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; public class CSVReader { static string SPLIT_RE = @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))"; static string LINE_SPLIT_RE = @"\r\n|\n\r|\n|\r"; static char[] TRIM_CHARS = { '\"' }; public static List Re..
[Unity] Generic Singleton 사용하기 싱글톤은 단 하나의 인스턴스만 생성할 수 있도록 하며, unity의 경우 특정 오브젝트에 컴포넌트로 붙이지 않아도 어디에서나 사용할수있다는 장점이 있다. 주로 매니저클래스나 컨트롤러 클래스를 싱글톤으로 만들어 관리한다. 싱글톤 패턴은 다양한데, 나는 제네릭을 사용하여 구현하였다. >>Singleton.cs using System; using System.Reflection; namespace UnityEngine { public partial class GameFramework : MonoBehaviour { public class Singleton where T : class, new() { public Singleton() { } ~Singleton() { } public static T GetIns..
[Unity] Unity3D Google Play Service 연동하기 1.구글 플레이 콘솔에서 에 새 게임을 추가한다. 추가하는 내용은 생략! 2.생성된 게임에 들어가면 왼쪽바에 '연결된 앱' > 안드로이드로 생성. 3.앱 승인 버튼을 누르면 서명인증서 지문(SHA-1)을 입력한다. CMD창을 켜서 JAVA JRE가 있는 폴더로 이동해준다. 나의 경우 C:\Program Files (x86)\Java\jre1.8.0_211\bin 경로에 jre가 있었다. 다음과같은 명령어를 입력한다. >keytool -list -keystore [앱 키스토어가 저장된경로] 녹색 밑줄(SHA-1)을 복사하여 웹의 Android Oauth 클라이언트 만들기 하단에 붙여넣기 해주면된다. 4. sdk를 유니티에 설치한 후 유니티세팅 https://github.com/playgameservices..
[Unity] Unity2D Sprite Renderer를 이용한 캐릭터 체력바 구현 스프라이트 위에 적의 체력을 표시하는 체력바를 구현하려했는데 Slider는 ui에서만 가능해서 어려움을 겪고있었다. 그러던 중 sprite를 이용하여 마치 체력바처럼 구현하는 방법을 발견했다. 참고사이트 : https://connect.unity.com/p/creating-a-fill-effect-with-sprites-in-unity Creating a Fill Effect with Sprites in Unity - Unity Connect Using SpriteRenderer objects instead of Canvas Images. connect.unity.com transparent의 scale을 조절해서 체력이 증/감소하는걸 구현했다. 그런데 주의해야 할 점은, 이미지에 피봇을 설정해야 원하는..