Unity2015. 8. 19. 18:03

Unity, Ads, Unity Ads, 보상, 광고


 유니티 애즈(Unity Ads)를 이용하여, 광고를 시청하면 골드를 보상받는 예제를 포스팅합니다.


 구현하고자 하는 기능은 다음과 같습니다.

* 구현 기능

 - 버튼 클릭 -> 유니티 애즈 시청 -> 골드 보상




 다음은 작업의 전체 순서입니다.

#1. 유니티 애드 설정 (Web 작업)

#2. 유니티 프로젝트 적용 및 테스트 (Unity3D, 디바이스 작업)



#1. 유니티 애드 설정 


1. https://unityads.unity3d.com에 로그인 합니다.


2. 게임탭에서 '+새 게임 추가'를 클릭합니다.


3.플랫폼을 선택(안드로이드)하고, '여기'를 클릭합니다. 출시전이므로 어플리케이션 찾기를 건너뜁니다.


4. 이름을 입력하고, '게임 추가'버튼을 클릭합니다. 정보 인증 설정후 '계속'을 클릭합니다.


5. 게임탭에 새 게임이 추가되었습니다. 게임 ID는 본문 뒷부분에서 코드(UIManager.cs)에 사용합니다. 

 게임 이름(UnityAdsTest)을 클릭합니다.


6. '수익화 설정'탭에서, '고급 설정 보기'를 클릭합니다.


7. Video ad placement의 '설정'을 클릭합니다.


8. 옵션을 설정합니다. 강제 시청을 위해 '동영상 건너 뛰기 허용' 항목의 체크를 제거하고, '저장'을 클릭하여 완료합니다.




#2. Unity 프로젝트 적용 및 테스트


1. Unity3D 새 프로젝트를 생성합니다. 타이틀은 UnityAdsTest로 하였습니다.


2. Unity Ads 패키지를 임포트합니다. 유니티 애셋 스토어에서 다운받을 수 있습니다. (https://www.assetstore.unity3d.com/en/#!/content/21027)


3. Canvas및 버튼(BtnUnityAds)을 생성합니다. 각 설정은 임의로 합니다.


4. C# 스크립트, UIManager.cs를 생성하고 다음의 코드로 대체합니다.

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
using UnityEngine;
using System.Collections;
 
using UnityEngine.UI;
using UnityEngine.Advertisements;
 
public class UIManager : MonoBehaviour {
 
    public Button _BtnUnityAds;
    ShowOptions _ShowOpt = new ShowOptions();
    int _Gold = 0;
 
    void Awake()
    {
        Advertisement.Initialize("63660"true);
        _ShowOpt.resultCallback = OnAdsShowResultCallBack;
        UpdateButton();
    }
 
    void OnAdsShowResultCallBack(ShowResult result)
    {
        if (result == ShowResult.Finished) _Gold += 100;
    }
 
    void UpdateButton()
    {
        _BtnUnityAds.interactable = Advertisement.IsReady();
        _BtnUnityAds.GetComponentInChildren<Text>().text 
            = "See ads and earn gold\r\nGold = " + _Gold.ToString();
    }
 
    public void OnBtnUnityAds()
    {
        Advertisement.Show(null, _ShowOpt);
    }    
 
    void Update() { UpdateButton(); }
}
 
cs

- 15: Advertisement.Initialize( "게임ID", 테스트광고 여부 )

: 게임ID는 유니티 애드 사이트에서 얻을 수 있습니다.

: 출시전 테스트를 위해서 테스트 광고 여부 인자를 true로 합니다. 

> true: 테스트용 광고가 나옵니다.

> false: 실제 광고가 나옵니다.


- 20: OnAdsShowResultCallBack( ShowResult result )

: 광고 보기후 호출되는 콜백입니다. result인자의 값에 따라 처리합니다.


- 27: _BtnUnityAds.interactable = Advertisement.IsReady()

Advertisement.IsReady()는 광고가 보여줄 수 있는 상태인지를 반환하는 함수입니다. 보여줄 수 없다면 버튼을 비활성화 시킵니다.


5. UIManager를 Canvas의 컴포넌트로 삽입합니다.


6. Canvas의 인스펙터창에서 UIManager: Btn Unity Ads의 인자로 BtnUnityAds오브젝트를 지정합니다.


7. BtnUnityAds의 OnClick 이벤트를 지정합니다. 오브젝트는 Canvas로, 함수는 UIManager:OnBtnUnityAds로 합니다.


8. 안드로이드 플레이어 설정을 마친후 빌드하여 테스트합니다.

    : 실행하면 버튼이 잠시후 활성화됩니다. ( Advertisement.IsReady() )


: 버튼을 클릭하면 보여지는 테스트용 광고


: 광고 종료후 Gold가 100으로 되었습니다.



Posted by GNUPart
Unity2015. 8. 12. 16:29

Unity, Posting, FaceBook, Twitter, No PlugIn


Posting to FaceBook or Twitter on Unity3D without any plugins

- Reference: http://unity3dtrenches.blogspot.kr/2014/07/unity3d-how-to-post-to-facebook-from.html



* 페이스북 어플리케이션 등록 및 포스팅 테스트


1. 페이스북 개발자 페이지에 로그인후 My Apps탭을 엽니다. (개발자로 등록된 상태여야 합니다.)


2. Add a New App을 클릭합니다.


3. 팝업에서 플랫폼을 선택합니다. (여기서는 Android선택)



4. 제목을 입력하고, Create New Facebook App ID를 클릭합니다.


5. 각각의 항목을 설정하고 Create App ID를 클릭합니다.


6. 이후 나오는 화면에서 아래로 스크롤하면 Tell us about your Android project항목이 있습니다.



- Package Name: 이전 포스팅에서 작업했던 유니티 프로젝트의 Bundle Identifier를 입력합니다.

- Default Activity Class Name: 페이스북 SDK용 항목같은데, 임시로 입력합니다.

- '다음'버튼을 클릭합니다.


7. 팝업창이 뜹니다. 구글 플레이에서 입력한 패키지를 찾을수 없다는 내용인데, 테스트용이므로 'Use this package name'을 클릭하여 넘어갑니다.


8. 해쉬키 입력입니다. 역시 테스트용이므로 넘어갑니다.


9. 다음에서 Skip to Developer Dashboard를 클릭합니다.


10. 대쉬보드 입니다. App ID를 복사하여 유니티 프로젝트, UIManager.cs의 FACEBOOK_APP_ID로 설정합니다.



11. 유니티 프로젝트를 빌드하고 테스트를 합니다. 윈도우 및 안드로이드에서 테스트 할 수 있습니다.


- 윈도우 테스트




- 안드로이드 테스트















Posted by GNUPart
Unity2015. 8. 12. 15:31

Unity, Posting, FaceBook, Twitter, No PlugIn


Posting to FaceBook or Twitter on Unity3D without any plugins

- Reference: http://unity3dtrenches.blogspot.kr/2014/07/unity3d-how-to-post-to-facebook-from.html


 앱에서 페이스북에 포스팅하는 기능을 구현하는데는 여러가지 방법이 있습니다. 안드로이드 기준으로는 페이스북 SDK를 이용한다거나, ACTION_SEND Intent를 사용하는 방법입니다. 하지만 유니티에서 사용하려면 플러그인을 사용해야 합니다. 또한 ACTION_SEND의 방법으로는 페이스북에 링크나 텍스트를 올릴 수 없고, 오직 이미지만 포스팅할 수 있죠. 

 본문에서는 유니티의 OpenURL함수를 사용하여 포스팅하는 방법을 소개합니다. 각 플랫폼의 웹브라우저를 사용하는 방법으로써 간단한 코드로 플랫폼 구분없이(Android, iOS, 윈도우) 사용이 가능합니다.


 구현하고자 하는 기능은 다음과 같습니다.

* 구현 기능 : 플러그인 없이 포스팅

 - 'Posting to FaceBook' 버튼 클릭 -> 페이스북에 이미지, 글 및 링크 올리기

 - 'Posting to Twitter' 버튼 클릭 -> 트위터에 링크 올리기



 기능 구현을 위해서는 페이스북 개발자로 등록되어 있어야 하며(http://developers.facebook.com), 페이스북에 앱을 등록해야 합니다. 개발자 등록 설명은 생략하고, 페이스북 앱등록에 관련해서만 다음 절에서 설명하겠습니다.

 

 다음은 작업의 전체 순서입니다.

 #1. 유니티 프로젝트 생성 (Unity3D 작업)

 #2. 페이스북 어플리케이션 등록 및 포스팅 테스트 (Web/디바이스 작업)



* 유니티 프로젝트 생성


1. 유니티에서 새 프로젝트를 생성하고 Android플랫폼, Bundle Identifier를 설정합니다. (Scene은 MainScene으로 저장)



2. Canvas를 생성하고, 하위에 버튼을 생성합니다. Canvas는 다음과 같이 임의로 설정했습니다.


3. 'Button'의 이름을 'BtnFaceBook'으로 수정하고, 대충의 위치를 설정합니다.


4. 'UIManager' 이름으로 C# Script를 생성하고, Canvas의 컴포넌트로 지정합니다.


5. UIManager.cs에 다음을 코딩합니다.

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
using UnityEngine;
using System.Collections;
 
public class UIManager : MonoBehaviour {
 
    const string FACEBOOK_APP_ID = "0123456789xxxx";
    const string FACEBOOK_URL = "http://www.facebook.com/dialog/feed";
    const string TWITTER_ADDRESS = "http://twitter.com/intent/tweet";
 
    public static void ShareToFacebook(
        string linkParameter, string nameParameter, string captionParameter,
        string descriptionParameter, string pictureParameter, string redirectParameter
        )
    {
        Application.OpenURL(FACEBOOK_URL + "?app_id=" + FACEBOOK_APP_ID +
        "&link=" + WWW.EscapeURL(linkParameter) +
        "&name=" + WWW.EscapeURL(nameParameter) +
        "&caption=" + WWW.EscapeURL(captionParameter) +
        "&description=" + WWW.EscapeURL(descriptionParameter) +
        "&picture=" + WWW.EscapeURL(pictureParameter) +
        "&redirect_uri=" + WWW.EscapeURL(redirectParameter));
    }
 
    public static void ShareToTwitter(string textToDisplay, string language)
    {// language: "en", "kor", "jap"
        Application.OpenURL(TWITTER_ADDRESS +
                    "?text=" + WWW.EscapeURL(textToDisplay) +
                    "&amp;lang=" + WWW.EscapeURL(language));
    }
    
    public void OnBtnFaceBook()
    {
        ShareToFacebook(
            "http://sunbug.net",            // linkParameter
            "My Funny Game",                // nameParameter
            "My Caption Message",           // captionParameter
            "My Description Message",       // descriptionParameter
            "https://www.google.co.kr/images/srpr/logo11w.png"//pictureParameter
            "http://www.facebook.com"       // redirectParamter
            );
    }
 
    public void OnBtnTwitter()
    {
        ShareToTwitter("http://sunbug.net""kor");
    }
 
}
 
 
cs


- FACEBOOK_APP_ID : 페이스북 앱의 아이디입니다. '페이스북 어플리케이션 등록'에서 설명합니다.

- public static void ShareToFaceBook( ) : 페이스북에 포스팅하는 함수입니다(편의상 static로 지정). 각 인자는 다음과 같습니다.


> linkParameter: 링크할 URL

> nameParameter: 제목

> captionParameter; 이미지 설명

> descriptionParameter: 본문

> pictureParameter: 이미지 URL

> redirectParameter: 포스팅 후 연결할 URL . 보통 http://www.facebook.com으로 합니다.


6. BtnFaceBook의 OnClick 이벤트를 지정합니다. Object에는 Canvas를, Function에는 UIManager::OnBtnFaceBook()을 설정합니다.


7. BtnTwitter을 생성하고 위와 마찬가지로 UIManager::OnBtnTwitter()으로 이벤트 설정을 합니다.


8. 페이스북 개발자 페이지에서 어플리케이션 생성/등록을 합니다. 

  ( 다음을 참조하세요: 유니티 - 플러그인 없이 페이스북 및 트위터에 포스팅하기 #2/2 )






Posted by GNUPart