unity2d移植android,Unity3D之移植学习笔记:移植到Android平台更好的方法

接上文,之前我们采用了直接将Unity项目导出为Eclipse项目来修改的方式,这种做法存在的一个最大的问题就是:每当Unity被修改之后,都需要重新导出,而每次导出的项目在Android平台方面的Java代码又需要重新编写对应的功能,这样开发效率会受到极大的影响,所以这里我们使用另外一种方式来移植,使Unity和Android方面的修改可以互不影响。

Unity3D项目

我们新建一个Unity3D的项目,并为其添加两个按钮和一个文本框,同时将下面的脚本挂载到摄像机中即可:

1 usingUnityEngine;2 usingUnityEngine.UI;3

4 public classSceneScript : MonoBehaviour5 {6 publicText outpuText;7

8 //与 Android 交互的对象

9 privateAndroidJavaObject _activity;10

11 voidStart()12 {13 //获取与 Android 交互的对象

14 AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");15 _activity = javaClass.GetStatic("currentActivity");16 }17

18 public voidShowDialog()19 {20 _activity.Call("showDialog", new string[]{"提示", "我是被Unity调用的对话框!"});21 }22

23 public voidCallAndroid()24 {25 _activity.Call("unityCall");26 }27

28 ///

29 ///该方法由 Android 调用.30 ///

31 /// 传递过来的参数.

32 private void AndroidCallback(stringmsg)33 {34 outpuText.text += "\n" +msg;35 }36 }

记住Bundle Identifier一定要设定,同时要记住该设定值,我们在创建Android应用时填写的Package Name必须填写同该值一样的值。

9647567046a76aae92eccb0a2b7ef933.png

Android项目

我们先创建一个Android项目:

59f41f56ee5fd5858d23524e5747c961.png

需要注意的是,Package Name必须和Unity3D中的Bundle Identifier一致。

ce3a16f8ed41bc897b489ebd9ec7c14f.png

勾选红框内的内容,表示作为库工程。

接下来的几步默认即可。

报错处理

我这里使用的是Android5.0的SDK,莫名其妙的新建项目会报错,搞得头大,最后找到的解决方法是第一步创建项目时,选择Mininum Required SDK为API16及以上的版本即可,如果有遇到同样问题的同学可以试试这个办法。

我们创建好Android库项目后,它和Unity之间是无法调用的,我们还需要引入Unity为Android平台提供的库文件,路径如下:你的unity安装目录\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar

a26e3bb048b7dc0c826b40f2c8db2731.png

打开MainActivity修改为下面的代码:

1 packagecom.Hammerc.AndroidTest;2

3 importcom.unity3d.player.UnityPlayer;4 importcom.unity3d.player.UnityPlayerActivity;5

6 importandroid.app.AlertDialog;7 importandroid.os.Bundle;8

9 //修改继承关系, 改为继承自 UnityPlayerActivity

10 public class MainActivity extendsUnityPlayerActivity {11

12 @Override13 protected voidonCreate(Bundle savedInstanceState) {14 super.onCreate(savedInstanceState);15 }16

17 private void showDialog(final String title, finalString content)18 {19 runOnUiThread(newRunnable()20 {21 @Override22 public voidrun()23 {24 makeDialog(title, content);25 }26 });27 }28

29 private voidmakeDialog(String title, String content)30 {31 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);32

33 builder.setTitle(title);34 builder.setMessage(content);35 builder.setCancelable(false);36 builder.setPositiveButton("确定", null);37

38 builder.show();39 }40

41 private voidunityCall()42 {43 UnityPlayer.UnitySendMessage("Main Camera", "AndroidCallback", "我是Android平台发送的消息!");44 }45 }

在菜单中选择“Project”->“Clean”,即可在bin文件夹下找到我们的androidtest.jar文件了。

导入jar到Unity中

新建Plugins\Android文件夹,并将androidtest.jar文件拷贝到该文件夹中,注意文件夹名称必须为该名称。

接下来我们需要去你的unity安装目录\Editor\Data\PlaybackEngines\androidplayer目录下复制AndroidManifest.xml文件到Plugins\Android文件夹中。

打开AndroidManifest.xml文件,修改:

1

1

接下来直接发布为apk文件即可。

源文件下载

原文:http://www.cnblogs.com/hammerc/p/4863539.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值