位置: 编程技术 - 正文

Scut游戏服务器引擎之Unity3d接入(scumpve服务器)

编辑:rootadmin
【狗刨学习网】

推荐整理分享Scut游戏服务器引擎之Unity3d接入(scumpve服务器),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:scumpve服务器,scum服务器价格,scumpvp服务器,scytl服务器,scum服务器价格,scytl服务器,scum官方服务器ip,scum官方服务器ip,内容如对您有帮助,希望把文章链接给更多的朋友!

Scut提供Unity3d Sdk包,方便开发人员快速与Scut游戏服务器对接; 先看Unity3d示例如下:

Scut游戏服务器引擎之Unity3d接入(scumpve服务器)

启动Unity3d项目 打开Scutc.svnSDKUnity3dAssets目录下的TestScene.unity项目文件,选中Main Camera,将TestGUI.cs文件拖动到Inspector窗口的Script,如图: 点击运行,如下: 目录层次说明 1) Net层:封装Http与Socket请求操作,以及网络协议的数据解析和请求参数的打包,其中NetWriter里有SetMd5Key为设置网络协议请求参数的Key,用于跟服务校验请求参数的有效性 2) Reflect层:提供高性能的反射功能 3) Security层:加密操作 4) Serialization层:封装对象的序列化操作 5) Game层:游戏业务逻辑层代码实现功能,此目录下的Action和Behaviour目录,根据业务自己实现代码 6) CustomHeadFormater类:自定的结构消息头解析器 7) TestGUI.cs为测试脚本 TestGUI代码

using UnityEngine;public class TestGUI : MonoBehaviour{ // Use this for initialization void Start() { //todo 启用自定的结构 Net.Instance.HeadFormater = new CustomHeadFormater(); } // Update is called once per frame void Update() { } void OnGUI() { // Now create any Controls you like, and they will be displayed with the custom Skin if (GUILayout.Button("Click Http")) { NetWriter.SetUrl("[color=blue ! Net.Instance.Send((int)ActionType.RankSelect, null); } // Any Controls created here will use the default Skin and not the custom Skin if (GUILayout.Button("Click Socket")) { NetWriter.SetUrl("ph.scutgame.com:"); Net.Instance.Send((int)ActionType.RankSelect, null); } }}

Send方法接口会根据url是否带http字段来判断是否是用http还是socket, Action和Behaviour目录下实现自己的业务代码

自定头部解析类CustomHeadFormater代码

using System;using GameRanking.Pack;using ZyGames.Framework.Common.Serialization;/// <summary>/// 定制的头部结构解析/// </summary>public class CustomHeadFormater : IHeadFormater{ public bool TryParse(byte[] data, out PackageHead head, out byte[] bodyBytes) { bodyBytes = null; head = null; int pos = 0; if (data == null || data.Length == 0) { return false; } int headSize = GetInt(data, ref pos); byte[] headBytes = new byte[headSize]; Buffer.BlockCopy(data, pos, headBytes, 0, headBytes.Length); pos &#;= headSize; ResponsePack resPack = ProtoBufUtils.Deserialize<ResponsePack>(headBytes); head = new PackageHead(); head.StatusCode = resPack.ErrorCode; head.MsgId = resPack.MsgId; head.Description = resPack.ErrorInfo; head.ActionId = resPack.ActionId; head.StrTime = resPack.St; int bodyLen = data.Length - pos; if (bodyLen > 0) { bodyBytes = new byte[bodyLen]; Buffer.BlockCopy(data, pos, bodyBytes, 0, bodyLen); } else { bodyBytes = new byte[0]; } //UnityEngine.Debug.Log(string.Format("ActionId:{0}, ErrorCode:{1}, len:{2}", resPack.ActionId, resPack.ErrorCode, bodyBytes.Length)); return true; } private int GetInt(byte[] data, ref int pos) { int val = BitConverter.ToInt(data, pos); pos &#;= sizeof(int); return val; }}BaseAction代码/// <summary>/// 自定结构Action代理基类/// </summary>public abstract class BaseAction : GameAction{ protected BaseAction(int actionId) : base(actionId) { } protected override void SetActionHead(NetWriter writer) { MessagePack headPack = new MessagePack() { MsgId = Head.MsgId, ActionId = ActionId, SessionId = Head.SessionId, UserId = Head.UserId }; byte[] data = ProtoBufUtils.Serialize(headPack); writer.SetHeadBuffer(data); writer.SetBodyData(null); }}Action代码using System;using System.Collections.Generic;using GameRanking.Pack;using ZyGames.Framework.Common.Serialization;public class Action : BaseAction{ private ResponsePack _responseData; public Action() : base((int)ActionType.RankSelect) { } protected override void SendParameter(NetWriter writer, object userData) { //自定对象参数&#;式 RequestPack requestPack = new RequestPack() { PageIndex = 1, PageSize = }; byte[] data = ProtoBufUtils.Serialize(requestPack); writer.SetBodyData(data); } protected override void DecodePackage(NetReader reader) { if (reader.StatusCode == 0) { //自定对象&#;式解包 _responseData = ProtoBufUtils.Deserialize<ResponsePack>(reader.Buffer); } } protected override void Process(object userData) { if (_responseData != null) { UnityEngine.Debug.Log(string.Format("ok, count:{0}", _responseData.PageCount)); } }}声明:此篇文档时来自于【狗刨学习网】社区,是网友自行发布的Unity3D学习文章,如果有什么内容侵犯了你的相关权益,请与官方沟通,我们会即时处理。更多精彩内容:www.gopedu.com

Unity3D游戏开发之动画脚本 Animation Scripting 动画脚本AnimationScripting有时你需要程序化的驱动你的角色骨骼.例如你可能需要你的角色的头注视3d空间的某个点.这个活最好让脚本来干.幸运的是,Unity做

C#程序员整理的Unity 3D笔记(九):Unity 3D测试浅析 Unity中的组件上的类,是不能new的,必须通过组件去获取,new出来的东西是null。if(amainfo.nameHash==Animator.StringToHash(BaseLayer.idle)){m_animator.SetBool(Run,true);}代

Unity技巧集合 这篇文章将收集unity的相关技巧,会不断地更新内容。1)保存运行中的状态unity在运行状态时是不能够保存的。但在运行时编辑的时候,有时会发现比较

标签: scumpve服务器

本文链接地址:https://www.jiuchutong.com/biancheng/369391.html 转载请保留说明!

上一篇:Windows系统Unity3D中的快捷键(unity editor window)

下一篇:Unity3D游戏开发之动画脚本 Animation Scripting(Unity3D游戏开发引擎)

  • 注册资本印花税减半征收政策
  • 税中税是多少
  • 税金及附加怎么来的
  • 新成立的销售公司有哪些
  • 收到失业保险稳岗补贴会计分录
  • 公司没有账目违法吗
  • 股权转让所得如何申报个税
  • 资产减值损失借方表示
  • 一般纳税人简易计税可以抵扣进项税额吗
  • 企业收到税收返还会计分录
  • 第一次开电子普票怎么开
  • 中小企业存货内部控制存在的问题以公司为例
  • 报废过期产品怎么做会计分录
  • 收到去年所得税汇算清缴退税账务处理
  • 购进机器进项税额怎么核算?
  • 个人定期存款利率怎么算
  • 记账错误是什么意思
  • 全屏游戏键盘一直打字
  • apple ID怎么解绑设备
  • 年度利润总额是会计利润吗
  • 房产税如何进行计提
  • 公司餐饮费怎么做账
  • 融资租赁固定资产会计处理
  • win10电脑文件夹打不开
  • 简易征收月末需要转出未交增值税吗
  • PHP:session_name()的用法_Session函数
  • 购买农产品没有承担增值税为什么还要计算抵扣
  • 路由器重启后电视放不出来咋办
  • 怎么u盘装系统,u盘装系统教程图解
  • 联营企业和合营企业长期股权投资的方式
  • webssh github
  • 小说《从零开始》
  • 【小沐学C++】C++ MFC中嵌入web网页控件(WebBrowser、WebView2、CEF3)
  • vue怎么打断点
  • 深度学习参数初始化(二)Kaiming初始化 含代码
  • 针对多用户实现什么功能
  • 为什么开发票能抵税
  • 可供出售金融资产的会计处理
  • 征收率是税率吗
  • 私对公可以转账吗?会对做账不利吗
  • 补偿金是否应该上税
  • 织梦技术论坛
  • 员工洗衣机使用制度
  • 分期付款的消费税怎么计算
  • 工人意外伤害保险
  • 期初是什么
  • 销货方怎么开具购买方红冲的发票
  • 不单独计价的包装物是什么意思
  • 日记总账的适用范围
  • 固定资产清理的借贷方向表示什么
  • 企业年度所得税怎么算
  • 计算企业所得税可以扣除的税金
  • 负数发票开错了是否可以作废?
  • 企业退休返聘人员怎么规避风险
  • 折旧计入主营业务成本的情况
  • 残疾人就业保障金征收使用管理办法
  • 食品企业生产成本管理的案例分析
  • 本年利润年末有余额怎么回事
  • 总分类账的依据
  • sqlserver 类型
  • mysql通过find_in_set()函数实现where in()顺序排序
  • 备受大家关注的成语
  • 强化廉洁意识 筑牢思想防线
  • solaris x86软件 sparc 区别
  • apt-get download
  • 服务器迁移至新服务器方法
  • Linux中环境变量的用法
  • win8系统打不开exe
  • linux sh
  • cocos2d怎么用
  • 可重复进行编程的可编程器件有 ( )
  • dos基本命令大全关机
  • unity3d物体移动代码
  • python发送短信到手机
  • 社保欠费税务催缴
  • 地方税务局稽查局卢永胜
  • 河南省地方税务局公告2017年第4号
  • 江西省企业社会保险费缴费指南
  • 跨市变更税务登记要多久
  • 中级财务管理好难
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设