unity android混合,Unity Android混合开发

初次写作,如有理解偏差,还请海涵。

之所以写这篇文章,是因为在实际项目中想实现一写Android原生的功能,有些用Unity无法实现,有些用Unity实现起来比较繁杂,还有些三方SDK压根不支持Unity平台。废话少说直接上代码

先上Unity的文档https://docs.unity3d.com/Manual/PluginsForAndroid.html

此篇文档讲述Unity如何制作使用Android插件,实现Unity直接调用Android代码

AAR形式插件

Jar形式的插件

直接拓展UnityPlayerActivity.Java类

通过制作.so C++文件,实现原生调用

本文主要讲解前三种模式

举个播放广告的例子

实现Java函数

package com.tapque.ads;

public class AdsManager{

private static AdsManager instance;

public static AdsManager instance() {

if (null == instance) {

instance = new AdsManager();

}

return instance;

}

protected void showRewardVideo(Activity activity) {

//todo 播放广告

}

}

C#通过实例化Android Java对象

void InitAdsManager(){

AndroidJavaObject AndroidAdsManager = new AndroidJavaClass("com.tapque.ads.AdsManager").CallStatic. ("instance");

AndroidJavaObject currentlyActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic("currentActivity");

}

C#反射调用Java函数

public void ShowRewardVideo(){

AndroidAdsManager.Call("showRewardVideo",AndroidManager.GetCurrentlyActivity());

}

Java调用Unity

public static void sendMessageToEngine(String message) {

//AdsManager:Unity Scene中的GameObject对象名称

//Callback:Unity Scene中的GameObject对象身上继承MonoBehaviour的C#脚本的接收iOS函数明

//message:发送的消息

UnityPlayer.UnitySendMessage("AdsManager","Callback",message);

}

C#接收Android信息

e66e7ab9a657df3ef547e49240468d8d.png

C#声明Callback函数

void Callback(string message){

Debug.LogError(message);

}

至此。Unity和Android的互相交互已完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值