Unity 3D:在现有的Android游戏场景中显示AdMob的横幅

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 3D:在现有的Android游戏场景中显示AdMob的横幅相关的知识,希望对你有一定的参考价值。

关于如何在现有的android项目现场显示AdMob的横幅,在一个Android项目中使用一个简单的Android JAR文件似乎不是一个简单的事情。我终于设法让AdMob在现有工作统一安卓游戏。对于本例,我使用统一为Windows版本3.5.2和最新的Eclipse为Android插件。

先决条件
我假设您有一个工作在你的电脑上安装Android的Eclipse插件。如果没有,请按照本教程准备工作区: https://github.com/unity-plugins/Unity-Admob。

Eclipse / Android的部分
• 如果你还没有这样做,下载AdMob JAR文件并注册一个账户。

• 创建一个新的Android项目,确保命名空间(包名称)是相同的。你可以通过构建统一设置命名空间,设置>播放器设置>Android选项卡>其它设置>“束标识符”。在我的示例中,我使用my.android.game。

• 复制AdMob JAR文件/libs到项目大文件夹。

• 在你的安装目录文件下搜索classes.jar文件,并复制到libsfolder Eclipse项目文件。

• 为了测试现实的广告,我们首先创建一个名为AdMobActivity.javaa的常规Android类。如下所示:
<!-- base permission -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<!-- base permission for location-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!-- base permission  required by chartboost and baidu-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!-- permission required by mmedia -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.microphone" android:required="false" />

• 更新你的Eclipse项目的AndroidManifest.Xml文件。如下所示:
<activity android:name="com.jirbo.adcolony.AdColonyOverlay" android:configChanges="keyboardHidden|orientation|screenSize"

android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />

<activity android:name="com.jirbo.adcolony.AdColonyFullscreen" android:configChanges="keyboardHidden|orientation|screenSize"

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />

<activity android:name="com.jirbo.adcolony.AdColonyBrowser" android:configChanges="keyboardHidden|orientation|screenSize"

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
<!-- guang dian tong -->
<service android:name="com.qq.e.comm.DownloadService" android:exported="false"/>
<activity android:name="com.qq.e.ads.ADActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize"/>
确保用实际来取代YOUR_PUBLISHER_ID AdMob发行商ID。
• 在Android手机上构建和运行应用程序,你将会看到AdMob的横幅被显示。如果你不参阅AdMob教程如何为Android应用程序实施横幅,将依旧实行本教程。

• 创建一个类称为AdMobUnityActivity.java,你可以用你以前创建的AdMobActivity.java类作为基础。类是这样的:
activity android:name="com.amazon.device.ads.AdActivity"

android:configChanges="keyboardHidden|orientation|screenSize"/>

<!-- InMobi -->
<activity android:name="com.inmobi.androidsdk.IMBrowserActivity"
android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:hardwareAccelerated="true" />

<!-- Millennial Media -->
<activity android:name="com.millennialmedia.android.MMActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|keyboard|screenSize" ></activity>

<!-- Keymob -->
<activity android:name="com.keymob.sdk.core.KeymobActivity"   android:theme="@android:style/Theme.Dialog"

android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
/>

android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent"/>

现在的类扩展UnityPlayerActivity相反的活动,我们创建的静态函数setupAdsStatic()离开oncreate()功能几乎是空的。我们也要把这一功能的全部内容包含到
AdManager.getInstance().initFromKeymobService(this, "1", new AdEventListener(), false);
否则我们将在调用函数时会得到一个错误或崩溃,还有一些内容在功能略有不同,以使它与Unity合作。
• 不完全确定以下步骤是必要的,但仅仅只有这么做了:AndroidManifest添加这一行,xml文件内应用程序标签:
<activity android:name="com.amazon.device.ads.AdActivity"
• 将项目导出到一个JAR文件,在项目中单击鼠标右键点击包管理器,选择导出。
现在你完成了在Eclipse中一部分,我们必须添加插件到Unity 3D。

Unity部分
• 复制创建JAR文件到你的Unity Android项目中,插入文件夹/插件/ Android /
• 同时复制AdMob JAR文件到相同的文件/插件/ Android /
• 完整的AndroidManifest.xml文件位于Unity Android项目,内容如下
class AdEventListener implements IAdEventListener {
        @Override
        public void onLoadedSuccess(int arg0, Object arg1,
                PlatformAdapter arg2) {
            Log.d(TAG, arg2+" onLoadedSuccess for type "+arg0 +" withdata "+arg1);
            if(arg0==AdTypes.INTERSTITIAL){
                ((IInterstitialPlatform)arg2).showInterstitial();//广告加载成功的时候就
            }
        }

        @Override
        public void onLoadedFail(int arg0, Object arg1, PlatformAdapter arg2) {
            Log.d(TAG, arg2+" onLoadedFail for type "+arg0 +" withdata "+arg1);
        }

        @Override
        public void onAdOpened(int arg0, Object arg1, PlatformAdapter arg2) {
            Log.d(TAG, arg2+" onAdOpened for type "+arg0 +" withdata "+arg1);
        }

        @Override
        public void onAdClosed(int arg0, Object arg1, PlatformAdapter arg2) {
            Log.d(TAG, arg2+" onAdClosed for type "+arg0 +" withdata "+arg1);
        }

        @Override
        public void onAdClicked(int arg0, Object arg1, PlatformAdapter arg2) {
            Log.d(TAG, arg2+" onAdClicked for type "+arg0 +" withdata "+arg1);
        }

        @Override
        public void onOtherEvent(String eventName, int adtype, Object data,
                PlatformAdapter adapter) {
            Log.d(TAG, adapter+" onLoadedSuccess for type"+adtype +" withEvent "+eventName);
        }
    }
确保在Eclipse项目中命名是正确的,改变YOUR_PUBLISHER_ID价值与实际价值的AdMob发行商ID。如果您已使用其他的Android插件,则会与本文所介绍的不同。

• 最终显示的广告横幅在现场Unity Android游戏创建或修改以下内容c#脚本:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<!-- base permission for location-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

横幅将会显示在你的手机屏幕的顶部或底部取决于你在Eclipse项目中的源代码。注意,此代码只在一个实际的Android设备上执行,而在Unity播放器中不会显示该代码!在您的Eclipse项目„setupAdsStatic”必须是相同的函数名。

以上是关于Unity 3D:在现有的Android游戏场景中显示AdMob的横幅的主要内容,如果未能解决你的问题,请参考以下文章

unity3d 怎样发布android程序

Android 和 Unity 3D 游戏开发

如何在Unity3d游戏中检索Android安装引荐来源网址

有没有办法从Adobe Air(flash)android应用更新到Unity3d应用,并保留共享对象中的本地保存?

如何把unity 集成到现有的android app

我用unity3d做了一个android射击游戏,现在我想把他改成通过无线多人联机的,自带的net