[Unity][unet][Android]真机安卓和模拟器安卓发送信息交互通讯

来源:互联网 发布:单片机属于嵌入式吗 编辑:程序博客网 时间:2024/05/29 09:12


理解本文以前,需要掌握:

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.html

3.

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.html

6.

7.

8.












阅读全文
0 0
原创粉丝点击