1、详解Unity3d游戏开发中Texture贴图纹理及相关属性
http://www.newbieol.com/information/1004.html
2、C#中的set和get方法
https://www.cnblogs.com/lixiaolu/p/8214037.html
3、前向渲染与延迟渲染(核心为一种光照处理模式)
(1)前向渲染:将通过深度测试的模型进行渲染,存在的问题为其所渲染的模型远大于最终在屏幕上所呈现的。
(2)延迟渲染:将摄像机空间的店光栅化转换成屏幕坐标后存入G-buffer中后进行集中处理,这有的优势为提高效率,缺点为无法处理半透明材质(原因无法记录半透明物体的深度和法线信息),缺乏抗锯齿。
https://blog.youkuaiyun.com/jfy307596479/article/details/85782669
https://blog.youkuaiyun.com/taotaoah/article/details/52633822
http://www.sohu.com/a/240225358_468740
Deferred shading(延迟渲染)技术带来一个很重要的缺点就是不能使用基于硬件实现的多重采样抗锯齿功能。因为渲染过程发生在第二步,所以我们在第二步需要多个样本,且其丢失了几何信息。但是,在第二步我们只有每一个像素的一个样本。
https://www.sohu.com/a/125709754_468740(主要介绍延迟渲染)
c#杂记
1、正则表达式中@“^\d{5-12}$” //其中^$表示限定住字符匹配的范围,否则字符串中存在子字符串符合就认为字符串匹配。
面试题总结https://www.cnblogs.com/Dean27/p/8492458.html
三、动态加载资源的方式,以及区别。
答:
1.通过Resources.Load()模块:调用它的load函数,可以直接load并返回某个类型的Object,前提是需要把这个资源放在Resource命名的文件夹下,Unity不管有没有场景引用,都会将其全部打包到安装包中。
2.通过bundle的形式:即将资源打包成 asset bundle 放在服务器或本地磁盘,然后使用www模块get下来,之后从这个bundle中load某个Object。
3.通过AssetDatabase.loadasset:这种方式只在editor范围内有效,游戏运行时没有这个函数,他通常是在开发中调用。
区别:
Resoueces的方式需要把所有资源全部打入安装包,这对游戏的发布和版本升级(patch)是不利的,所以Unity不太推荐使用它,而都用bundle的方式代替,把资源打成几个小的bundle,用哪个就load哪个,这样有利于分包发布和版本升级。但是在开发过程中,不可能每更新一个资源就打一次bundle,所以在editor环境下可以使用AssetDatabase来模拟,这通常需要我们封装一个dynamic resource的loader模块,在不同的环境下做不同的实现。
四、协程
在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程。Unity的协程是在每帧结束之后去检测yield的条件是否满足。
五、ArrayList与list
九、unity中各个函数运行时的发生顺序
十二、对象池
十五、请简述sealed关键字用在类声明时与用在函数声明时的作用。
三十、请描述接口与抽象类之间的不同
四十、请简述结构体和类的区别。
四十一、请简述ref参数和out参数是什么,有什么区别。
四十九、简述四元数的作用,四元数相对于欧拉角有哪些有点。(重点知识,需要学习和了解:矩阵旋转、欧拉角、四元数)
四十八、请简述反射的实现原理。
五十二、请简述游戏动画有哪几种,以及其原理。
五十四、写出光照运算中的diffuse的计算公式。
六十一、为什么dynamic font 在 unicode 环境下优于static font?
六十二、当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况?如何避免?
六十三、请简述OnBecameVisible和OnBecameInvisible的发生时机,以及这对回调函数的意思。
六十四、什么叫动态合批?跟静态合批有什么区别?
七十二、概述C#中代理和事件?
七十四、Unity和Android与ios如何交互?
七十六:请问alpha test在何时使用?能达到什么效果?
七十七、Unity在移动设备上的一些优化资源的方法?
答:1.使用assetbundle,实现资源分离和共享,将内存控制在200m之内,同时也可以实现资源的在线更新。
2.顶点数对渲染无论是CPU还是GPU都是压力最大的贡献者,降低顶点数到8万以下,fps30帧以上。
3.只用一盏动态光,不使用阴影,不使用光照探头。
4.剪裁粒子系统。
5.合并同时出现的粒子系统。
6.自己实现轻量级的粒子系统。
7.animator也是一个效率奇差的地方,把不需要骨骼动画和动作过渡的地方全部使用Animation,控制骨骼数量在30根以下。
8.删除无意义的animator。
9.animator的初始化很耗时,粒子上尽量不要使用animator。
10.除主角外尽量都不要跟骨骼运动(apply root motion)。
11.绝对禁止哪些不带刚体,带包围盒的物体(static collider)运动。
12.每帧递归的计算 finalalpha 改为只有初始化和变动时计算。
13.去掉法线计算。
14.不要每帧计算 veiwsize 和 windowsize。
15.filldrawcall时构建顶点缓存使用array.copy。
16.代码裁剪:使用strip level,使用.net2.0 subset。
17.尽量减少 smooth group。
18.给美术定一个严格的经过科学验证的美术标准,并且最喜爱Unity3d里面配以相应的检查工具。