摘要: 网络通讯之Socket-Tcp 分成2部分讲解: 网络通讯之Socket-Tcp(一): 1.如何理解Socket 2.Socket通信重要函数 3.Socket Tcp 调用的基本流程图 4.简单Socket实例 网络通讯之Socket-Tcp(二): 1.完善Socket实例【黏包拆包 收发数据 阅读全文
posted @ 2022-07-09 15:19 赵不灰 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 网络通讯之Socket-Tcp 分成2部分讲解: 网络通讯之Socket-Tcp(一): 1.如何理解Socket 2.Socket通信重要函数 3.Socket Tcp 调用的基本流程图 4.简单Socket实例 网络通讯之Socket-Tcp(二): 1.完善Socket实例【黏包拆包 收发数据 阅读全文
posted @ 2022-07-03 10:55 赵不灰 阅读(914) 评论(0) 推荐(0) 编辑
摘要: 观察者模式:当对象间存在一对多关系时,则使用观察者模式。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 TestCommonEvent.cs 1 using System.Col 阅读全文
posted @ 2022-06-25 16:58 赵不灰 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 下载protoc.exe 用于生成c# 代码,地址:https://github.com/protocolbuffers/protobuf/releases 下载的版本最好和Google.Protobuf.dll 版本一致。 解压之后,我们在bin目录下编写一个简单的test1.proto: 1 s 阅读全文
posted @ 2022-06-18 15:22 赵不灰 阅读(1836) 评论(0) 推荐(1) 编辑
摘要: 获取Google.Protobuf.dll 有2种方式: 第一种:下载源码,配置环境、自行编译,相对麻烦,略过。 第二种:打开VisualStudio,通过 NuGet包管理 获取Google.Protobuf.dll 然后打开工程目录搜索 Google.Protobuf.dll 拷贝到unity 阅读全文
posted @ 2022-06-16 16:13 赵不灰 阅读(816) 评论(0) 推荐(0) 编辑
摘要: 通讯协议实现有2种方式 一种是我们自己用struct(结构体),一种用第三方Google.Protobuf。 通讯协议一般都是转化为byte字节发送给服务端,所以需要封装一个 常用数据类型 与byte 可读可写的转换这么一个类。 举个例子: short 与byte转换: 1 public void 阅读全文
posted @ 2022-06-16 08:36 赵不灰 阅读(539) 评论(0) 推荐(1) 编辑
摘要: 逻辑结构图: TestHttpCallBackArgs http回调参数 1 using System; 2 3 /// <summary> 4 /// http回调参数 5 /// </summary> 6 public class TestHttpCallBackArgs : EventArgs 阅读全文
posted @ 2022-05-21 13:39 赵不灰 阅读(2240) 评论(0) 推荐(0) 编辑
摘要: SYN:同步(1:开启 0:关闭),表示客户机想与服务器同步 ACK:确认(1:表示有效 0:无效) FIN:结束 PSH:有 DATA数据传输 RST:连接重置 seq:序号(随机生成的) ack:确认号 三次握手 三次握手描述是不太准确的,建立Tcp链接只握了 一次手,所谓3次 是发送了3次报文 阅读全文
posted @ 2022-05-21 06:44 赵不灰 阅读(254) 评论(0) 推荐(0) 编辑
摘要: Dictionary是我们经常使用的,一起来看看它是如何构造的,及有哪些优缺点。 Dictionary是一种键值对的形式存放数据,即 key值 、value 值 一 一映射的。key的类型没有限制,可以是整数、字符串甚至是实例对象。 Dictionary的实现原理,有两个关键的算法,Hash算法 和 阅读全文
posted @ 2022-05-14 19:07 赵不灰 阅读(4632) 评论(0) 推荐(0) 编辑
摘要: 构造函数: 由此可见 List 用数组实现的。 Add 方法: 我们来继续看下EnsureCapacity 函数: Remove 方法: Remove:使用Array.IndexOf () 获取Item 的索引,然后用RemoveAt 来移除,RemoveAt里面用的是 Array.Copy 来拷贝 阅读全文
posted @ 2022-05-04 17:49 赵不灰 阅读(1465) 评论(0) 推荐(1) 编辑
摘要: 上图: 启动流程、检查更新流程 ... 游戏关卡流程 等等 全部继承自流程基类,而流程又属于状态的一种,所以流程基类继承 父类FsmState。 流程属于状态,状态需要有一个拥有者来进行管理,切换状态。那么流程的拥有者就是流程管理器。 流程管理类: 1 using System; 2 3 /// < 阅读全文
posted @ 2022-05-04 10:19 赵不灰 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 什么是有限状态机: 有限状态机是一种用来进行对象行为建模的工具,作用是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。简单理解就是:状态满足条件下的一种处理机制。 有限状态机,任意时刻都处于有限状态集合中的某一状态。当获得一个输入字符时,将从当前状态转换到另一状态或仍保持当 阅读全文
posted @ 2022-05-03 23:06 赵不灰 阅读(936) 评论(0) 推荐(0) 编辑
摘要: 对象池老生常谈的问题了,对象池即对象的池子。大概描述下:对象池内寄放着废弃的对象,当程序需要某对象去池子里拿,让废弃对象再利用,如果没有则创建;用完之后再将废弃的对象回收。一句话:让内存重复利用的优化方案。 解决痛点: 1.省去很多内存碎片得问题; 2.节省实例对CPU的消耗; 3.触发垃圾回收(G 阅读全文
posted @ 2022-05-01 15:48 赵不灰 阅读(349) 评论(0) 推荐(0) 编辑
摘要: unity协程Coroutine 大家并不陌生,在项目中也是经常使用。大量的使用协程,会影响性能,带来GC。 如下图 延迟调用 所带来的的GC: 因此 对于延迟调用 ,最好不要用 协程 Coroutine,最好自己用update 去实现。 自己写定时器有哪些优点: 1.减少GC 2.可以自己写回调, 阅读全文
posted @ 2022-04-25 20:27 赵不灰 阅读(494) 评论(0) 推荐(0) 编辑
摘要: preinit.lua 一定要在初始化lua环境函数 执行此lua脚本 _luaEnv.DoString("require 'preinit'"); 1 if jit then 2 jit.off() 3 jit.flush() 4 end 5 6 local __g = _G 7 -- 导出全局变 阅读全文
posted @ 2022-04-24 12:31 赵不灰 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 总述: 以往的Animator, 角色需要的动画会一次性全部拖拽到列表里,加载就需要一次性的全部加载进去,造成卡顿。而AnimationClipPlayable可以按需加载 需要再加载 超时卸载,可以减少内存的占用。 角色动画特别多,常用的动画 默认加载,非常用的动画可以动态加载,设置过期时间 超时 阅读全文
posted @ 2022-04-23 13:44 赵不灰 阅读(1043) 评论(0) 推荐(0) 编辑
摘要: 续上篇 unity之性能优化 PlayableGraph 动画应用(一)继续: 多个动画如何播放,动画融合、权重等 上代码: 1 using System.Collections.Generic; 2 using UnityEngine; 3 using UnityEngine.Animations 阅读全文
posted @ 2022-04-23 08:09 赵不灰 阅读(682) 评论(0) 推荐(0) 编辑
摘要: PlayableGraph 概述: PlayableGraph是一组动画图API PlayableGraph常用API:PlayableGraphAnimationPlayableOutput: IPlayableOutPut 输出节点AnimationMixerPlayable: Iplayabl 阅读全文
posted @ 2022-04-22 21:52 赵不灰 阅读(836) 评论(0) 推荐(0) 编辑
摘要: IOS : 1 //获取磁盘空间总大小 2 -(float)GetTotalDiskSpace { 3 float totalSpace; 4 NSError *error = nil; 5 NSArray *paths = NSSearchPathForDirectoriesInDomains(N 阅读全文
posted @ 2022-04-19 16:47 赵不灰 阅读(779) 评论(0) 推荐(0) 编辑
摘要: 1 local RenderTexture = CS.UnityEngine.RenderTexture 2 local Rect =CS.UnityEngine.Rect 3 local Screen =CS.UnityEngine.Screen 4 local Texture2D = CS.Un 阅读全文
posted @ 2022-04-18 16:35 赵不灰 阅读(804) 评论(0) 推荐(0) 编辑
摘要: using System; using System.Collections.Generic; using UnityEngine; public class GameObjectPoolEntity { public Queue<GameObject> QueueList; public stri 阅读全文
posted @ 2023-05-04 11:40 赵不灰 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 1 using UnityEngine; 2 public class ConversionSkyBox: MonoBehaviour 3 { 4 public Material skyMats;//天空盒材质球 5 private void OnEnable() 6 { 7 if (skyMats 阅读全文
posted @ 2023-05-04 11:37 赵不灰 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 一般情况下用默认的渲染管线: 当加载人物模型或其他界面时,可动态的更改渲染管线: 思路如下: 加载场景(也可加载UI界面),动态更改渲染管线在更改渲染管线之前,记录之前的渲染管线,再退出场景或者退出UI界面 替换回之前的渲染管线。 渲染管线也分 【低 中 高】 画质,根据用户的设备等级。 关键的点: 阅读全文
posted @ 2023-02-14 16:11 赵不灰 阅读(769) 评论(0) 推荐(0) 编辑