zoukankan      html  css  js  c++  java
  • 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 。另外其它的选项也在其中,请大家仔细阅读。

  • 相关阅读:
    timeit模块
    python中的del
    python的默认参数
    python3中的nonlocal 与 global
    python通俗讲解闭包
    vlc 视频播放器的快捷键
    Python的重要知识点汇总3
    Python的重要知识点汇总2
    Python的重要知识点汇总1
    01玩转数据结构_08_堆和优先队列
  • 原文地址:https://www.cnblogs.com/aosting/p/3459878.html
Copyright © 2011-2022 走看看