zoukankan      html  css  js  c++  java
  • Unity3D之移植学习笔记:移植到Android平台更好的方法

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

    Unity3D项目

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

     1 using UnityEngine;
     2 using UnityEngine.UI;
     3 
     4 public class SceneScript : MonoBehaviour
     5 {
     6     public Text outpuText;
     7 
     8     //与 Android 交互的对象
     9     private AndroidJavaObject _activity;
    10 
    11     void Start()
    12     {
    13         //获取与 Android 交互的对象
    14         AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    15         _activity = javaClass.GetStatic<AndroidJavaObject>("currentActivity");
    16     }
    17 
    18     public void ShowDialog()
    19     {
    20         _activity.Call("showDialog", new string[]{"提示", "我是被Unity调用的对话框!"});
    21     }
    22 
    23     public void CallAndroid()
    24     {
    25         _activity.Call("unityCall");
    26     }
    27 
    28     /// <summary>
    29     /// 该方法由 Android 调用.
    30     /// </summary>
    31     /// <param name="msg">传递过来的参数.</param>
    32     private void AndroidCallback(string msg)
    33     {
    34         outpuText.text += "
    " + msg;
    35     }
    36 }

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

    Android项目

    我们先创建一个Android项目:

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

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

    接下来的几步默认即可。

    报错处理

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

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

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

     1 package com.Hammerc.AndroidTest;
     2 
     3 import com.unity3d.player.UnityPlayer;
     4 import com.unity3d.player.UnityPlayerActivity;
     5 
     6 import android.app.AlertDialog;
     7 import android.os.Bundle;
     8 
     9 //修改继承关系, 改为继承自 UnityPlayerActivity
    10 public class MainActivity extends UnityPlayerActivity {
    11 
    12     @Override
    13     protected void onCreate(Bundle savedInstanceState) {
    14         super.onCreate(savedInstanceState);
    15     }
    16 
    17     private void showDialog(final String title, final String content)
    18     {
    19         runOnUiThread(new Runnable()
    20         {
    21             @Override
    22             public void run()
    23             {
    24                 makeDialog(title, content);
    25             }
    26         });
    27     }
    28 
    29     private void makeDialog(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 void unityCall()
    42     {
    43         UnityPlayer.UnitySendMessage("Main Camera", "AndroidCallback", "我是Android平台发送的消息!");
    44     }
    45 }

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

    导入jar到Unity中

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

    接下来我们需要去你的unity安装目录EditorDataPlaybackEnginesandroidplayer目录下复制AndroidManifest.xml文件到PluginsAndroid文件夹中。

    打开AndroidManifest.xml文件,修改:

    1 <activity android:name="com.unity3d.player.UnityPlayerNativeActivity"

    1 <activity android:name="com.Hammerc.AndroidTest.MainActivity"

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

    源文件下载

    http://pan.baidu.com/s/1yTLCU

  • 相关阅读:
    Pet Shop 4.0 详细解析(转) 沧海一粟
    如何制作Bat批处理文件 沧海一粟
    iOS开发Icon图标设置 (转) 沧海一粟
    Android金背大刀之ToggleButton之稍息立正
    Android碧水剑之DatePickerDialog、TimePickerDialog之岁月如梭
    平衡边界作业算法并发仿真测试基于三层架构的Web系统的基准性能
    Android鸳鸯刀之DatePicker、TimePicker之明年今日
    Android应用性能优化整体策略
    Android应用开发之性能测试之TraceView
    平衡边界作业算法并发仿真测试网络存储系统的响应时间
  • 原文地址:https://www.cnblogs.com/hammerc/p/4863539.html
Copyright © 2011-2022 走看看