前端学习路线
前言
今天突发奇想找一下前端的学习路线,毕竟也是前端出身的
(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 ...
OS
异步
进程,线程,协程的区别?
1、进程
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。
2、线程
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。
3、协程
协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
协程就是在unity ...
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
要点
将一组行为抽象为对象,这个对象和其他对象一样可以被存储和传递,从而实现行为请求者与行为实现者之间的松耦合,这就是命令模式。
命令模式是回调机制的面向对象版本。
命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。
命令模式的优点有:对类间解耦、可扩展性强、易于命令的组合维护、易于与其他模式结合,而缺点是会导致类的膨胀。
命令模式有不少的细分种类,实际使用时应根据当前所需来找到合适的设计方式。
使用场合
命令模式很适合实现诸如撤消,重做,回放,时间倒流之类的功能。
基于命令模式实现录像与回放等功能,也就是执行并解析一系列经过预录制的序列化后的各玩家操作的有序命令集合。
引申与参考
最终我们可能会得到很多不同的命令类。为了更容易实现这些类,定义一个具体的基类,包含一些能定义行 ...
unity 3d数学理论
向量定义
向量在Unity中用于表示方向和位移。一个向量由三个部分组成,即x、y和z轴的分量。
向量的大小(长度)是其在各个维度上的绝对值的总和,表示向量的长度或幅度。
向量的方向由其相对原点的角度和旋转角决定。
向量的几何意义是表示一个有向线段,其中箭头表示方向和长度。
在unity中用Vector3 代替
名称
概念
公式
unity实例
零向量
没有方向
(0,0,0)
Vector3.zero
负向量
让原向量乘以-1得到了相当于原向量来说的负向量
单位向量
长度为1的向量叫单位向量(1,1,1)
各个分量分别除以magnitude模长就等于单位向量
向量的模
向量的长度
向量的长度=sqr(x^2+y^2+z^2) //各向量的平方相加,再开方
Vector.magnitude
向量相加
各分量分别相加
a向量+b向量=c向量 a(x,y,z)+b(x,y,z)=c(ax+bx,ay+by,az+bz)
向量计算点乘概念点乘,也叫向量的内积、数量积。
描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影。
向量a·向量 ...
文件与脚本MVC整理
前言作为一个unity 开放者来说,工程规范是及其重要的,而文件规范又占了一大部分
这文件规范就像一个个柜子一样,你正确放置物品的话下一次找到这个资源就很容易。
不想整理?你多人协作后就知道什么是痛苦了
命名规则Assets目录中的所有资源文件名(场景、脚本、预设、模型、网格、纹理、材质、精灵、着色器、音频剪辑、视频剪辑)均采用 大驼峰式命名法 ,即每一个单词的首字母都大写。且使用能够描述其功能或意义的英文单词或词组。
文件目录
目录
说明
ABRes
自定义资源目录,用于存放需要动态加载的AB包中的资源。职责类似于Artwork,需要热更新的放入该文件夹并打包.
Artwork
存放美术资源的目录(涵盖动画、模型、材质、Shader、UI、原图等等),最好通过 svn 外链或者 git submodel 的方式引入,同样在上面的目录少了一个策划的目录,其实一般就是一个 csv 目录,一般也是通过 svn 外链或者 git submodel 的方式引入
Editor
编辑器目录,存放扩展编辑器的代码,该代码可调用Unity Editor的API。该目录中的代码不会被打 ...