- 博客(64)
- 收藏
- 关注
原创 渲染管线——应用阶段
每次调用DarwCall之前,CPU都要发送很多内容,包括数据、状态等等,如果DrawCall过多,Cpu就会把大量的时间花费在提交DrawCall上面,造成卡顿。2.动态批处理 对于在运行时可能会改变的对象,例如移动的游戏角色,Unity会尝试将它们动态地合并成一个网格或纹理。5.调用DrawCall(CPU通知GPU使用相关的数据和渲染状态进行渲染)2.准备好模型相关数据(顶点、法线、切线、贴图、着色器等等)1.合并网格(将静态物体网格合并),也叫静态批处理。3.将数据加载到显存中。
2024-05-22 10:33:08 343
原创 渲染管线概述
它是计算机图形学中用于将三维场景转换为最终屏幕所见图像的过程。它是由一系列的阶段和操作组成的,每个阶段都负责执行特定的任务逐步处理输入的集合数据和纹理信息,最终生成可视化图像的过程简单来说,渲染管线就是将数据分阶段的变为屏幕图像的过程。
2024-05-21 17:08:22 253
原创 模拟面试题
Mono 是 Unity 早期使用的运行时环境,也是一个跨平台的开源项目,提供了一套完整的实现了 .NET 标准的运行时环境和类库。Unity 使用 Mono 来解释和执行编译后的 IL 代码,并提供了对 .NET 平台上的 API 的访问。
2024-05-16 17:37:32 667
原创 进程和线程的概念是什么
进程是正在运行的程序的实例。它包含了程序的代码、数据和程序执行时所需要的系统资源(如内存、文件句柄等)。每个进程都拥有独立的内存空间,使得它们彼此之间相互隔离。
2024-05-16 14:54:23 264
原创 Resources资源卸载
/Resources.UnloadAsset方法卸载指定资源,但是不能卸载GameObject类型的资源//Resources.UnloadUnusedAssets方法卸载未使用的资源,一般过场景的时候和垃圾回收GC一起使用。
2024-02-21 11:02:46 406
原创 Resources资源异步加载
/1.完成事件监听异步加载//好处:写法简单//坏处:只能在资源加载结束后进行处理//‘线性加载’//2.协程异步加载//好处:可以在协程中处理复杂逻辑,比如同时加载多个资源,比如进度条更新//坏处:写法稍微麻烦//“并行加载”//注意://理解为什么异步加载不能马上加载结束,为什么至少要等1帧//理解协程异步加载的原理。
2024-02-20 16:58:18 568
原创 Resources资源文件夹
Resources动态加载资源的方法让拓展性更强相对拖拽来说 它更加一劳永逸 更加方便重要的点:记住API还要记住一些特定的格式预制体加载出来一定要实例化。
2024-02-20 14:28:28 490
原创 Unity之协同程序
1.Unity支持多线程,只是新开的线程无法访问主线程中Unity相关内容一般主要用于进行复杂逻辑运算或者网络消息接收等等注意 :Unity中的多线程一定记住要关闭2.协同程序不是多线程,他是将线程中逻辑进行分时执行,避免卡顿3.继承MonoBeahvior的类都可以使用协程4.协程只有当组件单独失活时不受影响,其他情况都会停止。
2024-02-01 16:03:04 691
原创 Unity之延迟函数
延迟函数顾名思义就是会延迟执行的函数,我们可以自己设定延时要执行的函数和具体延时的时间。是MonoBehaviour基类中实现的好方法//继承MonoBehavior的脚本可以使用延迟相关函数//函数相关//Invoke 延时函数//InvokeRepeatinng 延迟重复函数//CancelInvoke 停止所有或者停止传入的指定延时函数//IsInvoke 判断是否有延迟函数在执行//使用相关//1.参数都是函数名,无法传函数需要的参数//2.只能执行该脚本中申明的函数。
2024-01-31 11:07:52 645
原创 Unity之四元数计算
2.通过鼠标滚轮控制摄像机距离人物的距离(有最大最小限制)模拟飞机发射不同类型子弹的方法,单发,双发,扇形,环形。5.Quaternion.Slerp实现摄像机看向人物。3.摄像机看向任务头顶上方的一个位置(可调节)4.Vector3.Lerp实现相机跟随任务。1.摄像机在人物斜后方,通过角度控制倾斜率。用3D数学知识实现摄像机跟随效果。
2024-01-19 14:52:33 653
原创 1.UnityProfiler性能分析提升性能
在 Unity 编辑器中,点击顶部工具栏上的 "Window" -> "Analysis" -> "Profiler" 打开 Profiler 窗口。查看 CPU、内存、GPU 等方面的统计信息,找到消耗性能的函数、渲染操作或内存使用。减少渲染时的 Draw Calls 数量,使用批处理技术(如合并网格、合并材质、使用 GPU Instancing 等)来优化渲染性能。4.Batches :批次,绘制场景,我们分几个批次提交给我们的GPU来绘制,100个物体要绘制,那么分几次提交给GPU。
2024-01-11 17:03:02 1077
原创 14.Unity中序列化
/对类对象的2进制序列化主要用到的是//1.BitConverter转换非字符串类型的变量为字节数组//2.Encoding.UTF8转换字符串类型的变量为字节数组(注意:为了考虑反序列化,在转存2进制,序列化字符串之前,先序列化字符串字节数组的长度)//转换流程是//1.明确字节数组的容量//2.申明一个装载信息的字节数组容器//3.将对象中的所有信息转为字节数组并放入该容器当中(利用数组中的CopyTo方法转存字节数组)
2023-12-22 10:47:15 435 1
原创 13.TCP/IP协议
TCP/IP协议不仅仅指的是TCP和IP两个协议,二十指由FTP、SMTP、TCP、UDP、IP等等协议构成的协议簇。TCP/IP协议是一系列规则的统称,他们定义了消息在网络间进行传输的规则。是供已连接互联网的设备进行通信的通信规则。总的来说就是:OSI模型只是一个基本概念,而TCP/IP协议是基于这个概念的具体实现。而TCP、IP协议是为了解决一组特定的问题而设计的,他是基于互联网开发的标准协议。TCP/IP网络结构体系实际上和是基于OSI七层模型设计出来的。
2023-12-21 14:55:55 504
原创 11.OSI模型
它会在上一层的数据基础上添加标头包含信息:IP地址、版本、长度等等信息。为了让不同设备之间能够有统一的规则,表示层会把数据转换为能与各个系统格式兼容并且适合传输的格式。每一帧分为两个部分:标头Head+数据Data,标头包含数据包的一些说明项,比如发送方和接收方的Mac地址,数据类型等等。它会在原始数据的基础上添加标头,包含信息:协议信息等等。建立、管理端口到端口的通信。它会在上一层的数据基础上添加标头,包含信息:发送方接收方的端口信息、协议信息等等。定义传输模式、定义传输速率、比特同步、比特编码等等。
2023-12-13 10:14:10 134
原创 9.Unity搭建HTTP服务器
//1.使用别人做好的HTTP服务器软件,一般作为资源服务器时使用该方式(学习阶段建议使用)//2.自己编写HTTP服务器应用程序,一般作为Web服务器 或者 短链接游戏服务器时 使用该方式 //下载hfs等HTTP服务器软件 //在想要作为HTTP资源服务器的电脑上运行它//我们在学习过程中,可以直接在别人做好的Web服务器上获取信息和资源//比如我们可以下载任意网站上可被下载的图片
2023-12-04 15:00:52 348
原创 8.HTTP工作原理
1.HTTP是什么HTTP超文本传输协议就是在一个网络中上传下载文件的一套规则2.HTTP工作原理HTTP超文本传输协议的本质是TCP通信,链接—>请求—>响应—>断开3.HTTP协议的请求类型和响应状态码请求方法:GET和POST 响应状态码:1xx消息、2xx成功、3xx重定向、4xx请求错误、5xx服务器错误3.如何学习FTP搭建HTTP服务器获取服务器上的内容上传内容到HTTP服务器。
2023-12-04 14:26:17 127
原创 6.游戏通信方案概述
网络游戏的通信方案大体上可以根据游戏的实际情况分为两种:长链接(强联网)游戏和短链接(弱联网)游戏网络游戏的三种通信方案:1.Socket网络套接字主要用来完成长连接网络游戏需求2.Http超文本传输协议主要用来完成短链接网络游戏需求(或者资源下载相关)3.FTP文件传输协议主要用来完成资源的下载和上传等需求。
2023-11-29 16:35:34 174
原创 5.数据通信模型
1.数据通信模型2.C/S模型3.B/S模型4.P2P模型在早期的计算机网络中,为了有效的利用计算机,一般将数据通信模型分为分散式(Decentralized)集中式(Centralized)分布式(Distributed)这三种方式决定了数据在网络环境中的管理方式
2023-11-29 14:40:26 54
原创 公共Mono模块
我们可以将这个公共的MonoManager造就一个唯一的Update,这样,很多的对象需要Update中执行的逻辑就可以放到这一个Update里面跑而不用每个对象都创建一个Update方法,可以节省一定的性能。并且除了可以封装Update方法和协程之外,我们还可以添加更多的功能进去,例如计时器等等。
2023-11-24 16:59:04 30
原创 缓存池模块基础
在Unity开发中,当我们在场景中不停的实例化对象并且在这些对象用完后需要不停的删除,这种情况下是比较消耗性能的,例如子弹,怪物,特效等等。当我们用完再场景中删除后,虽然场景中删除了但是再内存中的占用还是存在的,直到内存占用满了才会释放掉这些不用的内存垃圾(被称为GC)而缓存池则是,当我们需要实例化对象时,先查看缓存池中有没有这个对象。如果缓存池中有,直接拿出来使用,使用完之后再放回缓存池。如果没有,我们才会实例化对象,当实例化完的这个对象用完了之后将它放进缓存池方便下次用的时候可以直接拿出来使用它。
2023-11-14 16:39:56 37
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人