Unity调用Android

Unity调用Android

  • 打开Unity,在Project中创建文件,Assects→Plugins→Android→src,创建好以后在里面添加java类

package com.unity3d.BabelRunning;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import java.lang.String;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;

public class BabelRunningActivity extends UnityPlayerActivity 
{
	@Override
	protected void onCreate(Bundle bdl)
	{
		super.onCreate(bdl);
		Log.d("UnityInterface", "=========> BabelRunningActivity start!!!!!!!\n");
	}

	public void callByObject()
	{
		
	}
		
	static public boolean isUnlocked() 
	{
		return true;	
	}
	
	static public void FeeExit(Context paramContext)
	{

	}
}

这里面也可以加其他的类,不是一定要加从UnityPlayerActivity派生的类,你也可以看看Unity自带的UnityPlayerActivity,打开Finder→应用程序→Unity→点击Unity图标,鼠标右键选择“显示包内容”→Contents→PlaybackEngines→AndroidPlayer→bin→classes.jar,jar文件要用java反编译工具打开。

  • 把创建好的类打包成jar,首先用eclipse编译,会在bin→classes→com→unity3d→BabelRunning文件夹里面生成BabelRunningActivity.class文件,再用eclipse导出BabelRunningActivity.jar,把导出的jar用java反编译软件(JD_GUI)打开。如果看到了 com.unity3d.BabelRunning 这本包, 这个包的名字一定要跟 java文件中的“ package com.unity3d.BabelRunning;”一样,如果不一样,可以调整class文件的目录,再打jar包,直到一样为止。
  • 把生成的jar放在Assets→Plugins→Android→libs下面。
  • 编写C#文件,在Android目录下面创建CmBillingResult.cs

using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;

public class CmBillingResult : MonoBehaviour 
{
	private int waitTime = 10;
	
	private AndroidJavaClass klass = null;
	
	// Use this for initialization
	void Start () 
	{
		klass = new AndroidJavaClass("com.unity3d.BabelRunning.BabelRunningActivity");
		
		// 通过对象调用
		AndroidJavaObject jo = klass.GetStatic<AndroidJavaObject>("currentActivity");
        jo.Call("callByObject");

		// 通过类调用,有返回值
		klass.CallStatic<bool>("isUnlocked");	
		
		// 通过类调用,当前的activity作为参数
		klass.CallStatic("FeeExit", curActivity);		
	}	
}

  • 创建好以后加到Main Camera对象上面。

klass.CallStatic("方法名", "参数");
第一个参数为方法名称,第二个参数才是真正的参数。

  • AndroidManifest里面的入口改成com.unity3d.BabelRunning.BabelRunningActivity

Android调用Unity

Android调用Unity比较简单。

UnityPlayer.UnitySendMessage("Main Camera", "方法名称", "参数1", "参数2"...);
第一个参数,为当前对象,第二个参数为当前对象上面脚本的方法名称,后面的才是真的参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值