网上关于 unity 调用 java 接口的文章很多,只要去找,大概率都能解决自己的问题。我根据项目中 unity 调用 java 接口的经验,记录一下实践过程中遇到的问题,以备后续查询,若是能够帮到有需要的人,那就是额外收益了。
首先,描述一下遇到的问题:
- java 插件包含哪些内容?怎么组织目录结构?
- unity 如何获取android应用的 context?
- unity 和 java 数据类型的映射?
- unity 如何调用 java 的 API?
- java 如何回调 unity 方法?
插件目录结构
刚开始想通过unity调用android插件时,不知道必须按照固定的目录结构组织文件,导致打出的android apk在运行时崩溃,提示找不到so文件,解压apk文件一看,果然没有相应的so文件。
下面列出几篇参考文档:
Unity3D项目Plugins目录组织
特殊文件夹名称
unity获取context
一些java方法需要传入 context 参数,unity 提供了专门的方法获取应用的 context,具体代码如下:
private static AndroidJavaObject m_context = null;
private static AndroidJavaObject Context
{
get
{
if( m_context == null )
{
using( AndroidJavaObject unityClass = new AndroidJavaClass( "com.unity3d.player.UnityPlayer" ) )
{
m_context = unityClass.GetStatic<AndroidJavaObject>( "curre