Unity3D Android项目调用插屏广告

参考了雨松MOMO的文章。

http://www.xuanyusong.com/archives/667

http://bbs.18183.com/forum.php?mod=viewthread&action=printable&tid=149758

1首先准备unity为交互Android自备的class.jar文件。

所以需要将接口classes.jar引入至当前工程但中。接口包的所在地,打开Finder->应用程序->Unity->点击Unity图标,鼠标右键选择“显示包内容”->Contents->PlaybackEngines->AndroidPlayer->bin->classes.jar 。接口包引入工程后,开始编写JAVA代码。


2新建android 项目

将class.jar复制到libs文件夹中,将要使用的插屏广告也放入,并按照对应的要求,配置好AndroidManifase.xml.

我是和MOMO的代码一样,只是在UnityTestActivity.java添加了

public void ShowAd(String adTag){
        MIXView.showAd(this, adTag);
    }

首先Build一下当前的Eclipse工程,代码所有的.class文件都生成在了Android工程的bin文件夹中,下面需要对这些.class文件进行打包。

请大家仔细看一下解开的包应该与你的Android对应的包名保持一致,我的包名是com.xys,所以文件夹就是class->com->xys->.class代码。

也就是说你要在class目录下执行jar -cvf class.jar *

3 创建Unity工程

请大家开始创建Unity工程。如下图所示,Unity工程中文件夹的结构如下,Plugins->Android的名称不能修改,必需保持一致。接着把Eclipse中Android的工程文件拷贝至这里,除了Android工程中的src文件夹,将其它文件夹全部拷贝至Plugins->Android文件夹中。最后在Plugins->Android文件夹中创建bin文件夹,然后将刚刚生成的.jar文件拷贝进来,jar的名称可以随便修改,但是jar包里面必须是com->xys->你的class文件,否则运行程序后提示找不到类文件。

      最后在Unity工程中创建一个C#脚本,就是上图中的Test.cs,直接将它绑定在摄像机中,它用来通知界面打开Activity。如下图所示,利用GUI在屏幕中创建两个按钮,点击按钮打开不同的Activity。

 

public class Test : MonoBehaviour
{

    // Update is called once per frame
    void Update ()
    {
        //当用户按下手机的返回键或home键退出游戏
        if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home) )
          {
               Application.Quit();
          }
    }

    void OnGUI()
    {
        if(GUILayout.Button("OPEN Activity01",GUILayout.Height(100)))
        {
            //
             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
             jo.Call("StartActivity0","first activity");
        }
        if(GUILayout.Button("OPEN Activity02",GUILayout.Height(100)))
        {
             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
             jo.Call("StartActivity1","second activity");
        }
        
        if(GUILayout.Button("show Ad",GUILayout.Height(100)))
        {
            //i have change the package name to  "com.unity3d.player.UnityPlayer"
             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
             jo.Call("ShowAd","default");
        }
    }

}

最后大家一定要注意Unity中的包名,要和Android工程保持一致,否则无法调用。如下图所示,Bundle Identifier* 当前项目为com.xys 。另外其它的选项也在其中,请大家仔细阅读。

原文地址:https://www.cnblogs.com/aosting/p/3459878.html