面筋
春招
第一家 广州 寄
首先问一下学习unity 多久了
C++ 在学校是怎么学习的 – oop 没有C11
那就问一个C#问题 List底层是什么
无序数组怎么增加增删的效率 –增:在最后增加 删:swap最后然后在最后删 (堆排序?)
聊天:lua现在好像淘汰 C# 技术栈就够 huatuo
场景题: 水果忍者 怎么随机生成水果和角度
场景题 : 水果忍者 怎么切割
第二家 杭州 oc
首先问一下学习unity 多久了
回答:大一下暑假断断续续,也是一年多
介绍一下杀戮尖塔项目
热更做了吗(没有)那做了什么
回答: 做了一个lua xlua的背包系统 写了个ABmanager 然后写Panel 后面补充了BasePanel的框架
有使用过unity的性能工具吗?有遇到性能问题吗
没有,但是大概知道理论
在CPU 和 GPU 方面的优化 大概了解吗
CPU : 代码层面:框架,缓存池 批处理:静态批处理 空间换时间
GPU : 太卡没回答
说一下你关于状态机的使用(后面有说公司项目有多用状态机来 ...
unity热更新AB包
前言热更新是手游平台对于游戏的一种特殊更新技术,本篇将讲解AB包的资源热更和Lua的代码热更
热更新AssetBundle详解 - 知乎 (zhihu.com)
[Unity AssetBundle的打包 发布 下载与加载_assetbundle下载-CSDN博客](https://blog.csdn.net/newchenxf/article/details/124738469#:~:text=2.1 AB包的文件结构 1 将想要动态加载的资源添加到AssetBundle (可以有多个bundle) 2 要发布时,做打包工作 3,自己把bundle上传到服务器,服务器管理版本 4 客户端下载bundle,版本不匹配(md5校验啥的),则下载新bundle 5 加载指定路径的bundle,提取文件 6 卸载bundle, 节约内存)
AssetBundle 基础AssetBundle又称AB包,是Unity提供的一种用于存储资源的资源压缩包。
Unity中的AssetBundle系统是对资源管理的一种扩展,通过将资源分布在不同的AB包中可以最大程度地减少运行时的内存压力,可以动态地加载 ...
unity网络开发理论
前言计算机网络部分
OSI模型
五层模型
作用
应用层
为应用程序提供交互服务。在互联网中的应用层协议很多,如域名系统DNS、HTTP协议、SMTP协议等。
传输层
负责向两台主机进程之间的通信提供数据传输服务。传输层的协议主要有传输控制协议TCP和用户数据协议UDP。
网络层
选择合适的路由和交换结点,确保数据及时传送。主要包括IP协议。
数据链路层
在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
物理层
实现相邻节点间比特流的透明传输,尽可能屏蔽传输介质和物理设备的差异。
层级
名称
描述
7
应用层
计算机用户、应用程序与网络之间的接口,提供网络服务及应用所需的监督、管理和服务等协议,负责协调各个应用程序间的工作。
6
表示层
对来自应用层的命令和数据进行解释,处理用户信息的表示问题,如编码、数据格式转换和加密解密,并传送给会话层。
5
会话层
用户应用程序和网络之间的接口,组织和协调两个会话进程之间的通信,并对数据交换进行管理。
4
传输层
提供可靠的端到端的 ...
前端学习路线
前言
今天突发奇想找一下前端的学习路线,毕竟也是前端出身的
(unity客户端也是游戏前端不是吗)
推荐文章
【干货】前端学习路线分享!写了个网站帮助你学习前端!_哔哩哔哩_bilibili
前端学习路线 (objtube.github.io)
前端学习路线(很长,建议收藏) - 知乎 (zhihu.com)
看到一个网友的评论
第一步: 掌握HTML/CSS这是你最初必须掌握的是网站的构建元素没得选!随着你前端的学习进程,熟练掌握HTML/CSS简单易学
第二步: 使用基础工具文本编辑器: Notepad2 / Sublime Text / Atom.io / IDE图像编辑器:Photoshop, Illustrator, GIMP, Something slseFTP / SSH 工具 : Filezilla ,Putty好的浏览器: Chrome云盘: Dropbox, Google Drive, Box
第三步: 学习原生JavaScript原生JavaScript(现阶段不需要理会Node.js 和任何框架)理解数据类型: String, Number, Array ...
UGUI 优化- DrawCall
前言
UI优化核心就是一点:减低DrawCall对于DC(DrawCall)问题来说
是游戏客户端程序员头疼以及及其影响性能的重大原因之一
DrawCall介绍简而言之,Draw Call 就是你的CPU要求你的GPU绘制一些东西。就是你的CPU在说:嘿,用这些纹理和照明信息在那角落画这张椅子。
12CPU准备好需要绘制的元素,对底层图形程序接口进行调用的过程。也可以理解为:CPU向GPU发布一条渲染指令,就是一次DrawCall的过程。简称DC。
DC作用问题是,准备Unity Draw Call会占用CPU大量的时间和精力。Unity必须将场景内容转换为GPU可以理解的格式。这个过程开销最昂贵的部分是设置正确的渲染参数,例如纹理,着色器,网格等。
手动设置渲染参数很繁琐。这就是游戏开发人员引入材质概念的原因。
这是否意味着我们不能一次绘制太多对象?
不是的。
游戏开发人员使用批处理将相似对象的渲染分组到同一个Draw Call中。这样,CPU只需支付一次绘制调用即可渲染多个对象。
在使用批处理时,我们要求GPU一次在这里,那里和后面画三把椅子,而不是在三个不同的时间。
为什 ...
关于CLR模型-GC
前言
对于C#的内存模型而言 CLR是最主要的处理内存的”中心”
类比下,C#是司机,.Net是汽车,CLR是引擎
本文可能后续还有补充,目前以GC为核心解析
基础概念
.Net:以下这些技术的统称
.Net Framework/.Net Core/Mono:3种将.Net技术打包发行的方式,其选择的组件不一定相同
CLR:Common Language Runtime 一个执行引擎,用于进行一类程序(CLI),提供类型系统、垃圾回收、JIT等功能;目前有3个主要实现,分别为coreclr用于.Net Core、desktop clr用于.Net Framework(有了coreclr之后才获得的一个相对”名称)、Mono(没人给其中的runtime部分单独取名)
CLI:Common Language Infrastructure 一个经标准化组织认证的标准(ECMA-335),定义了CLR的基础功能和其上执行的程序的标准
IL:Intermediate Language 用于将程序直接输入CLR的格式,包含二进制格式与其对应的文本格式;IL中的任何构造都与CLR内部严格一一对 ...
C# 高级语法
前言
关于C#高级语法在重新拾起后发现很多有趣以及好用的特性与语法糖
本篇关于高级语法包括: 属性 常量 字段 泛型 委托 事件 匿名函数 lambda 协变逆变 预处理指令 反射 特性 多线程 迭代器
基础属性 get set定义 :属性Property—-看起来像变量的函数 如下
12345678910111213141516partial class Human{ public int Age{ get{ Log($“getAge{age}”); return age; } set{ Log($”setAge{age}=>{value}”); age=value; } }}//mainHuman human =new human();human.Age=32;//属性读写
这 ...
unityShader基本介绍
第二章:Shader和渲染管线【图形学】学长沉浸式啃《实时渲染4th》- 第一章图形渲染流水线 - 深入浅出实时渲染的整体流程_哔哩哔哩_bilibili
2.1 什么是Shader
GPU流水线上高度可编程阶段。
有特定类型的着色器,如顶点着色器,片元着色器。
依靠着色器可以控制流水线中的渲染细节。
2.2 什么是顶点、片元
顶点就是点,包含了空间坐标信息。
图元是由顶点组成的。一个顶点,一条线段,一个三角形或者多边形都可以成为图元。
片元是在图元经过光栅化阶段后,被分割成一个个像素大小的基本单位。
像素是最终呈现在屏幕上的包含RGBA值的图像最小单元。
2.3 渲染流水线
计算机从一系列的顶点数据,纹理等信息出发,将这些信息转换为图像,这个工作通常由GPU和CPU共同完成。
渲染流水线是概念流水线。
渲染流水线:应用阶段->几何阶段->光栅化阶段->像素化阶段
2.3.1 应用阶段这一阶段由三个主要任务:
准备场景数据
粗粒度剔除(可以剔除不可见物体,提升渲染性能)
输出渲染图元。
渲染图元:可以是点,线,三角面等。渲染图元会传递到几何阶段。
步骤 ...
unity UI优化
前言UI的性能问题是很多人容易忽视,但却很重要的一个问题。通常我们的UI界面可能是美术或者策划来拼接,然后程序在做功能时并不会去关心UI的布局是否合理,有没有动静分离,以及禁用一些不需要的属性。所以在团队中制定一些做UI的规则就很重要。
优化UI系统能带来什么收益呢?优化UI系统带来的最明显的收益就是包体和内存的骤减,以及整体界面的流畅度。
一个没有提前考虑性能和优化的UI系统带来的问题会有很多,比如:
APK包体过大内存占用过大(致应用闪退)Draw Call过多导致性能问题界面之间切换不流畅动画卡顿掉帧顶点过多造成游戏卡顿等等这里列举的只是一部分在很常见的未优化导致的问题。
2.如何进行优化,从哪下手?相信有些人开始优化的时候会觉得无从下手,或者跟着网上优化一下图片格式,或者删删减减无用资源等,说白了这些跟算不得上是优化,因为他就是基础必备的。
内存优化使用图集尽量一个界面的元素保持在一个图集中,一些公用的图片放到一张公用的图集中,比如关闭 \底框等,这样做的好处是我们打开一个界面就只需要把对应的图集加载到内存中,如果该界面引用到其他图集中图片,哪怕是一张,对应的整个图集都会加载 ...
游戏设计模式(逐步更新)
前言本文为游戏设计模式的读书笔记,
架构,性能和游戏重访设计模式命令模式定义:1将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。
理解1将命令封装,与目标行为解耦,使命令由流程概念变为对象数据
UML
要点
将一组行为抽象为对象,这个对象和其他对象一样可以被存储和传递,从而实现行为请求者与行为实现者之间的松耦合,这就是命令模式。
命令模式是回调机制的面向对象版本。
命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。
命令模式的优点有:对类间解耦、可扩展性强、易于命令的组合维护、易于与其他模式结合,而缺点是会导致类的膨胀。
命令模式有不少的细分种类,实际使用时应根据当前所需来找到合适的设计方式。
使用场合
命令模式很适合实现诸如撤消,重做,回放,时间倒流之类的功能。
基于命令模式实现录像与回放等功能,也就是执行并解析一系列经过预录制的序列化后的各玩家操作的有序命令集合。
引申与参考
最终我们可能会得到很多不同的命令类。为了更容易实现这些类,定义一个具体的基类,包含一些能定义行 ...