UH3L3——生成AB包资源对比文件
UH3L3——生成AB包资源对比文件 分析需求 分析存放AB包的文件夹下哪些文件需要生成资源对比文件 需要生成资源对比文件的只有没有后缀的AB包本身, manifest文件是存储AB包依赖的,一般很少更新改变 meta文件是Unity对存储到Assets文件夹下的文件默认生成的设置配置信息,不需要关注 前置知识点 文件读写操作:DirectoryInfo、Directory、FileInfo 编辑器菜单栏添加按钮:[MenuItem()] 生成流程 在菜单栏添加一个按钮,用于触发该功能 遍历AB包文件夹,获取所有AB包文件消息,例如文件名,文件路径,文件长度,文件后缀名 将AB包的文件名、大小、MD码存入到资源对比文件中,MD码的获取复用上节课实现的代码 (文件名、大小、MD码之间用' '分割,不同AB包资源消息之间用'|'分割) 代码实现 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950using...
CS3L25——StringBuilder
CS3L25——StringBuilder 本章代码关键字 12345678910stringBuilder.Capacity //获取当前 StringBulider 的容量StringBulider.Length //获取当前 StringBulider 的字符串长度stringBuilder.Append() //追加字符串stringBuilder.AppendFormat() //以格式化方式追加字符串stringBuilder.Insert() //在指定位置插入字符串stringBuilder.Remove() //从指定位置后移除指定数量的字符串stringBuilder.Clear() //清空所有内容stringBuilder[] //通过索引器查找字符或者修改字符stringBuilder.Replace() ...
UH3L2——获取AB包文件的MD5码
UH3L2——获取AB包文件的MD5码 本章代码关键字 123456System.Security.Cryptography //安全和加密相关命名空间MD5 //MD5码类MD5CryptoServiceProvider //MD5加密服务提供商类new MD5CryptoServiceProvider() //通过MD5加密服务提供商类的构造函数实例化一个继承MD5类对象的构造方法md5.ComputeHash() //通过文件流获取md5码,返回16个字节的字节数组byte.ToString("x2") //将字节数组转为小写16进制的字符 MD5码 MD5(Message-Digest...
UH3L1——准备AB包资源
UH3L1——准备AB包资源 导入AssetBundles-Browser-master 关于高版本如何导入,请参考:高版本导入AssetBundles-Browser-master 准备资源 创建ArtRes文件夹,随意创建几个Lua脚本(.lua.txt后缀)和预制体,分别放入到luaAB包和modelAB包内 AB包打包 按照下图设置打包选项,然后打包,这次不需要将其拷贝到StreamingAssets内(除非作为默认的AB包资源) 打包后效果:
UN6L2——实现断线重连
UN6L2——实现断线重连 断线重连 有时我们会因为遇到意外情况而非自愿的断开与服务器的连接(如网络不好等情况) 因此,我们为断开连接的Close方法添加一个参数,用来表示是否是客户端自己断开连接 如果不是,就可以弹出一个界面询问客户是否断线重连 12345678910111213141516171819202122232425public void Close(bool isSelf = false){ if (socket != null) { QuitMessage msg = new QuitMessage(); socket.Send(msg.Writing()); socket.Shutdown(SocketShutdown.Both); socket.Disconnect(false); socket.Close(); socket = null; } //不是自己主动断开连接的 if (!isSelf) ...
UN6L1——消息池类和消息处理类
UN6L1——消息池类和消息处理类 要解决的问题 在目前的练习题内实现的客户端网络管理器里,我们是将消息的识别,和消息的处理逻辑在网络层实现的 并且用switch...case...来实现消息的识别,缩略代码如下(省略断联、发消息等逻辑): 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113private Queue<BaseMessage> receiveQueue = new Queue<BaseHandler>();//连接服务器的代码public void Connect(string ip, int port){ if...
UN6——网络开发实践相关
UN6——网络开发实践相关 实践目标 消息池和消息处理类 通过消息池类和消息处理类,优化反序列化和消息处理,消息识别逻辑从网络层逻辑中剥离开来 实现断线重连 为什么要进行这个实践优化 网络通讯模块,往往是游戏开发初期定好规则后,就不会进行过多更改的模块,我们需要将其封装的更加通用、便捷、高效 我们的主要目的是: 自动化的生成、处理消息 将消息逻辑处理剥离到外部 在进行模块化开发时更加的方便其它开发人员工作,让我们把工作重点放到上层逻辑的处理上
UEDL3-8——动画曲线、布局
UEDL3-8——动画曲线、布局 本章代码关键字 123456789EditorGUILayout.CurveField() //动画曲线控件,可以让我们设置动画曲线,需要配套一个AnimationCurve变量AnimationCurve //动画曲线类EditorGUILayout.BeginHorizontal() //水平布局方法,与EndHorizontal()配合使用,包裹需要水平布局的控件EditorGUILayout.EndHorizontal() //与BeginHorizontal()配合使用的方法,其包裹起来的控件是水平布局的EditorGUILayout.BeginVertical() //垂直布局方法,与EndVertical()配合使用,包裹需要垂直布局的控件EditorGUILayout.EndVertical() ...
UEDL3-7——帮助框、间隔
UEDL3-7——帮助框、间隔 本章代码关键字 1234567EditorGUILayout.HelpBox() //帮助框控件,该控件可以输出一些提示信息MessageType //消息类型枚举,需要传入到帮助框控件内,表示提示消息的类型MessageType.None //不显示图标MessageType.Info //显示白色感叹号消息图标MessageType.Warning //显示警告图标MessageType.Error //显示错误符号图标EditorGUILayout.Space() //间隔控件,该控件可以让控件隔开一段距离 帮助框控件 该控件可以输出一些提示信息 参数一:输出消息(可选用GUIContent) 参数二:消息类型枚举...