在Unity游戏加入广告大致有以下几种方式:
- 导入Android Jar包
- 导出游戏为Android项目(在Build时选中Google Android Project,这种方法可以参考将Unity3D游戏移植到Android平台上)
- 使用Unity的广告插件(详见Asset Store,如Google Mobile Ads SDK)
其中以第一种最常见,我用的也是这一种。
第一种方式的整个流程大致是这样:
- 新建一个Android项目,加入调用某种广告SDK的Java代码。
- 导出项目到Jar包,放到Unity项目中。
- 在Unity中调用Java写好的方法。
这个过程可以参考这两篇文章:unity3d插入android有米广告和Unity 3D 关于给APK包加广告的流程。
如果你按照步骤成功加入了广告,可以跳过下面的部分。我在这个过程中遇到了几个问题。
第一个是 CommandInvokationFailure: Failed to re-package resources。
出现这个问题的原因是Android的资源没有整合好。首先检查下文件层次结构:
Assetes/
--------Plugins/
----------------Android/
------------------------AndroidManifest.xml
------------------------SDK文件
------------------------导出的Jar包
如果仍然有问题,看看是不是我遇到的 AppCompat 相关的问题。我对Android了解的不多,解决的方法也不见得高明:
- 在建立Android项目时,不要创建主题。
- 最低版本选择4.0以上。
好了,问题解决了。
在Java项目里面,根据SDK文档,一般都是写好了一些方法,可以让你方便地创建广告条、插屏广告之类的。
在Unity中选择一个GameObject,使用下面代码得到Java类的对象:
jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
然后用 AndroidJavaObject 的 Call 方法即可,如:
jo.Call("showSpot");
最后是关于游戏的图标和名字。
如此加入广告代码之后,Unity项目的图标会被Android项目中的覆盖。所以,最方便的是在创建Android项目时就确定Icon。
而游戏的名字还是Unity项目中的。
以上都是我在尝试向Unity中加入广告时,参考他人博客和自己摸索得出的,如有错误请指出。请以广告SDK文档为准。