unity webGL客户端 系统管理员 2022-04-24 02:42 498阅读 0赞 经过网上多方实践发现这个代码是比较好的,源码找不到了这是修改了一部分的多余的你可以适当删减 using System.Collections; using System.Collections.Generic; using UnityEngine; using BestHTTP; using BestHTTP.WebSocket; using System; using BestHTTP.Examples; using UnityEngine.UI; using System.Text; using LitJson; public class WSMgr : MonoBehaviour { public GameObject cube; public static Student[] Students; //public string url = "ws://localhost:8080/web1/websocket"; private string url = "ws://192.168.2.249:8099"; public InputField msg; public Text console; ReqData data = new ReqData(); string jsonstring; bool isplayer=false; private WebSocket webSocket; private void Start() { init(); } private void init() { webSocket = new WebSocket(new Uri(url)); webSocket.OnOpen += OnOpen; webSocket.OnMessage += OnMessageReceived; webSocket.OnError += OnError; webSocket.OnClosed += OnClosed; } private void antiInit() { webSocket.OnOpen = null; webSocket.OnMessage = null; webSocket.OnError = null; webSocket.OnClosed = null; webSocket = null; } private void setConsoleMsg(string msg) { console.text = "Message: " + msg; } public void Connect() { webSocket.Open(); } private byte[] getBytes(string message) { byte[] buffer = Encoding.Default.GetBytes(message); return buffer; } public void Send() { //实例化 data.PlayerName = transform.name; //赋值 data.PlayerTR_x = transform.position.x; data.PlayerTR_y = transform.position.y; data.PlayerTR_z = transform.position.z; data.PlayerRT_x = transform.localEulerAngles.x; data.PlayerRT_y = transform.localEulerAngles.y; data.PlayerRT_z = transform.localEulerAngles.z; //将数据转换为json字符串 jsonstring = JsonUtility.ToJson(data); //msg.text =transform.name+ Convert.ToString(transform.position); webSocket.Send(jsonstring); } public void Send(string str) { webSocket.Send(str); } public void Close() { webSocket.Close(); } #region WebSocket Event Handlers /// <summary> /// 当Web套接字打开时调用,我们准备发送和接收数据 /// </summary> void OnOpen(WebSocket ws) { Instantiate(Resources.Load("Cube")); Debug.Log("connected"); setConsoleMsg("Connected"); } /// <summary> /// 当我们从服务器收到文本消息时调用 /// </summary> void OnMessageReceived(WebSocket ws, string message) { Debug.Log(message); //Debug.Log(jsonstring); JsonData jd = JsonMapper.ToObject(message); string PlayerName = (string)jd["PlayerName"]; double PlayerTR_x = (double)jd["PlayerTR_x"]; double PlayerTR_y = (double)jd["PlayerTR_y"]; double PlayerTR_z = (double)jd["PlayerTR_z"]; float PlayerTR__x = (float)PlayerTR_x; float PlayerTR__y = (float)PlayerTR_y; float PlayerTR__z = (float)PlayerTR_z; double PlayerRT_x = (double)jd["PlayerRT_x"]; double PlayerRT_y = (double)jd["PlayerRT_y"]; double PlayerRT_z = (double)jd["PlayerRT_z"]; float PlayerRT__x = (float)PlayerRT_x; float PlayerRT__y = (float)PlayerRT_y; float PlayerRT__z = (float)PlayerRT_z; if (PlayerName != null&&!isplayer) { Instantiate(Resources.Load("Cube 1")); isplayer = true; } GameObject go = GameObject.Find("Cube 1(Clone)"); Debug.Log(go.name); go.transform.position = new Vector3(PlayerTR__x, PlayerTR__y, PlayerTR__z); go.transform.localEulerAngles = new Vector3(PlayerRT__x, PlayerRT__y, PlayerRT__z); //cube.transform.position = new Vector3(PlayerTR__x, PlayerTR__y, PlayerTR__z); //cube.transform.localEulerAngles = new Vector3(PlayerRT__x, PlayerRT__y, PlayerRT__z); Debug.Log(PlayerTR__x + "tx-----------"); //Debug.Log(PlayerTR__y + "ty-----------"); //Debug.Log(PlayerTR__z + "tz-----------"); //Debug.Log(PlayerRT__x + "rx-----------"); //Debug.Log(PlayerRT__y + "ry-----------"); //Debug.Log(PlayerRT__z + "rz-----------"); //JsonData jd = JsonMapper.ToObject(message); //Debug.Log("status = " + (string)jd["status"]); //Students = JsonTool.AddressToModelArray<Student>(message); //foreach (Student s in Students) //{ // Debug.Log(s.ToString()); //} setConsoleMsg(message); } /// <summary> /// 当Web套接字关闭时调用 /// </summary> void OnClosed(WebSocket ws, UInt16 code, string message) { Debug.Log(message); setConsoleMsg(message); antiInit(); init(); } private void OnDestroy() { if (webSocket != null && webSocket.IsOpen) { webSocket.Close(); antiInit(); } } /// <summary> /// 在客户端发生错误时调用 /// </summary> void OnError(WebSocket ws, Exception ex) { string errorMsg = string.Empty; #if !UNITY_WEBGL || UNITY_EDITOR if (ws.InternalRequest.Response != null) errorMsg = string.Format("Status Code from Server: {0} and Message: {1}", ws.InternalRequest.Response.StatusCode, ws.InternalRequest.Response.Message); #endif Debug.Log(errorMsg); setConsoleMsg(errorMsg); antiInit(); init(); } #endregion }
相关 webgl:关于webgl *webgl可以与其他web界面元素相结合。** webgl可以以分层的形式置于其他内容页面的上方或下方。3d canvas可以占据页面的一部分或者整个页面,它也可以... 分手后的思念是犯贱/ 2024年04月17日 06:06/ 0 赞/ 68 阅读
相关 unity 发布webGL坑点三: 无法VS调试 调试和故障排除WebGL构建 Unity WebGL内容目前无法在Visual Studio中进行调试,这可能会导致难以找出您的内容出了什么问题。以下是关于如何从构建中获取信 我会带着你远行/ 2022年12月06日 01:17/ 0 赞/ 291 阅读
相关 Unity WebGL WebSocket close code ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQy 超、凢脫俗/ 2022年12月05日 10:17/ 0 赞/ 191 阅读
相关 Unity WebGL发布无法运行问题 问题1: It seems your browser does not support running Unity WebGL content from file:// ur 迈不过友情╰/ 2022年09月12日 09:48/ 0 赞/ 275 阅读
相关 Unity客户端开发优化要点 脚本方面 1、不需要高频率调用的函数,使用InvokeRepeating(或Time.frameCount%n)代替Update 2、SetParent、Instant 客官°小女子只卖身不卖艺/ 2022年09月09日 00:07/ 0 赞/ 156 阅读
相关 unity3d:webgl打包,pc端移动端全屏化 <!DOCTYPE html> <html lang="en-us"> <head> <meta charset="utf-8"> 怼烎@/ 2022年05月18日 08:23/ 0 赞/ 491 阅读
相关 unity socket客户端 也是从多方找的,做完到了收到数据解析完转换成float数据报错,不转换float的话正常传输没问题 using UnityEngine; using Syst 朱雀/ 2022年04月24日 02:44/ 0 赞/ 274 阅读
相关 unity webGL客户端 经过网上多方实践发现这个代码是比较好的,源码找不到了这是修改了一部分的多余的你可以适当删减 using System.Collections; using S 系统管理员/ 2022年04月24日 02:42/ 0 赞/ 499 阅读
相关 定时回调系统技术专题(Unity客户端) 游戏物体生命周期 场景中的游戏物体通过脚本来控制其具体行为。 生命周期流程图:[点击跳转][Link 1] 脚本里重点事件函数: 喜欢ヅ旅行/ 2022年02月14日 11:21/ 0 赞/ 232 阅读
相关 Unity使用GitKraken图形化客户端做版本控制 使用GitKraken管理Unity项目 1. 首先需要在Unity中对项目进行设置,选择Edit->Project Settings选项。 ![第一步][wate 约定不等于承诺〃/ 2021年11月14日 13:16/ 0 赞/ 365 阅读