facebook에서 unitypackage형태로 sdk를 배포한지 어언 몇달이 지났으나
아직은 beta버젼이라 생각보다 삽질을 많이 하게되더라구요..
직접 개발하기는 막상 귀찮아서 해결한 문제점들을 다른분들의 삽질을 방지하기 위해 정리해둡니다.

테스트 환경
Unity4.3.0
FacebookSDK 4.2~4.3.4(가장 최신버젼)

빌드가 안되는 경우 or FB.Init함수의 콜백메서드가 호출되지않는경우
FacebookSDK는 기본적으로 Assets에 임포트 되었을때 정상적으로 작동됩니다.
만약에 폴더구조가 정해진 프로젝트에서 작업한다면 코드상의 경로들을 모두 수정해주어야 합니다.


FB.Init에 대한 콜백 메서드는 호출되지만 FB.Login를 호출해주어도 아무런 창도 변화가 없는경우
안드로이드 빌드시 발생하는 문제 FacebookSDK는 Android API 4.0이상 부터 지원한다.
이게 만약에 빌드시 4.0이하면 콘솔창에 출력되어주어야하는데 처음에 import한 이후 이 로그를 보기 힘들기 때문에 많은 사람들이 이것때문에 삽질하더라...
PlayerSettings - Other Settings - Android Minimum API를 4.0'ice cream'이상으로 설정해주도록하자.

FB.Login를 통하여 로그인, 해당 앱을 수락했지만 콜백메서드가 호출되지 않는경우
development build 체크후 실행해보면 아래와 같은 로그가 찍혀있을것입니다.
FacebookSDK.WebDialog(1588): Redirect URL: fbconnect://success#access_token=CA.....
위 로그의 경우 페이스북 어플이 설치되었다면 확인할수없으니 이런 현상이 발생하는 경우 페이스북 어플리케이션을 삭제한후 위와 같은 로그가 출력되는지 확인합시다.
위 로그는 로그인 인증이 성공했고 그에 따른 access_token값이라던지 user_id를 넘겨주는데 이 리다이렉션 된 주소를 해당 어플에서 처리하지 못하는 경우에 발생합니다.
원래 ManifestMod.cs에서 자동적으로 activity class name을 변경하게 코드가 작성되어있는 데 이게 잘 작동을 안하나 봅니다...-_-
Assets/Plugins/Android/AndroidManifest.xml 을 열어
com.unity3d.player.UnityPlayerProxyActivity 부분을 com.facebook.unity.FBUnityPlayerActivity
같이 변경해줍니다.


페이스북 앱이 설치된 경우 페이스북 인증이 되지 않는 현상
앱이 설치되지 않은경우 www를 통해 인증 과정을 걸치지만 앱이 설치된 경우 Facebook어플을 통해 인증과정이 진행되는데 이 과정에서 어플과 통신이 안되는 경우가 대다수
위에 작성된 수정사항들이 모두 정상인지 확인한뒤 빌드하면 해당 문제 해결

LogCat에 찍히는 버전이 SDK 버젼과 다를 경우
Using SDK 4.2.5, Build 131022.2bb3e6026790434
위와 같은 식으로 로그가 찍히는 경우가 있습니다. facebook 측에 문의해본 결과 해당 SDK외에 다른 버젼의 SDK를 설치한적이 있으면 이전 버전과의 dll충돌로 이런현상이 발생한다고 합니다. 그러나 기능상의 문제가 없으니 그냥 우선 사용해도 무방 하다고하네요.  

iOS빌드시 링크 에러 문제
경로문제가 대부분입니다. 기본 경로로 설정해준뒤에 레퍼런스라이브러리에 Facebook.a 가 포함되어있는지 확인해봅시다.

추가적으로 문제점이 발생하는 것이 있다면 아래 링크로 페이스북에 알려주는 것이 좋을것 같습니다.
https://developers.facebook.com/bugs/create
Posted by 랜스.

Leave your greetings here.

최근에 모바일 게임 개발은 멀티플랫폼 지원이 당연시하게 되었기 때문에
크게 cocos2d-x 와 유니티를 이용하여 개발하는 추세입니다.

cocos2d-x가 처음 발표되었을때부터 사용하였고 unity의 경우 하이엔드 툴이다 보니
3D게임 개발외에는 크게 도움이 될것같지 않고 그마져도 직접 코딩하는게 최적화에 도움이 될것같았습니다. 또한 제가 cocos2d-x로 한창 개발하고 있을 당시 무료버젼의 경우 스플래쉬 이미지가 유니티 로고로 고정이 되어있었고 모바일 버젼의 경우 안드로이드와 아이폰 개별적으로 추가적인 라이센스 구매를 통해야만 개발이 가능하였습니다.

요 몇일 전 예전에 지인한테 받아둔 유니티 프로 라이센스가 유효기간이 다가온다는 메일을 받고 유니티를 처음 설치하고 구동해보았습니다. 몇가지 튜토리얼과 사용법들을 익히니 상당히 편리한 툴임은 부정할수 없더라구요.

앞으로 유니티를 사용하면서 유용하거나 팁이 될만한 글들을 블로그에 게시하려 합니다.

자 처음으로 유니티에서 에셋을 구매하는 방법을 알려드리겠습니다.

유니티를 실행한후 [Window] - [AssetStore] 를 클릭하여 에셋스토어에 접속합니다.



에셋 스토어에 접속하게 되면 수많은 에셋들이 보이는데 자신이 구매하고 싶은 에셋들을 Buy 버튼을 클릭하여 장바구니에 담아주도록 합시다.

저는 지인에게 간단한 2D게임개발용으로 추천해달라고 해서 알게된
NGUI
PlayMaker
SmoothMoves

와 PlayMaker와 NGUI를 연동시켜주는 것같은 PlayMaker NGUI Scripts 도 함께 구입하였습니다.



장바구니에 구입하고 싶은 에셋들을 모두 넣었다면 Checkout Now 를 클릭하여 결제를 진행하도록 합니다. ( 로그인이 필요합니다. )



결제는 페이팔, 신용카드 (비자,마스터)를 지원하며 저는 비자카드를 이용하여 위와 같은 정보를 입력하여 결제를 진행하였습니다.



결제가 완료되면 에셋 스토어에서 구입한 에셋들을 확인할수 있을것입니다. 각 에셋별로 Download를 받고 Import를 하면 이제 프로젝트에서 해당 에셋을 이용하여 개발할수있습니다.

이미 구입한 에셋을 다른 컴퓨터에서 설치해야할 경우 위와 같이 다운받고 임포트해주면 됩니다.
또 한가지 방법이 있는데 아래의 경로에 가시면 현재 컴퓨터에 다운받은 에셋들이 유니티패키지 형태로 저장되어 있습니다.

C:\Users\(사용자 이름)\AppData\Roaming\Unity\Asset Store

에셋은 한번 구입하면 개발사가 업데이트를 할때마다 해당 업데이트를 받을 수 있는것같더라구요.
에셋스토어에 에셋들이 상당히 많은데 주기적으로 업데이트가 되는 에셋을 받아야 차후에도 유용히
사용할수있을것같습니다.

Posted by 랜스.

Leave your greetings here.


KeyCode.Escape는 PC에서는 키보드상의 ESC에 대한 키코드이지만
안드로이드에서의 Back버튼에 대한 키코드이기도하다.
스크립트상의 Update메서드에서 아래와 같이 해당 로직을 처리할수있다.

  if( Input.GetKeyDown( KeyCode.Escape ))
  {
   // 처리할 로직
  }



Posted by 랜스.

Leave your greetings here.