将Unity3D游戏移植到Android平台上

将Unity3D游戏移植到Android平台是一件很容易的事情,只需要在File->Build Settings中选择Android平台,然后点击Switch Platform并Build出apk即可。通常,我们的工作不仅限于此,一般还需要给手机游戏加入计费、广告等功能。这些功能一般没有提供Unity3D插件,我们需要将游戏导出为Android工程,然后添加这些功能;或者,我们根据这些计费sdk来做自己想要的Unity3D插件,然后直接在Unity3D中使用。有时候,第二种方法不能使用,我们还是需要使用第一种常见的方法。

1.从Unity3D到Android工程

为了实现交互,我们采用的是简单的函数相互调用。如果我们在Unity3D中想调用Android代码,那么可以在脚本文件C#中这样写:

);AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>();activity.Call()

上面这段代通过"com.unity3d.player.UnityPlayer"这个类获取了当前的Android中的静态成员"currentActivity",取得了Activity就可以调用Android代码了。这个UnlockGame函数是简单的成员方法,一般直接写在MainActivity中,也就是说Android代码中必须要有UnlockGame这个函数,然后才能调用;而"com.unity3d.player.UnityPlayer"和"currentActivity"都是默认的参数。

如果要在Android工程中调用Unity3D中的方法,我们需要新建一个Android工程。可以这样写java代码:

UnityPlayer.UnitySendMessage("AndroidManager", "AndroidCallBackUnlockGame", "");

这里调用了Unity3D中"AndroidCallBackUnlockGame"这个方法,最终激活了游戏。第一个参数表示Unity3D中某个gameObject,第二个参数是这个gameObject上的脚本中的某个方法,第三个参数是这个方法的参数。

上面只是讲述了交互的基本原理,下面是详细步骤。

(1)在Unity3D中创建脚本,如上面第一段代码所示,加入调用Android函数的代码;如果Android要调用C#代码,也要写下被Android代码回调的C#函数。然后,把Unity项目导出为Android工程即可。这里需要注意下图红色部分,其中Bundle Identifier就是导出的Android工程的包名。

(2)打开Eclipse,导入工程,选择import->Existing Android Code Into Workspace,最好把Copy Into WorkSpace选项也选上,这个工程通常叫做“UnityPlayerProxyActivity”。导入工程后,我们可以直接运行这个工程了。但这里是为了与Android代码交互,所以还不能这样做。通常的方法是,我们新建一个Android Application Project,包名必须与导入的工程包名相同;然后把导入的工程作为新工程的Library,在工程的Properties里设置,如下图所示。

(3)将导入的Unity工程assets目录里的bin和libs目录拖放到新工程的assets目录里,即移动资源位置而已

(4)好了,现在我们有两个工程,一个是新建的,一个是从Unity3D中导入的。这里必须学点Android开发的基础知识,onCreate函数是入口函数,其它的自学吧。想在Android里调用Unity3D代码,就用本文开头的第二段代码即可。通常,我们在新工程里创建一个Activity,在AndroidManifest.xml里进行设置要启动的Activity。假设要启动的是MainActivity,那么对于MainActivity这个类,我们要让它继承UnityPlayerActivity这个类,然后在Oncreate里调用super.onCreate(savedInstanceState)即可。然后,运行新工程,我们的Unity3D游戏也跟着启动了。

public class MainActivity extends UnityPlayerActivity {@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);}}

既然是基础,我在说的详细点。首先创建新的Android Application Project,注意包名与导入的工程一致,并且不要创建Activity, 我们手动创建。然后新建一个类,类名暂且为MainActivity,package name必须与前面说的一致。然后写上上图中的代码。如果有错误提示,按下ctrl + shift + O可以导入所需类库。我们要手动创建Activity,还要在AndroidManifest.xml这个文件里做设置,如下所示。

<applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:themeactivityandroid:name=".MainActivity"android:label="@string/app_name"android:configChanges="orientation|keyboard"android:screenOrientation

世上没有绝望的处境,只有对处境绝望的人。

将Unity3D游戏移植到Android平台上

相关文章:

你感兴趣的文章:

标签云: