您的位置:首页 > 移动开发 > Unity3D

[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 处即可。



--------------------------------------------------------代码

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐