Unity和Android Studio 3.0 交互通讯

[安卓]Android Studio 3.0 JDK安卓环境配置(2017.10)

http://blog.csdn.net/bulademian/article/details/78387052

[安卓]Android Studio 3.0 安装包说明(2017.10)

http://blog.csdn.net/bulademian/article/details/78387199

[安卓]Android Studio 3.0 安装 后的 正常的设置的反应(2017.10)

http://blog.csdn.net/bulademian/article/details/78387367

-------------------------------------------------------------------------

主要是 根据 参考资料3 的内容。本文尽量减少文字的 描述。参考资料1 有 一点 问题。

本文的内容需要 对照 参考资料3 来查看

建立 新的工程。





 

点击 FINISH 按钮,新建工程。






找到 libs 的文件路径。右键 libs 文件夹,find in path 。



按 esc 按键 退出 find in path。

打开文件路径。



安装路径下 的 UNITY 文件夹。(具体 UNITY 的设置 参考下一篇文章 参考资料2)

D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes

classes.jar

复制粘贴 到 

E:\Android\AndroidStudioProjects\UnityTest\app\libs

文件夹,如下图所示。








正常情况下,这里就会有如下图所示。





不做任何 处理,点击 FINISH 按钮后。

就新建了MainActivity ,右边是初始脚本。





删除

<activity android:name=".MainActivity"></activity>


复制初始模块 的这个app 的 mainfests 文件夹的 AndroidMainfest.xml 文件的内容。



粘贴到 新建unity_exchage模块 的这个unity_exchage 的 mainfests 文件夹的 AndroidMainfest.xml 文件的内容。



由于这2个模块 中都有 MainActivity ,原文并没有 说明 是哪个 MainActivity。因此 先 对 app 的MainActivity 进行修改。


后来发现 是 unity_exchage 的 MainActivity




import com.unity3d.player.UnityPlayerActivity;


这个时候,如下所示。


改为如下所示。




下面就是在Android中编写Unity要调用的方法了,例如我这里只写一个简单的两数求和的方法:

//两树求和
public int add(int a,int b)
{
    return a+b;
}



选中 unity_exchange 点击build -- Make Module 'unityexchange'



等待一下,就会显示如下所示。如果没有,就重新试几次。



使用 Build -- Make Project 或者 Build -- Rebuild Project 重新编译工程。

工程 下 的 unity_exchange 的 build 的 intermediates 的 bundles 的debug没有如下图 所示 的文件,就多 重新编译工程几次。



右键 debug 文件夹,show in explorer


使用 Build -- Make Project 或者 Build -- Rebuild Project 重新编译工程。
然后把debug文件夹下的classes.jar文件移动到libs文件夹中,并且把libs文件夹中的class.jar文件替换掉。然后将debug文件夹下的libs文件夹、res文件夹、AndroidManifest.xml文件导入到Unity的Assets/Plugins/Android文件夹下(没有这个文件夹需先创建)。




AndroidManifest.xml就是 如下图所示,的01_Unity_Message3/unity_exchange/src/main/AndroidManifest.xml

如果下图中没有 AndroidManifest.xml  文件,就把上图所示的AndroidManifest.xml  复制粘贴到下面。


就把 把下面这3个文件(包含   AndroidManifest.xml )复制粘贴到 如下图所示的  Unity 的位置。

Plugins/Android/




正常 的文件 结构如下所示。从 AS3.0 导入 过来的文件,都在 Plugins-- Android 里面




新建脚本,挂载 上 Main Camera 上。



[csharp]  view plain  copy
  1. using System.Collections;  
  2. using System.Collections.Generic;  
  3. using UnityEngine;  
  4. using UnityEngine.UI;//使用 该引用,才能获得 Text 组件。  
  5.   
  6. public class Android_Test : MonoBehaviour {  
  7.   
  8.     private Transform canvasTras;//UGUI的Canvas  
  9.     private Text text;//用来显示 界面的文本  
  10.     private Button btn;//前端的按钮  
  11.   
  12.     private AndroidJavaObject jo = null;  
  13.   
  14.   
  15.   
  16.     // Use this for initialization  
  17.     void Start () {  
  18.         //固定写法  
  19.         AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");  
  20.         jo = jc.GetStatic<AndroidJavaObject>("currentActivity");//获取当前Activity对象,即Android中的MainActivity  
  21.   
  22.         canvasTras = GameObject.Find("Canvas").transform;  
  23.         text = canvasTras.Find("Text").GetComponent<Text>();  
  24.         btn = canvasTras.Find("Button").GetComponent<Button>();  
  25.         btn.onClick.AddListener(Click);//按钮点击事件监听下面的Click()方法  
  26.   
  27.     }  
  28.   
  29.     //这个方法是在界面点击按钮的时候调用,使用的是UGUI的BUTTON组件  
  30.     public void Click()  
  31.     {  
  32.         text.text = "";//点击的时候先清空  
  33.         int res = jo.Call<int>("add", 56, 100);//调用Android中的方法,"add"为方法名字,56,100,分别是想加的参数  
  34.         text.text = "56 + 100的结果是:" + res.ToString();//显示前端  
  35.     }  
  36. }  


在 Unity 的 GameObject -- UI 新建 Text 和 Button


布局如下所示




复制 package 的名字


粘贴到这里 的package 位置。








点击 update android SDK。等待读条结束,UNITY 后台程序。


在虚拟机 ,上 测试 APK


真机测试

如果是正常的,就会 进入 程序显示,made with unity


--------------------------------------------------------------------

参考资料:

1.[自学总结] Unity调用 Android 接口实践与总结(Unity5.6 和 Eclipse 及 AndroidStudio2.3.1)

http://www.manew.com/thread-103445-1-1.html

2.[Unity][安卓]Unity和Android Studio 3.0 交互通讯(2)Unity 设置

http://blog.csdn.net/bulademian/article/details/78387470

3.Android Studio 与 Unity3d交互。归纳版。

http://blog.csdn.net/ldghd/article/details/54312532

4.Unity5与Android交互通信(使用Android Studio2.4) 详细操作一

http://m.blog.csdn.net/u010377179/article/details/53105062

-------------------------------------------------------------------------

使用 Build -- Make Project 或者  Build -- Rebuild Project 重新编译工程。
就把 上面 的 非原始  app工程 的   AndroidManifest.xml 复制粘贴到 如下图所示的  AndroidManifest.xml 位置。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Unity 是一种跨平台的游戏开发引擎,而 Kafka 是一种分布式流处理平台和消息系统。Unity 中的游戏可以使用 Kafka 进行实时数据的传输和消息的处理。 首先,Unity 可以通过 Kafka 的 Producer API 将游戏中的实时数据发送到 Kafka 的 Topic 中。这些数据可以是玩家的位置信息、游戏状态信息等。Producer API 提供了各种异步方式来确保数据的可靠传输,并具有高效的性能。 然后,Unity 中的其他模块或者其他游戏可以通过 Kafka 的 Consumer API 从 Kafka 的 Topic 中订阅并接收这些实时数据。Consumer API 提供了多种方式来处理和消费这些数据,例如可以对数据进行过滤、转换和聚合等操作。 通过使用 Unity 和 Kafka 的结合,游戏开发者可以实现一些有趣的功能。例如,在多人游戏中,可以通过 Kafka 在不同的游戏实例之间实现实时的位置同步和游戏状态同步。这样,即使玩家在不同的设备上,也可以获得一致的游戏体验。 另外,Unity 还可以通过 Kafka 的消息系统来实现游戏内部的消息通讯。通过订阅不同的 Topic,不同的游戏模块可以收到对应的消息,并进行相关的处理。这样的架构可以实现游戏中的解耦和模块化,提高代码的可维护性和可扩展性。 总而言之,通过 Unity 和 Kafka 的交互,游戏开发者可以实现更灵活、实时和可扩展的游戏功能,提升游戏的用户体验。 ### 回答2: Unity是一种跨平台的游戏开发引擎,用于创建高品质的游戏和虚拟现实应用程序。而Kafka是一个分布式流处理平台,用于管理高吞吐量的实时数据流。当Unity需要与Kafka进行交互时,可以采取以下几种方式: 1. 使用第三方库:可以使用现有的适配库或插件来在Unity中与Kafka进行交互。这些库可以提供对Kafka的直接访问,使得Unity能够发送和接收消息,读取和写入数据流,并处理Kafka的事件。 2. 自定义开发:如果没有现成的适配库,可以通过编写自定义的通信模块来实现Unity和Kafka的交互。该模块可以使用Kafka提供的API进行连接和通信,将Unity中的数据发送到Kafka或从Kafka接收数据,并处理相关的事件。 3. 使用中间件:可以使用消息中间件作为Unity和Kafka之间的桥梁。消息中间件可以提供统一的消息传递机制,使得Unity可以将消息发送到中间件,中间件再将消息传递给Kafka。同样地,中间件也可以接收Kafka的消息,并将其传递给Unity。这种方式可以简化Unity与Kafka之间的整合,并提高系统的可扩展性和灵活性。 总之,Unity和Kafka之间的交互可以通过适配库、自定义开发或使用消息中间件来实现。这样,Unity就能够与Kafka进行数据的交换和实时的流处理,为游戏和虚拟现实应用程序提供了更强大的功能和更好的用户体验。 ### 回答3: Unity是一种强大的跨平台游戏开发引擎,而Kafka是一种高性能分布式消息队列系统。Unity和Kafka可以通过网络进行交互。 首先,我们需要在Unity项目中集成一个Kafka客户端库,例如使用C#编写的KafkaNet。这个库可以帮助我们与Kafka建立连接、发送和接收消息。 在Unity中,我们可以创建一个KafkaProducer对象和一个KafkaConsumer对象。KafkaProducer用于发布消息到Kafka主题,KafkaConsumer则用于从Kafka主题接收消息。 在Unity中发送消息到Kafka,我们可以使用KafkaProducer的Send方法发送消息。我们需要指定要发送的主题和消息内容。例如: ``` KafkaProducer producer = new KafkaProducer("localhost:9092"); producer.Send("myTopic", "Hello Kafka!"); ``` 在Unity中接收Kafka的消息,我们可以使用KafkaConsumer的Start方法启动一个消息循环,用于从Kafka主题接收消息。我们可以在循环中处理接收到的消息。例如: ``` KafkaConsumer consumer = new KafkaConsumer("localhost:9092", "myTopic"); consumer.Start(); while (true) { string message = consumer.Receive(); Debug.Log("Received message: " + message); } ``` Unity和Kafka的交互可以实现很多有趣的功能。例如,我们可以在Unity游戏中使用Kafka来获取实时的游戏数据,如得分、位置等。我们还可以使用Kafka将玩家的行为记录下来,以分析和改进游戏设计。通过Unity和Kafka的交互,游戏开发者可以更好地了解和控制游戏的状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值