2014-02-21 4 views
1

좋아, 우리는 adbannerview로 만든 통합을 사용하고 있습니다. 우리는 기본 코드를 사용Unity Adbannerview는 계속 전화를 걸었습니다.

private ADBannerView banner = null; 
void Start() 
{ 
    banner = new ADBannerView(ADBannerView.Type.Banner, ADBannerView.Layout.Top); 
    ADBannerView.onBannerWasClicked += OnBannerClicked; 
    ADBannerView.onBannerWasLoaded += OnBannerLoaded; 
} 
void OnBannerClicked() 
{ 
    Debug.Log("Clicked!\n"); 
} 
void OnBannerLoaded() 
{ 
    Debug.Log("Loaded!\n"); 
    banner.visible = true; 
    StartCoroutine(HideBanner); 
} 

IEnumerator HideBanner() 
{ 
    yield return new WaitForSeconds(10); 
    banner.visible = false; 
    Destroy(this); 
} 

void OnDestroy() 
{ 
    ADBannerView.onBannerWasClicked -= OnBannerClicked; 
    ADBannerView.onBannerWasLoaded -= OnBannerLoaded; 
} 

이제 배너가 우리가 부르는 전화 십초 두 이벤트에서 탈퇴 한 후이 켜져 있는지 스크립트와 빈 게임 오브젝트를 파괴하는 파괴에 대해 표시되면. 나는 그것이 약간 극단적 인 것을 안다. 그러나 어떤 이유로 애플 리케이션에서 게임의 시작 부분에 배너를 표시 할 것이지만, 어떤 이유로 5 분 후에는 정말로 느려지 게 될 것이고 나는 그것이 무엇인가라고 정확히 지적했다. 다른 광고를 받으려고하는 광고와 관련이 있습니다. 왜냐하면 우리가 adbanner 스크립트를 완전히 파괴하지 않았을 때 다른 광고는 2 분 정도, 또 다른 광고는 5 분에로드되기 때문입니다. 그리고 우리가 광고를 없애고 나서 약 5 분이 걸리지 않았습니다.

이 문제를 해결하는 방법을 모르십시오.

+0

Unity에서 AdBannerView를 제어하는 ​​것과 비슷한 문제가 있습니다. 시각 표시를 false로 설정하는 것은 가끔씩 만 작동하는 것처럼 보입니다. 배너를 null로 설정하면 새 장면에서 배너를 클릭 할 수 없게됩니다. 이 문제에 대해 진전을 보았습니까? –

+0

Nunery, 전혀 아닙니다. 꽤 나쁜 시스템입니다. 이것은 내가 알아 낸 것입니다 (100 % 정확하지 않을 수도 있음). 그것은 통일성을 통해 통제되지 않습니다. 아이디를 듣기 시작하면 유니티에서 무엇을 하든지 상관없이 아이디를 계속 보낼 것입니다. 나는 또한 문제를 해결할 수없는 ItunesConnect 지원에 대해서 말했고, 개발자에게 티켓을 제출하라고 지시했다. 나는 그것을했다. 그들은 IAd가 제 3 자이기 때문에 IAd를 다루지 않는다고 대답했다. 그리고 불행하게도 나는 일을 시작한 이래로 더 깊이 파고 들지 못했습니다. – Beastwood

+0

Prime31 플러그인을 사용하여 응용 프로그램에 필요한 컨트롤을 얻었습니다. –

답변

0

나 또한 여기에 잘못하지만 나에게 나타납니다 어떻게

banner = new ADBannerView(ADBannerView.Type.Banner, ADBannerView.Layout.Top); 

를 호출 할 때 실제로 해당 스크립트의 내부 변수이지만 유니티 외부의 객체를 생성하는 것입니다 수 있습니다. Xcode 측에서 생성 한 뷰와 마찬가지로 Unity 코드는 Unity 컨텐트 용으로 생성되는 OTHER 프레임 내에서 실행됩니다.

그래서 스크립트를 파괴하면 해당 객체에 대한 참조가 느슨하게되지만 객체는 도달 범위 밖에서 계속 유지됩니다. 이제 다음 번에 Start가 실행될 때 Unity 외부에 또 다른 객체가 생성되고 실제로 2 개의 배너가 서로 위에 표시됩니다. 따라서 banner = new line을 호출하는 횟수가 많을수록 점점 더 많은 배너를로드하기 시작할 때 프로젝트가 더 느리게 진행됩니다.

이 시스템을 사용하는 방법은 주 메뉴로 가기 전에 부트 스트랩 장면을 만드는 것입니다. 한 번만로드 될 장면에서, 배너를 만들고로드시 파괴하지 않도록 개체를 설정합니다. 거기에서 가시성을 설정 만하지만 절대로 파괴하지 마십시오.

iAd의 Apple 설명에서 알 수 있듯이 광고를 처음 등록 할 때 두 번째보기가 만들어지고 그보기가 완전히 관리됩니다. 그래서 내가 올바르게 이해한다면, 화합은 또한 그것을 통제하지 못합니다. 그리고 화합은 기본적으로 자식보기에서 자식보기로 실행되어서 파괴 할 수 없으므로 파괴 할 수 없습니다.

다시 말하지만 잘못 될 수는 있지만 이해하는 방법입니다 ...