본문 바로가기

IT/게임제작

2016/09/05 개발노트 GCM서버, BookFlip, FileIO, RuntimePlatform

1. 푸쉬서버를 구축해 보자



예전부터 푸쉬서버 구축해보고 싶었는데, 

문제는 안드로이드나 애플을 각각 다르게 해야한다는 점에서 아예 포기를 했는데, 

이번에 GCM이 3.0으로 버전업이 되면서 둘다 지원한다고 한다.


그리고 AWS로 기본 서버를 구축하고 있는 상태이니까 한번 도전해 보고 싶다.





2. 책넘기기, Book Flip


단어장 어플을 만들겠다고 몇년전부터 생각했는데, 항상 흐지부지하게 아무 결과도 남기지 못했다.

유니티 애셋 스토어에 보면 책넘기는 효과가 무료로 공개되어있으니까 그걸 함 사용해서 만들어 보자.



3. TEXT파일 입출력


아무리 서버가 있고 DB가 있어도, 역시 가장 편하고 기본이 되는 존재는 TXT파일이지 않을까 한다.

유니티에서도 간단히 텍스트 파일을 입출력할수 있는데, c#에서 기본제공하는 인코더는 한글을 지원하지 않는다.


하지만 인자만 조금 고쳐주면 해결가능하다. 코드는 다음과 같다

Ex>  string[] lines = System.IO.File.ReadAllLines("ErrorList.log", Encoding.Default);


그리고 이 텍스트 파일은 실행할대 Asset밑의 StreamingAssets 폴더를 가지고 실행하기때문에,

원하는 텍스트 파일의 주소는 다음과 같다.(쪼금 귀찮은게 일반 PC, iOS, Andorid 다 다르다.)


일반PC: path = Application.dataPath + "/StreamingAssets"; iOS: path = Application.dataPath + "/Raw"; Android: path = "jar:file://" + Application.dataPath + "!/assets/";




4. 플랫폼 알아오기


3번에서 보면알수있듯이.플랫폼마다 localPath정보가 달라진다. 

그러므로 유니티 내부에서 실행될때마다 현재 실행중인 플랫폼을 가져와서 그에 맞는 주소를 할당해주어야만 한다.


이것도 역시 간단하게 해결할수 있다.


if (Application.platform == RuntimePlatform.Android)

print ("Android");

else if (Application.platform == RuntimePlatform.IPhonePlayer)

print ("IPhone");

else if (Application.platform == RuntimePlatform.WindowsPlayer)

print ("window");


보통 우리가 유니티 화면에서 실행하면 플랫폼은 WindowEditor로 할당된다.



5. 디바이스의 유니크정보


모든 디바이스들은 그 디바이스만의 유니크한 식별정보를 가지고 있다.

생각해보자 만약, 사용자 이름을 넣어도 그 이름이 유니크한 이름이 될지는 아무도 보장하지 못할것이다.

그렇다면 그 이름은 프라이머키로서의 가치는 없기때문에 DB에서 사용할수가 없다.

하지만 디바이스 식별정보를 가지고 구분한다면 충분히 프라이머키 역활을 수행할수 있을것이다.


유니티에서 디바이스의 식별정보를 얻어오는 코드는 다음과 같다.

SystemInfo.deviceUniqueIdentifier


이외에도 디바이스의 국가정보와 식별정보를 가져오는 예시코드 링크