




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
12.在场景里创建一个空物体 AndroidBridge,把 UnityPluginTest.cs 脚本挂上去。然后把测 试脚本挂到任何一个物体上。添加场景到 build settings 里面。完成 playersettings 各种设置, 公司名、产品名、包名。 13.连接你的手机,大胆的 build and run 吧。 14.测试通过后,你就可以把插件导出为 unitypackage 了,仅需要导出 Plugins 文件夹, 这样在以后就可以方便的重用了。 将各种社交、计费、统计 等 SDK 做成 Unity 插件 请确保自己已经完全理解了第一部分的内容再继续。现在,你已经掌握了如何让自己的 java 代码可以在 unity 中执行了。你已经可以做很多有意思的事情了,比如浏览文件、弹 出对话框、调用系统分享但是你的老板想要的更多。下面我们通过一个实际的例子来看 如何把第三方 sdk 做成 unity 的插件。再讲例子的过程中我会把各种 sdk 可能遇到的问题都 提出来,这篇文章适用范围几乎是所有的 sdk。思来想去,为了感谢小企鹅日复一日为我 弹的广告,接下来就拿小米统计做个例子,一方面它比较简单,做例子不会太麻烦,另一 方面任何人都可以很方便的做测试。这个我也没用过,我们一起开始吧。 1.下载小米统计 SDK:/doc?page_id=4023,解压后看看里面有什么 东西:demo,doc ,sdk。打开 doc 里面的 html,看看说了什么东西。 2.创建 Eclipse Android 项目 MiStats(参考第一部分)。复制刚才解压后 sdk 目录里的 jar 文件到项目的 libs 目录。有的其他 sdk 要求添加 src,res ,assets 等等,同样复制过来。 有的 sdk 还会以 library 的形式提供 sdk,就是含有一个 library 项目,然后要求你导入这个 项目并引用它。当然不要理它了,直接把这个 library 项目里所有有价值的东西都复制过来。 由于 library 项目的包名和你的项目包名可能不同,导致自动生成的 R.java 包名发生变化, 你可以手动修改一下使用这个类的那些类的导入位置,或者到 Manifest 里把 package 改成 library 项目相同的包名,重新生成 R.java 就好了。如果任何现有源代码发现了乱码,请注 意修复项目编码。哎,我在说什么呢?文章来源于【狗刨学习网】 3.根据文档要求配置 Manifest。此 sdk 仅要求添加几个权限。最后 Manifest 是这样的: Manifest 中,你最好为 sdk 要求添加的内容写上注释,因为我们最后并不使用这个 Manifest 文件,而仅使用 sdk 要求的内容。某些 sdk 还会要求添加 Activity,service ,meta- data把他们都复制过来就行了。 4.开码,创建 MiStats 类。把文档中提到的可能在 Unity 中使用的东西都包装起来。这 里情况比较简单,基本只需要挨个调用现成的方法。此 sdk 中统计页面功能在游戏中用不 了,因为游戏基本就是一个 Activity,所以没写了。 package unityplugin; import android.util.Log; import com.unity3d.player.UnityPlayer; import com.xiaomi.mistatistic.sdk.MiStatInterface; public class MiStats / 初始化 public static void Initialize(String appId, String appKey, String channel, int policy, int interval) MiStatInterface.initialize(UnityPlayer.currentActivity, appId, appKey, channel); MiStatInterface.setUploadPolicy(policy, (long)interval * 1000); Log.i(“MiStats Device ID“, MiStatInterface.getDeviceID(UnityPlayer.currentActivity); / 上传(仅开发模式有效) public static void Upload() MiStatInterface.triggerUploadManually(); / 计数(value = 1) public static void Count(String category, String key) MiStatInterface.recordCountEvent(category, key); / 计算 public static void Calculate(String category, String key, int value) MiStatInterface.recordCalculateEvent(category, key, value); / 设置属性(String 类型) public static void SetProperty(String category, String key, String value) MiStatInterface.recordStringPropertyEvent(category, key, value); / 设置属性(int 类型) public static void SetProperty(String category, String key, int value) MiStatInterface.recordNumericPropertyEvent(category, key, value); 有的 sdk 里,经常会有各种 listener、event 之类的回调,回调结果必须传递给 unity, 那么可以使用 UnityPlayer.UnitySendMessage(gameObjectName, method, param) 方法。 5.接下来创建一个 Unity 项目,用来制作、测试和导出 MiStats 插件。切换平台为 android,创建目录结构如下。 相比于第一部分,多了 AndroidManifests 目录。第一部分我们并没有用到 manifest,但 是由于此 sdk 需要添加权限,所以必须含有 manifest。但是,一个 unity 项目仅可以含有一 个 manifest 文件,如果多个 sdk 都要求添加 manifest 该如何解决?解决办法就是每个 sdk 都把自己需要的 manifest 放到这个 AndroidManifests 目录里面,只要使用此 sdk 就将其对 应的 manifest 合并到最终的 manifest 里面。 6.把 eclipse 项目里的有用的东西都搬过来。本 sdk 有用的东西就是 MiStats_SDK_Client_1_0_0.jar、AndroidManifest.xml 和 你写的 java 代码。 MiStats_SDK_Client_1_0_0.jar 直接复制到 unity 项目的 libs 目录,AndroidManifest.xml 改 名为 MiStats.xml 复制到 AndroidManifests 目录不要问为什么,一如既往的任性。你 写的 java 代码通过导出 jar 的方式来使用,参考第一部分。其他 sdk 可能还有 res、assets 这些资源,直接复制这些文件夹到 unity 的 Android 目录。 7.使用解压软件打开 MiStats_SDK_Client_1_0_0.jar,检查是否含有 assets 目录。如果有 的话,复制出来放到 Android 目录。对所有不是你导出的 jar 都执行此操作。Unity 导出包 的时候会丢掉 jar 中非代码的资源。如果你一目十行没看到这句话,祝你好运! 8.为插件写代码。把第一部分的 AndroidBehaviour 脚本复制到 AndroidScripts,然后创 建新脚本 MiStats.cs, 代码如下。 public class MiStats : AndroidBehaviour public enum UploadPolicy : int realTime = 0, wifiOnly = 1, batch = 2, whileInitialize = 3, interval = 4, development = 5 SerializeField string appId; SerializeField string appKey; SerializeField string channel; SerializeField UploadPolicy policy; SerializeFieldRange(300, 86400) int interval = 300; protected override string javaClassName get return “unityplugin.MiStats“; / 初始化 void Awake() CallStatic(“Initialize“, appId, appKey, channel, (int)policy, interval); / 开发模式下手动上传数据(非开发模式自动禁用) public static void Upload() if (instance.policy = UploadPolicy.development) instance.CallStatic(“Upload“); / 计数(value = 1) public static void Count(string category, string key) instance.CallStatic(“Count“, category, key); / 计算 public static void Calculate(string category, string key, int value) instance.CallStatic(“Calculate“, category, key, value); / 设置属性(string 类型) public static void SetProperty(string category, string key, string value) instance.CallStatic(“SetProperty“, category, key, value); / 设置属性(int 类型) public static void SetProperty(string category, string key, int value) instance.CallStatic(“SetProperty“, category, key, value); 除了需要把某些东西显示到 inspector,与第一部分的代码没有什么区别。需要注意的 是,callstatic 仅支持有限的类型,枚举需要强制转换为 int 再传递。 9.复制一份 MiStats.xml 到 Android 目录,改名为 AndroidManifest.xml,这样是为了进行 测试,就当是合并 Manifest 了。添加 Application 和启动 Activity。有的 sdk 或文章要求你 必须实现一个自己的 Activity,那是错误的。下面我们直接使用 unity 的 nityPlayerNativeActivity。注意 Application 的 icon 和 label,一定要按下面这样写,否则无 法在 unity 中设置他们。还有 manifest package 属性同样需要移除掉。最后关于输入事件传 递给 java 虚拟机,如果你使用了 Android 标准控件,需要设置为 true 才能响应用户输入。 10.然后写个测试脚本。 using UnityEngine; public class Test : MonoBehaviour Rect rects; void Awake() rects = new Rect4; for(int i=0; i4; i+) rectsi = new Rect(0, i * Screen.height * 0.25f, Screen.width, Screen.height * 0.25f); void OnGUI() if (GUI.Button(rects0, “计数“) MiStats.Count(“计数“, “ 分享“); if (GUI.Button(rects1, “计算“) MiStats.Calculate(“计算“, “消费“, Random.Range(1, 101); if (GUI.Button(rects2, “文本属性“) MiStats.SetProperty(“文本属性“, “昵称“, “白猫“); if (GUI.Button(rects3, “数值属性“) MiStats.SetProperty(“数值属性“, “智商“, 250); 11.最后再确认一下我们是不是在做同一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 营业员技能大赛练习试题附答案(一)
- 良种繁育买卖合同书(4篇)
- 行政组织理论研究方法试题及答案
- 软件测试过程控制试题及答案分析
- 帮助考生理解公路工程法律知识试题及答案
- 风险识别与战略调整的范例试题及答案
- VFP考试主题知识的整合与梳理试题及答案
- 公路工程执照考试必知要点试题及答案
- 协议书公章还是合同章
- 高效软件测试准备试题及同步答案
- MOOC 数据挖掘与python实践-中央财经大学 中国大学慕课答案
- 高处安装、维护、拆除作业
- 2024直肠癌新辅助治疗后等待观察策略中国专家共识(完整版)
- 社会主义发展史智慧树知到期末考试答案2024年
- 配电网自动化终端典型缺陷处理
- 广告牌供货与安装方案
- 安全生产管理的流程和步骤
- 个人能力展示
- 国家职业技术技能标准 4-14-02-05 老年人能力评估师 人社厅发202332号
- 江苏省南通市历年中考数学试卷真题合集(共6套)
- 班组级培训课件
评论
0/150
提交评论