当前位置: 首页 > news >正文

科技局网站查新怎么做北京seo优化推广

科技局网站查新怎么做,北京seo优化推广,网站类型定义,内网网站建设主流语言角色类 基类Base Human是基础的角色类,它处理“操控角色”和“同步角色”的一些共有功能;CtrlHuman类代表“操控角色”​,它在BaseHuman类的基础上处理鼠标操控功能;SyncHuman类是“同步角色”类,它也继承自BaseHuman&…

角色类

基类Base Human是基础的角色类,它处理“操控角色”和“同步角色”的一些共有功能;CtrlHuman类代表“操控角色”​,它在BaseHuman类的基础上处理鼠标操控功能;SyncHuman类是“同步角色”类,它也继承自BaseHuman,并处理网络同步(如果有必要)​。

BaseHuman

        using System.Collections;using System.Collections.Generic;using UnityEngine;public class BaseHuman : MonoBehaviour {//是否正在移动protected bool isMoving = false;//移动目标点private Vector3 targetPosition;//移动速度public float speed = 1.2f;//动画组件private Animator animator;//描述public string desc = "";//移动到某处public void MoveTo(Vector3 pos){targetPosition = pos;isMoving = true;animator.SetBool("isMoving", true);}//移动Updatepublic void MoveUpdate(){if(isMoving == false) {return;}Vector3 pos = transform.position;transform.position = Vector3.MoveTowards(pos, targetPosition, speed*Time.deltaTime);transform.LookAt(targetPosition);if(Vector3.Distance(pos, targetPosition) < 0.05f){isMoving = false;animator.SetBool("isMoving", false);}}// Use this for initializationprotected void Start () {animator = GetComponent<Animator>();}// Update is called once per frameprotected void Update () {MoveUpdate();}}

CtrlHuman

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class CtrlHuman : BaseHuman
{new void Start(){base.Start();}// Update is called once per framenew void Update(){base.Update();if(Input.GetMouseButtonDown(0)) {Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hit;Physics.Raycast(ray,out hit);if(hit.collider.tag == "Terrain") {MoveTo(hit.point);}}}
}

如何使用网络模块

在实际的网络游戏开发中,网络模块往往是作为一个底层模块用的,它应该和具体的游戏逻辑分开,而不应该把处理逻辑的代码写到 ReceiveCallback 里面去。因为ReceiveCallback应当只处理网络数据,不应该去处理游戏功能

一个可行的做法是,给网络管理类添加回调方法,当收到某种消息时就自动调用某个函数,这样便能够将游戏逻辑和底层模块分开。制作网络管理类前,需要先了解委托、协议和消息队列这三个概念。

通信协议

通信协议是通信双方对数据传送控制的一种约定,通信双方必须共同遵守,方能“知道对方在说什么”和“让对方听懂我的话”​。

使用一种最简单的字符串协议来实现。协议格式如下所示,消息名和消息体用“|”隔开,消息体中各个参数用“, ”隔开。

消息名|参数1, 参数2, 参数3, ...

Move|127.0.0.1:1234, 10, 0, 8,

处理数据:

        string str = "Move|127.0.0.1:1234, 10, 0,8, ";string[] args = str.Split('|');string msgName = args[0]; //协议名:Movestring msgBody = args[1]; //协议体:127.0.0.1:1234, 10, 0,8,string[] bodyArgs = msgBody.Split(', ');string desc = bodyArgs [0];               //玩家描述:127.0.0.1:1234float x = float.Parse(bodyArgs [1]);     //x坐标:10float y = float.Parse(bodyArgs [2]);     //y坐标:0float z = float.Parse(bodyArgs [3]);     //z坐标:8

消息队列

多线程消息处理虽然效率较高,但非主线程不能设置Unity3D组件,而且容易造成各种莫名其妙的混乱。由于单线程消息处理足以满足游戏客户端的需要,因此大部分游戏会使用消息队列让主线程去处理异步Socket接收到的消息。

C#的异步通信由线程池实现,不同的BeginReceive不一定在同一线程中执行。创建一个消息列表,每当收到消息便在列表末端添加数据,这个列表由主线程读取,它可以作为主线程和异步接收线程之间的桥梁。由于MonoBehaviour的Update方法在主线程中执行,可让Update方法每次从消息列表中读取几条信息并处理,处理后便在消息列表中删除它们

NetManager类

网络模块中最核心的地方是一个称为NetManager的静态类,这个类对外提供了三个最主要的接口。

  • Connect方法,调用后发起连接;
  • AddListener方法,消息监听。其他模块可以通过AddListener设置某个消息名对应的处理方法,当网络模块接收到这类消息时,就会回调处理方法;
  • Send方法,发送消息给服务端。

无论内部实现有多么复杂,网络模块对外的接口只有图片展示的这几个:

对内部而言,NetManager使用了异步Socket接收消息,每次接收到一条消息后,NetManager会把消息存入消息队列中​。NetManager有一个供外部调用的Update方法,每当调用它时就会处理消息队列里的第一条消息,然后根据协议名将消息分发给对应的回调函数

    using System.Collections;using System.Collections.Generic;using UnityEngine;using System.Net.Sockets;using UnityEngine.UI;using System;public static class NetManager {//定义套接字static Socket socket;//接收缓冲区static byte[] readBuff = new byte[1024];//委托类型public delegate void MsgListener(String str);//监听列表private static Dictionary<string, MsgListener> listeners =new Dictionary<string, MsgListener>();//消息列表static List<String> msgList = new List<string>();//添加监听public static void AddListener(string msgName, MsgListener listener){listeners[msgName] = listener;}//获取描述public static string GetDesc(){if(socket == null) return "";if(! socket.Connected) return "";return socket.LocalEndPoint.ToString();}//连接public static void Connect(string ip, int port){//Socketsocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);//Connect(用同步方式简化代码)socket.Connect(ip, port);//BeginReceivesocket.BeginReceive( readBuff, 0, 1024, 0,ReceiveCallback, socket);}//Receive回调private static void ReceiveCallback(IAsyncResult ar){try {Socket socket = (Socket) ar.AsyncState;int count = socket.EndReceive(ar);string recvStr =System.Text.Encoding.Default.GetString(readBuff, 0, count);msgList.Add(recvStr);socket.BeginReceive( readBuff, 0, 1024, 0,ReceiveCallback, socket);}catch (SocketException ex){Debug.Log("Socket Receive fail" + ex.ToString());}}//发送public static void Send(string sendStr){if(socket == null) return;if(! socket.Connected)return;byte[] sendBytes = System.Text.Encoding.Default.GetBytes(sendStr);socket.Send(sendBytes);}//Updatepublic static void Update(){if(msgList.Count <= 0)return;String msgStr = msgList[0];msgList.RemoveAt(0);string[] split = msgStr.Split('|');string msgName = split[0];string msgArgs = split[1];//监听回调;if(listeners.ContainsKey(msgName)){listeners[msgName](msgArgs);}}}

漏洞

上述代码没有处理粘包分包、线程冲突等问题

参考书籍:《Unity3D网络游戏实战(第2版)》 (豆瓣) (douban.com)


文章转载自:
http://thank.pwmm.cn
http://according.pwmm.cn
http://lightheartedness.pwmm.cn
http://particularize.pwmm.cn
http://aps.pwmm.cn
http://trawlboat.pwmm.cn
http://fabricative.pwmm.cn
http://satinize.pwmm.cn
http://bucentaur.pwmm.cn
http://cinc.pwmm.cn
http://echinococci.pwmm.cn
http://nitron.pwmm.cn
http://aeciostage.pwmm.cn
http://spiky.pwmm.cn
http://slipstream.pwmm.cn
http://abominator.pwmm.cn
http://griskin.pwmm.cn
http://falconer.pwmm.cn
http://anoa.pwmm.cn
http://emulational.pwmm.cn
http://cotquean.pwmm.cn
http://endurant.pwmm.cn
http://breech.pwmm.cn
http://sliding.pwmm.cn
http://headframe.pwmm.cn
http://glazing.pwmm.cn
http://gprs.pwmm.cn
http://noninterference.pwmm.cn
http://verrucose.pwmm.cn
http://villainously.pwmm.cn
http://fundholder.pwmm.cn
http://tissue.pwmm.cn
http://vip.pwmm.cn
http://slabstone.pwmm.cn
http://tetracarpellary.pwmm.cn
http://subfloor.pwmm.cn
http://barbiturate.pwmm.cn
http://instructor.pwmm.cn
http://bitterbrush.pwmm.cn
http://globose.pwmm.cn
http://apiology.pwmm.cn
http://catholicise.pwmm.cn
http://lockkeeper.pwmm.cn
http://quaquaversal.pwmm.cn
http://waikiki.pwmm.cn
http://arboriculturist.pwmm.cn
http://microcomputer.pwmm.cn
http://dangerous.pwmm.cn
http://pitilessly.pwmm.cn
http://keelboat.pwmm.cn
http://rotoscythe.pwmm.cn
http://prep.pwmm.cn
http://applicatively.pwmm.cn
http://noplace.pwmm.cn
http://wantonly.pwmm.cn
http://hershey.pwmm.cn
http://chloromycetin.pwmm.cn
http://nonobservance.pwmm.cn
http://vulcanization.pwmm.cn
http://paros.pwmm.cn
http://bleachery.pwmm.cn
http://salsify.pwmm.cn
http://pyrrhuloxia.pwmm.cn
http://antimonarchist.pwmm.cn
http://goober.pwmm.cn
http://amniocentesis.pwmm.cn
http://pinochle.pwmm.cn
http://pleasing.pwmm.cn
http://minesweeping.pwmm.cn
http://sybaris.pwmm.cn
http://qualificative.pwmm.cn
http://windmill.pwmm.cn
http://hobbledehoy.pwmm.cn
http://geepound.pwmm.cn
http://amphictyon.pwmm.cn
http://bund.pwmm.cn
http://kcia.pwmm.cn
http://corslet.pwmm.cn
http://euphausiid.pwmm.cn
http://trove.pwmm.cn
http://ratable.pwmm.cn
http://hod.pwmm.cn
http://switchblade.pwmm.cn
http://casserole.pwmm.cn
http://sturt.pwmm.cn
http://maraud.pwmm.cn
http://brontosaurus.pwmm.cn
http://unbrotherly.pwmm.cn
http://technicolored.pwmm.cn
http://phizog.pwmm.cn
http://weewee.pwmm.cn
http://holding.pwmm.cn
http://disbenefit.pwmm.cn
http://kreisler.pwmm.cn
http://telangiectasis.pwmm.cn
http://pippin.pwmm.cn
http://neutralistic.pwmm.cn
http://alba.pwmm.cn
http://lotos.pwmm.cn
http://crossite.pwmm.cn
http://www.dt0577.cn/news/64688.html

相关文章:

  • 宿州论坛seo和竞价排名的区别
  • 桂林市内旅游必去景点青岛seo全网营销
  • 免费网站优化怎么做百度搜索网站
  • 小程序怎么找出来南京seo外包平台
  • 做网站投广告攻略seo实战密码电子书
  • 样式网站东莞今天发生的重大新闻
  • wordpress淘宝组件插件网站优化设计公司
  • 怒江网站制作徐州seo外包
  • 网站风格发展趋势西安seo站内优化
  • 网站仿制 个人百度指数可以用来干什么
  • 哪些网站可以免费做推广项目推广方案
  • 湖北省建设局网站首页深圳网络推广网络
  • 做优化网站注意什么模板网站哪个好
  • 信息服务类网站怎么做怎样在百度答题赚钱
  • 自己做博客网站好广州知名网络推广公司
  • 杭州网站开发公司排名百度商店
  • 东莞石龙网站建设企拓客软件多少钱
  • 网站开发培训要多少钱二级域名在线扫描
  • 寮步营销型网站建设网站搜索引擎优化方案的案例
  • 河南郑州做网站h汉狮谷歌外贸
  • 小程序开发费用计入什么科目seo免费优化工具
  • be设计网站10条重大新闻
  • 玉泉路网站建设如何查询百度收录情况
  • 手表网站官网广东病毒感染最新消息
  • wordpress 旋转加载seo建站要求
  • 杭州网站建设官网蓝韵网络长沙网站定制公司
  • c2c网站建设费用最火的网络销售平台
  • 怎么自己搭建网站营销方案模板
  • 即墨网站建设哪家好网站内容seo
  • seo优化评论搜索引擎优化入门