[Unity][unet][Android]真机安卓和模拟器安卓发送信息交互通讯
2017-10-31 15:05
627 查看
理解本文以前,需要掌握:
UNITY 建立 UI 的基本知识。
UNET 的基本操作
Unity 和 Android 的基本打包知识。(参考资料4)
--------------------------------------------------------
本文主要 是以 参考资料1的内容。
工程分流下载地址:http://download.csdn.net/download/bulademian/10046730
--------------------------------------------------------UNITY 设置
UI布局 如下图所示
建立空物体,重命名为 Usuario。组件设置如下。
添加的组件 和 进行的改动 均用红色方框标出。
建立空物体,重命名为 NetworkManager。组件设置如下。
添加的组件 和 进行的改动 均用红色方框标出。把上面创建的 Usuario 物体 拖入 下方 PlayerPrefab 处即可。
--------------------------------------------------------代码
------------------------------------------------------查找 设备的IP 地址
查看电脑在局域网的 IP 地址(192.168.1.2)
手机在局域网的IP地址(192.168.1.17)
---------------------------
电脑上 的 模拟器 的 IP 地址就是 电脑的IP 地址。192.168.1.2。
因此 如果 电脑上的模拟器 是 客户端的话。就需要 手机 真机 做服务器。因此 LAN Client 的IP 地址 为 手机的 IP 地址 192.168.1.17
安卓手机 客户端 无法连接 到 虚拟机 安卓 电脑 的 服务器(很可能 是因为 抓不到 模拟安卓 的 IP 地址。)
安卓 手机 作为 服务器 可以 链接 到 虚拟机 安卓 电脑 的 客户端
由于 安卓真机 和 安卓模拟机的 通讯存在瑕疵。
-------------------------------------解决了 安卓 真机 和 安卓模拟机 的问题。
主要解决办法 是,把 Usuario 物体 变成预制体。
显示结果
----------------------------------------------
下一篇将 用 安卓 真机 和 电脑 EXE 文件 进行通讯。
貌似 UNET 不能做到 跨平台 通讯 交互。
---------------------------
参考资料:
1.
https://jingyan.baidu.com/article/63f2362816d56c0208ab3dd5.html
3.
4.[Unity][安卓]Unity和Android Studio 3.0 交互通讯(1)Android Studio 3.0 设置
http://blog.csdn.net/bulademian/article/details/78387461
5.
http://www.cnblogs.com/zhouxin/p/5820161.html
6.
7.
8.
UNITY 建立 UI 的基本知识。
UNET 的基本操作
Unity 和 Android 的基本打包知识。(参考资料4)
--------------------------------------------------------
本文主要 是以 参考资料1的内容。
工程分流下载地址:http://download.csdn.net/download/bulademian/10046730
--------------------------------------------------------UNITY 设置
UI布局 如下图所示
建立空物体,重命名为 Usuario。组件设置如下。
添加的组件 和 进行的改动 均用红色方框标出。
建立空物体,重命名为 NetworkManager。组件设置如下。
添加的组件 和 进行的改动 均用红色方框标出。把上面创建的 Usuario 物体 拖入 下方 PlayerPrefab 处即可。
--------------------------------------------------------代码
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;//使用 该引用,才能获得 Text 组件。 using UnityEngine.Networking; public class Android_Test : NetworkBehaviour { private Transform canvasTras;//UGUI的Canvas private Text text;//用来显示 界面的文本 private Button btn;//前端的按钮 private AndroidJavaObject jo = null; private string str; private int int_ = 0; private string test_str = ">"; private void Awake() { #if UNITY_ANDROID str = "这里是安卓设备^_^"; #endif #if UNITY_IPHONE str = "这里是苹果设备>_<"; #endif #if UNITY_STANDALONE_WIN str = "我是从Windows的电脑上运行的T_T"; #endif } // Use this for initialization void Start () { //固定写法 AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); jo = jc.GetStatic<AndroidJavaObject>("currentActivity");//获取当前Activity对象,即Android中的MainActivity canvasTras = GameObject.Find("Canvas").transform; text = canvasTras.Find("Text").GetComponent<Text>(); btn = canvasTras.Find("Button").GetComponent<Button>(); text.text = str; test_str = ">"; btn.onClick.AddListener(Click);//按钮点击事件监听下面的Click()方法 } //这个方法是在界面点击按钮的时候调用,使用的是UGUI的BUTTON组件 public void Click() { text.text = "";//点击的时候先清空 //*** test_str = test_str + "<"; string Mensaje = test_str; CmdEnviar(Mensaje); //int res = jo.Call<int>("add", 56, 100);//调用Android中的方法,"add"为方法名字,56,100,分别是想加的参数 //text.text = "56 + 100的结果是:" + res.ToString();//显示前端 } //*** [Command] void CmdEnviar(string mensaje) { RpcRecivir(mensaje); } [ClientRpc] public void RpcRecivir(string mensaje) { text = canvasTras.Find("Text").GetComponent<Text>(); text.text = mensaje; //TxtTexto.text += ">>" + mensaje + "\n"; } }
------------------------------------------------------查找 设备的IP 地址
查看电脑在局域网的 IP 地址(192.168.1.2)
手机在局域网的IP地址(192.168.1.17)
---------------------------
电脑上 的 模拟器 的 IP 地址就是 电脑的IP 地址。192.168.1.2。
因此 如果 电脑上的模拟器 是 客户端的话。就需要 手机 真机 做服务器。因此 LAN Client 的IP 地址 为 手机的 IP 地址 192.168.1.17
安卓手机 客户端 无法连接 到 虚拟机 安卓 电脑 的 服务器(很可能 是因为 抓不到 模拟安卓 的 IP 地址。)
安卓 手机 作为 服务器 可以 链接 到 虚拟机 安卓 电脑 的 客户端
由于 安卓真机 和 安卓模拟机的 通讯存在瑕疵。
-------------------------------------解决了 安卓 真机 和 安卓模拟机 的问题。
主要解决办法 是,把 Usuario 物体 变成预制体。
显示结果
----------------------------------------------
下一篇将 用 安卓 真机 和 电脑 EXE 文件 进行通讯。
貌似 UNET 不能做到 跨平台 通讯 交互。
---------------------------
参考资料:
1.
COMO CREAR UN CHAT ONLINE PARA UNITY CON UNET
2.
怎么查看自己电脑的IP地址?
https://jingyan.baidu.com/article/63f2362816d56c0208ab3dd5.html3.
4.[Unity][安卓]Unity和Android Studio 3.0 交互通讯(1)Android Studio 3.0 设置
http://blog.csdn.net/bulademian/article/details/78387461
5.
Unity5网络模块UNet介绍
http://www.cnblogs.com/zhouxin/p/5820161.html6.
7.
8.
相关文章推荐
- [Unity][unet][Android]电脑和电脑发送信息交互通讯
- [Unity][安卓]Unity和Android Studio 3.0 交互通讯 前提-- Unity 的 Android设置
- [Unity][PHOTON][UNET][SOCKET][Android]PC-Android建立聊天室ChatRoom交互通讯
- Unity调用android的方法,android调用Unity的方法,unity和安卓的交互
- android客户端与服务器交互,在模拟器能够得到服务器的响应,但是在真机得不到服务器的响应,请问怎么回事?程序如下:
- Android和Unity混合开发——Activity和Unity脚本交互和信息传递
- 刚开始学习Android遇到的一些问题---主要安卓环境安装Androidstudio以及模拟器测试真机测试
- Android获取手机设备信息并区分真机与模拟器
- Unity调用android的方法,android调用Unity的方法,unity和安卓的交互(2)2
- [Unity][安卓]Unity和Android Studio 3.0 交互通讯(1)Android Studio 3.0 设置
- android客户端与服务器交互,在模拟器能够得到服务器的响应,但是在真机得不到服务器的响应,请问怎么回事?程序如下:
- [Unity][安卓]Unity和Android Studio 3.0 交互通讯(2)Unity 设置
- Unity5.0与Android交互
- 安卓真机测试时用在控制台查找崩溃日志信息
- 关于Android中Service与Activity的信息交互
- android 真机 安装 模拟器 DevTools Development
- 编写chrome插件,调用本地应用程序,并进行通讯(发送信息给应用程序)
- 安卓学习记录(一)activity间信息交互的四种方式
- Unity安卓移动设备显示Debug.Log信息
- Android 后台发送邮件示例 (收集应用异常信息+Demo代码)