第一篇:对Unity3D一周所学总结(定稿)
对Unity3D一周所学的总结
一、Transform
游戏对象的Transform属性可以进行位置、旋转、大小的设置。
属性:
1、transform.position在世界空间坐标transform的位置
如:transform.position = Vector3(0, 0,100);//移动物体到(0, 0, 100)
2、transform.rotaition//旋转
如:transform.rotation = Quaternion.identity;//重设世界的旋转角度
3、transform.scale//缩放
如:transform.localScale += Vector3(0.1,0,0);//扩大物体的x轴向0.1个单位
transform.localScale-= Vector3(0.5, 0, 0);
方法:
1、位移:transform.Translate
如:transform.Translate(Vector3.forward);//对象向前位移
transform.Translate(new Vector3(10,0,0));//对象向x轴方向位移
2、旋转:transform.Rotate
如:transform.Rotate(new Vector3(0,10,0));对象绕y轴旋转
3、围绕旋转:transform.RotateAround
如: transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime);
//围绕世界坐标原点,每秒20度物体自旋
查找:
Transform.Find //通过名字查找子物体并返回它
如: //查找到a物体并旋转它
function Update()
{
a = transform.Find(“a/b/c/d”);
a.Rotate(Time.deltaTime*20, 0, 0);
}
二、Input
想要读取轴向使用Input.GetAxis方法获取下列默认轴: “Horizontal” 和“Vertical” 映射于控制杆、A、W、S、D和箭头键(方向键)。“Mouse X” 和“Mouse Y” 映射于鼠标,“Fire1”, “Fire2” “Fire3”映射于键盘的Ctrl、Alt、Cmd键和鼠标中键或控制器的按钮。新的输入设置可以使用输入管理器来添加。
如:
if(Input.GetKey(KeyCode.E)){}//当按下键盘上的E键时发生
if(Input.GetMouseButton(0)){}//当点击鼠标左键,0、1、2表示鼠标左键右键中键 if(Input.GetButton(“Fire1”)){}//当点击鼠标时发生 float x = Input.GetAxis(“Horizontal”);//水平float z = Input.GetAxis(“Vertical”);//垂直
//transform.Translate(x*speed*Time.deltaTime,0,z*speed*Time.deltaTime);//控制对象的前后左右的位移
三、GameObject对象
GameObject是Unity场景里面所有实体的基类.游戏对象的创建
如:GameObject cube=GameObject.CreatePrimitive(PrimitiveType.Cube);//创建一个cube对象
克隆对象:
如:GameObject.Instantiate(cube);//克隆一个cube对象
GameObject.Instantiate(cube, cube.transform.position, Quaternion.identity);//克隆一个cube对象,获取它的位置,不旋转
销毁对象:
如:GameObject.Destroy(cube);//销毁一个cube对象
GameObject.Destroy(cube, 2f);//两秒之后cube对象销毁
对象的查找:
GameObject go=GameObject.Find(“Cube”);//通过对象名称Cube查找
GameObject go2=GameObject.FindWithTag(“cube”);//通对象的标签cube查找 GameObject go3=GameObject.FindGameObjectWithTag(“cube”);//通对象的标签cube查找
获取对象脚本:
如:Player player=sphere.GetComponent
();//获取脚本Player
print(player.myRocket);//获取脚本中公共的对象myRochet Time:
属性:Time.deltaTime
//计时
如:float a=3.0f;
void Update(){//三秒倒计时
a-=Time.delatTime;
print(a);
}
Random
int b=Random.Range(0,100)
包括最大和最小
float c=Random.Range(0.0f,1.0f);
包括最小但不包括最大
协程(Coroutine)
开启协程的两种方式: StartCoroutine(“Do”);StartCoroutine(Do());如:
void Start(){
print(“Start开始”);
StartCoroutine(“Do”);
print(“Do调用后”);
} IEnumerator Do(){
print(“Do开始”);
yield return new WaitForSeconds(3.0f);
print(“暂停3秒后”);}
消息传递
同级别对象之间
transform.SendMessage(“Get”);transform.SendMessage(“Get”,“aaaaaaaaaa”);
子对象向父对象发送
transform.SendMessageUpwards(“Get”);transform.SendMessageUpwards(“Get”,“aaaaaaaaaa”);父对象向子对象发送
transform.BroadcastMessage(“Get”);transform.BroadcastMessage(“Get”,“aaaaaaaaaa”);
碰撞检测:碰撞器(Collision)
触发器(Trigger)
碰撞器(Collision)
OnCollisionEnter(Collision col){}//进入 OnCollisionStay(Collision col){}//逗留 OnCollisionExit(Collision col){}//退出
触发器(Trigger)
OnTriggerEnter(Collider col){}//进入 OnTriggerStay(Collider col){}//逗留 OnTriggerExit(Collider col){}//退出
区别:是否勾选IsTrigger,触发器必须勾选上Is Trigger,碰撞器不需要。
狗刨学习网,学的更多、免费资源、免费视频下载
第二篇:小班一周所学6 6
小班一周所学
一、拼音
1复习单韵母a o e i u ü
b p m f以及书本上学过的内容。
二、数学
1、复习数字宝宝1 2 3 4 5 6 8 9
2、认识数字宝宝10像铅笔加鸡蛋
三、语言、复习汉字宝宝:天
红
并学习儿歌《小雪人》小雪人,白又胖。大眼睛,鼻子长。头上戴顶歪歪帽,红红围巾套脖上。
四、三字经
复习人之初……养不教,父之过。教不严,师之惰。学习
子不学,非所宜。幼不学,老何为。玉不琢,不成器,人不学,不知义。为人子,方少时。亲师友,习礼仪。香九龄,能温席。孝于亲,所当值。融四岁,能让梨。弟于长,宜先知。融四岁,能让梨。弟于长,宜先知。
学习
首孝悌,次见闻。知某数,识某文。一而十,十而百。百而千,千而万。
五、儿歌
复习《新年好》新年好呀,新年好呀,祝福大家新年好,我们唱歌,我们跳舞,祝福大家新年好。
六、社会
学习书本第二十七页《学做家务事》。
七、英语
复习英语单词:鼻子鼻子鼻子 nose
嘴巴嘴巴嘴巴mouth
眼睛眼睛eye 手 手hand 手臂手臂是arm
脚脚是foot
腿腿是leg
耳朵耳朵ear
1是one
2是Two
3是 Three 4是Four 5是Five 6是six 7是seven
8是eighe
学习英语9是nine 10是Ten
八、唐诗
《悯农》
春种一粒粟,秋收万颗子。四海无闲田,农夫犹饿死。
第三篇:Unity3d面试题总结
本人总结的一些Unity3d高频面试题目,希望可以帮助到大家。限于个人水平有限,只附上一些参考答案。
======================================= 数据结构和算法很重要,图形学也很重要!大的游戏公司很看重个人基础、综合能力; 小公司看你实际工作能力,看你的Demo。
高频问答的问题: 一.什么是渲染管道?
是指在显示器上为了显示出图像而经过的一系列必要操作。渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有:
本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。
二.如何优化内存? 有很多种方式,例如 1.压缩自带类库;
2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;
3.释放AssetBundle占用的资源; 4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小; 5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。
三、动态加载资源的方式?(有时候也问区别,具体请百度)1.Resources.Load();2.AssetBundle
四、什么是协同程序?
在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个线程。可以用来控制运动、序列以及对象的行为。
五、你用过哪些插件?
(最好多熟悉几个插件,问的时候好回答)====== 1.使用Unity3d实现2d游戏,有几种方式? 1.使用本身的GUI;
2.把摄像机的Projection(投影)值调为Orthographic(正交投影),不考虑z轴;
3.使用2d插件,如:2DToolKit;
2.Unity3d中的碰撞器和触发器的区别?
碰撞器有碰撞的效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数;
触发器没有碰撞效果,IsTrigger=true,可以调用OnTriggerEnter/Stay/Exit函数。
3.物体发生碰撞的必要条件
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。
4.CharacterController和Rigidbody的区别?
CharacterController自带胶囊碰撞器,里面包含有刚体的属性; Rigidbody就是刚体,使物体带有刚体的特征。
5.在物体发生碰撞的整个过程中,有几个阶段,分别列出对应的函数 三个阶段
1.OnCollisionEnter 2.OnCollisionStay 3.OnCollisionExit
6.Unity3d的物理引擎中,有几种施加力的方式,分别描述出来 rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函数中。7.什么叫做链条关节?
Hinge Joint,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。
8.物体自身旋转使用的函数? Transform.Rotate()
9.物体围绕某点旋转使用的函数? Transform.RotateAround()
10.Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数 PlayerPrefs.SetInt()
11.Unity3d提供了几种光源类型,分别是哪几种? 四种。
平行光:Directional Light 聚光灯:Spot Light
12.Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。
点光源:Point Light 区域光源:Area Light
PlayerPrefs.GetInt()Awake——>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>Reset——>OnDisable——>OnDestroy
13.物理更新一般放在哪个系统函数里?
FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。
14.移动摄像机的动作放在哪个系统函数中,为什么放在这个函数中?
LateUpdate,在每帧执行完毕调用,它是在所有Update结束后才调,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有Update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
15.当游戏中需要频繁创建一个物体时,我们需要怎样做能够节省内存?
使用预制物体对象Prefab,然后复制创建。
16.在场景中放置多个Camera并同时处于活动状态会发生什么? 游戏界面可以看到很多摄像机的混合。
17.请描述Prefab的作用,并描述如何在移动设备的环境下恰当的使用它?
Prefab在实例化的时候用到,主要用于经常会用到的物体,属性方便修改。
18.如何销毁一个UnityEngine.Object及其子类? 使用Destroy()方法;
19.请简述Unity3d下如何安全的在不同工程间迁移asset数据,请列举出三种方法?
1.可以把assets目录和Library目录一起迁移 2.导出包
3.用Unity带的assets Server功能
20.请描述游戏动画有哪几种,以及其原理?
主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活,Quake2中使用这种动画;
骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观;
单一网格模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。
21.请描述为什么Unity3d中会发生在组件上出现数据丢失的情况 一般是组件上绑定的物体对象被删除了
22.alpha blend工作原理
Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。
23.写出光照计算中的diffuse的计算公式
diffuse = Kd x colorLight x max(N*L,0);Kd 漫反射系数、colorLight 光的颜色、N 单位法线向量、L 由点指向光源的单位向量、其中N与L点乘,如果结果小于等于0,则漫反射为0。
24.Lod是什么,优缺点是什么?
LOD(Level of detail)多层次细节,是最常用的游戏优化技术。它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。
25.两种阴影判断的方法、工作原理。
26.Vertex Shader是什么,怎么计算? 顶点着色器
27.MipMap是什么,作用?
MipMapping:在三维计算机图形的贴图渲染中有常用的技术,为加快渲染进度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为MipMap。
28.机试:二选一
1.用代码实现第三角色控制器 2.实现吊机吊物体的功能
29.反向旋转动画的方法是什么?
30.碰撞检测需要物体具备什么属性?
31.获取、增加、删除组件的命令分别是什么? 获取:GetComponent 增加:AddComponent 删除:Destroy
32.Animation.CrossFade命令作用是:(C)A.动画放大 B.动画转换 C.动画的淡入为其他动画
33.Application.loadLevel命令为:(A)A.加载关卡 B.异步加载关卡 C.加载动作
34.调试记录到控制台的命令是什么? Debug.Log();
35.编辑器类存放路径是什么?
工程目录下的Assets/Editor文件夹下。
36.使用原生GUI创建一个可以拖动的窗口命令是什么? GUI.DragWindow();
37.localPosition与Position的使用区别?
localPosition:自身位置,相对于父级的变换的位置。Position:在世界坐标transform的位置
38.意义连线 Mathf.Round Mathf.Clamp Mathf.Lerp
插值 四舍五入 限制
39.写一个计时器工具,从整点开始计时,格式为:00:00:00
40.写出Animation的五个方法
41.怎么拿到一个对象上脚本的方法 GameObject.GetComponent<>();
42.上机题:用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放(用一个Cube即可)。
43.请简述向量的点乘,向量的叉乘以及向量归一化的几何意义? 点乘的几何意义是:计算两个向量之间的夹角,以及在某一方向上的投影;
叉乘的几何意义是:创建垂直于平面,三角形,或者多边形的向量;
参
考
:http://blog.sina.com.cn/s/blog_9283b6f601017hfw.html
第四篇:Unity3D学习总结
高考完了,上大学(或者大专)这几乎是现在大多数孩子的选择,我就是一个上了一个大专,虽然说是学制三年制,但是在第三年上了两个月之后学校就不讲课了,大家都纷纷走出校门开始找适合自己的工作,但是当我走出校门的时候,才发现我在大学期间几乎是什么也没学到,面试时一问三不知,找不到工作,此时才开始发现大学期间懒懒散散、早上起床起晚了不想去上课就不去了,和同学约好了出去玩也不去上课了,想在宿舍玩游戏就也不去上课了,不去上课,老师也不会多说什么,只会在他点名的时候叫到你的名字,如果你让舍友帮你答到,你会发现什么事情也没有,自此心里会愈发放松,课也是越旷越多,学习更是一点不懂,但是大学不学完全没人管,导致毕业之后还不如上大学之前,上大学之前还会高中知识,上完大学之后连高中知识都不会了,于是不得不参加一个培训班,但你选择一个培训班的时候你又会比较很多,怕培训不出来、怕学不好、怕培训了和没培训一个样子...总之你有很多顾虑。
我经过思考之后加入了我Unity3D培训班(狗刨学习网),因为我发现现在手机游戏迅速崛起,占据了国内很大的市场,因为手机人人都有,人们在坐公交,坐地铁,坐火车等交通工具时都会玩手机,甚至有些人在走路时都会玩,我参加了Unity3D培训班之后才发现,培训班远远比学校好多了,在这里你不会老师会问你那里不会,然后再教给你,不像学校老师就是为了拿工资给你上课,你不去,记你一个旷课也不会对你说什么,在这里还有大家可以讨论问题。
早上九点开始上课期间也有一些休息时间,可是几乎没有人乱走动,都是坐在自己的位置依旧学习,一直到晚上10点以后甚至到12点以后,大家都在拼命的学习,因为大家都知道了这是我们最后的机会,我们已经可以说是一只脚踏出了悬崖,如果我们还不能好好学习的话我们就会掉下悬崖,万劫不复,所以大家都在拼命的学习,只为了将来出人头地,不至于像大学那样上完以后碌碌无为。
所以我现在的心情总结就为自己琢磨的一句话“活着干,死了算,听天由命非好汉,拼命努力向前看。”当然我也想起了我们初中语文老师说的一句比较有文化的话“人生能有几回搏,此时不搏何时搏。”
第五篇:Unity3D重要知识点总结
www.xiexiebang.com
Unity3D重要知识点总结
学习Untiy3d过程中,你需要知道数据结构和算法很重,要图形学很重要,大的游戏公司看重个人基础,综合能力小公司就看你实际工作能力,看你的Demo做的如何。那么今天我们来看一下Unity3d学习中的重要知识点有哪些。
1.什么是渲染管道?
是指在显示器上为了显示出图像而经过的一系列必要操作。渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。
主要步骤有:
本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。
2.如何优化内存?
www.xiexiebang.com
有很多种方式,例如
1.压缩自带类库;
2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;
3.释放AssetBundle占用的资源;
4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;
5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。
3.动态加载资源的方式?
1.Resources.Load();2.AssetBundle 1.通过Resources模块,调用它的load函数:可以直接load并返回某个类型的Object,前提是要把这个资源放在Resource命名的文件夹下,Unity不关有没有场景引用,都会将其全部打入到安装包中。Resources.Load();2.通过bundle的形式:即将资源打成 asset bundle 放在服务器或本地磁盘,然后使用www.xiexiebang.com
3.通过AssetDatabase.loadasset :这种方式只在editor范围内有效,游戏运行时没有这个函数,它通常是在开发中调试用的
【AssetDatabase 资源数据库】
区别:Resources的方式需要把所有资源全部打入安装包,这对游戏的分包发布(微端)和版本升级(patch)是不利的,所以unity推荐的方式是不用它,都用bundle的方式替代,把资源达成几个小的bundle,用哪个就load哪个,这样还能分包发布和patch,但是在开发过程中,不可能没更新一个资源就打一次bundle,所以editor环境下可以使用AssetDatabase来模拟,这通常需要我们封装一个dynamic resource的loader模块,在不同的环境下做不同实现。动态资源的存放有时我需要存放一些自己的文件在磁盘上,例如我想把几个bundle放在初始的安装里,unity有一个streaming asset的概念,用于提供存储接口的访问。我们需要在编辑器建立一个StreamingAssets名字的文件夹,把需要我们放在客户磁盘上的动态文件放在这个文件夹下面,这样安装后,这些文件会放在用户磁盘的指定位置,这个位置可以通过Application.streamingAssetsPath来得到。
4.什么是协同程序?
在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个线程。可以用来控制运动、序列以及对象的行为。
5.你用过哪些插件?
www.xiexiebang.com
一 界面制作 推荐:NGUI 二 2D游戏制作 推荐:2D Toolkit /工具包,工具箱
三 可视化编程 推荐:PlayMaker 四 插值插件 推荐:iTween,HOTween 五 路径搜寻 推荐:Simple Path 六 美术及动画制作 推荐:RageSpline,Smooth Moves 七 画面增强 推荐:Bitmap2Material,Strumpy Shader Editor 八 摄像机管理 推荐:Security Camera 九 资源包 推荐:Nature Pack
十、造路插件EasyRoads3D 6.使用Unity3d实现2d游戏,有几种方式?
1.使用本身的GUI;
www.xiexiebang.com
2.把摄像机的Projection(投影)值调为Orthographic(正交投影),不考虑z轴;
3.使用2d插件,如:2DToolKit;
7.Unity3d中的碰撞器和触发器的区别?
触发器只是碰撞器身上的一个属性,碰撞器是触发器的载体。
碰撞器有碰撞的效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数;
触发器没有碰撞效果,IsTrigger=true,可以调用OnTriggerEnter/Stay/Exit函数。
a.如果不想让碰撞检测影响物体移动但是又想检测到碰撞这时用到触发器(Trigger)
b.触发器用来检测一个物件是否经过空间中的某个区域
8.物体发生碰撞的必要条件
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。
8.1 CharacterController和Rigidbody的区别?
CharacterController自带胶囊碰撞器,里面包含有刚体的属性;
www.xiexiebang.com
Rigidbody就是刚体,使物体带有刚体的特征。
[CharacterController:角色控制器]Rigidbody具有完全真实物理的特性,而CharacterController可以说是受限的Rigidbody,具有一定的物理效果但不是完全真实的
9.在物体发生碰撞的整个过程中,有几个阶段,分别列出对应的函数三个阶段
1.OnCollisionEnter(进入碰撞)2.OnCollisionStay(逗留碰撞)3.OnCollisionExit(当退出碰撞)10.Unity3d的物理引擎中,有几种施加力的方式,分别描述出来
rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函数中。
11.什么叫做链条关节?
Hinge Joint,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。
12.物体自身旋转使用的函数?
www.xiexiebang.com
Transform.Rotate()13.物体围绕某点旋转使用的函数?
Transform.RotateAround()14.Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数
PlayerPrefs.SetInt()PlayerPrefs.GetInt()15.Unity3d提供了几种光源类型,分别是哪几种?
四种。
平行光:Directional Light 点光源:Point Light 聚光灯:Spot Light 区域光源:Area Light
www.xiexiebang.com
16.Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。
Awake—>Start—>Update—>FixedUpdate—>LateUpdate—>OnGUI—>Reset—>OnDisable—>OnDestroy 17.物理更新一般放在哪个系统函数里?
FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。
18.移动摄像机的动作放在哪个系统函数中,为什么放在这个函数中?
LateUpdate,在每帧执行完毕调用,它是在所有Update结束后才调,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有Update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
19.当游戏中需要频繁创建一个物体时,我们需要怎样做能够节省内存?
使用预制物体对象Prefab,然后复制创建。
20.在场景中放置多个Camera并同时处于活动状态会发生什么?
www.xiexiebang.com
游戏界面可以看到很多摄像机的混合。
21.请描述Prefab的作用,并描述如何在移动设备的环境下恰当的使用它?
Prefab在实例化的时候用到,主要用于经常会用到的物体,属性方便修改。
22.请简述Unity3d下如何安全的在不同工程间迁移asset数据,请列举出三种方法?
1.可以把assets目录和Library目录一起迁移
2.导出包
3.用Unity带的assets Server功能
23.请描述游戏动画有哪几种,以及其原理?
主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。
a.关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一 个整体的动画,角色比较灵活,Quake2中使用这种动画;
b.骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观;
www.xiexiebang.com
c.单一网格模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。
24.请描述为什么Unity3d中会发生在组件上出现数据丢失的情况
一般是组件上绑定的物体对象被删除了
25.alpha blend工作原理
Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。
26.写出光照计算中的diffuse的计算公式
计算公式为: Idiffuse = Dintensity*Dcolor*N.L;(Dintensity表示漫反射强度,Dcolor 表示漫反射光颜色,N 为该点的法向量,L 为光源向量 其中N与L点乘,如果结果小于等于0,则漫反射为0。
27.Lod是什么,优缺点是什么?
www.xiexiebang.com
LOD(Level of detail)多层次细节,是最常用的游戏优化技术。它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。
28.两种阴影判断的方法、工作原理。
A.阴影由两部分组成:本影与半影
a.本影:景物表面上那些没有被光源直接照射的区域(全黑的轮廓分明的区域)
b.半影:景物表面上那些被某些特定光源直接照射但并非被所有特定光源直接照射的区域(半明半暗区域)
求阴影区域的方法:做两次消隐过程
一次对每个光源进行消隐,求出对于光源而言不可见的区域L;
一次对视点的位置进行消隐,求出对于视点而言可见的面S;
shadow area= L ∩ S B.阴影分为两种:自身阴影和投射阴影
自身阴影:因物体自身的遮挡而使光线照射不到它上面的某些可见面
www.xiexiebang.com
工作原理:利用背面剔除的方法求出,即假设视点在点光源的位置。
投射阴影:因不透明物体遮挡光线使得场景中位于该物体后面的物体或区域受不到光照照射而形成的阴影
工作原理:从光源处向物体的所有可见面投射光线,将这些面投影到场景中得到投影面,再将这些投影面与场景中的其他平面求交得出阴影多边形,保存这些阴影多边形信息,然后再按视点位置对场景进行相应处理得到所要求的视图(利用空间换时间,每次只需依据视点位置进行一次阴影计算即可,省去了一次消隐过程)若是动态光源此方法就无效了。
29.Vertex Shader是什么,怎么计算?
顶点着色器
顶点着色器是一段执行在GPU上的程序,用来取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作顶点。
Vertex Shader对输入顶点完成了从local space到homogeneous space(齐次空间)的变换过程,homogeneous space即projection space的下一个space。在这其间共有world transformation, view transformation和projection transformation及lighting几个过程。
30.MipMap是什么,作用?
www.xiexiebang.com
MipMapping:在三维计算机图形的贴图渲染中有常用的技术,为加快渲染进度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为MipMap。
31.机试:二选一
1.用代码实现第三角色控制器
2.实现吊机吊物体的功能
【吊机吊物体需要节点挂接和坐标系转换】
32.反向旋转动画的方法是什么?
【反转动画,讲动画的速度调到-1,碰撞时,被碰撞物体与碰撞物体有collider组件,碰撞物体有刚体组件,或角色碰撞得包含角色组件 OR 改变animation.speed】
33.碰撞检测需要物体具备什么属性?
能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器
【Physics.OverlapSphere相交球检测碰撞,碰撞检测需要包围盒】
34.获取、增加、删除组件的命令分别是什么?
www.xiexiebang.com
获取:GetComponent 增加:AddComponent 删除:Destroy 35.Animation.CrossFade命令作用是:(C)A.动画放大
B.动画转换
C.动画的淡入为其他动画
36.Application.loadLevel命令为:(A)A加载关卡
B.异步加载关卡
C.加载动作
37.调试记录到控制台的命令是什么?
Debug.Log();39.编辑器类存放路径是什么?
工程目录下的Assets/Editor文件夹下。
40.使用原生GUI创建一个可以拖动的窗口命令是什么?
www.xiexiebang.com
GUI.DragWindow();41.localPosition与Position的使用区别?
localPosition:自身位置,相对于父级的变换的位置。、Position:在世界坐标transform的位置
42.写一个计时器工具,从整点开始计时,格式为:00:00:00 43.写出Animation的五个方法
AddClip 添加剪辑、Blend 混合、Play 播放、Stop 停止、Sample 采样
44.怎么拿到一个对象上脚本的方法
GameObject.GetComponent<>();
www.xiexiebang.com
45.请简述向量的点乘,向量的叉乘以及向量归一化的几何意义?
点乘的几何意义是:计算两个向量之间的夹角,以及在某一方向上的投影;
叉乘的几何意义是:创建垂直于平面,三角形,或者多边形的向量;
46.Unity3D是否支持写成多线程?如果支持的话要注意什么?
支持:如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine.注意:C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象
47.Unity3D中的协程(Coroutine)和C#线程之间的区别是什么?
Unity3d没有多线程的概念,不过unity也给我们提供了StartCoroutine(协同程序)和LoadLevelAsync(异步加载关卡)后台加载场景的方法。StartCoroutine为什么叫协同程序呢,所谓协同,就是当你在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间不影响主程序的继续执行,可以协同工作。而LoadLevelAsync则允许你在后台加载新资源和场景,所以再利用协同,你就可以前台用loading条或动画提示玩家游戏未卡死,同时后台协同处理加载的事宜asynchronous[e??s??kr?n?s].synchronous同步
www.xiexiebang.com
48.请简述四元数的作用以及四元数相对于欧拉角的优点
A.四元数一般定义如下:q=w+xi+yj+zk其中 w,x,y,z是实数。同时,有: i*i=-1 j*j=-1 k*k=-1 B.四元数也可以表示为: q=[w,v] 有多种方式可表示旋转,如 axis/angle、欧拉角(Euler angles)、矩阵(matrix)、四元组等。相对于其它方法,四元组有其本身的优点:
a.四元数不会有欧拉角存在的 gimbal lock 问题[万向节死锁] b.四元数由4个数组成,旋转矩阵需要9个数
c.两个四元数之间更容易插值
d.四元数、矩阵在多次运算后会积攒误差,需要分别对其做规范化(normalize)和正交化(orthogonalize),对四元数规范化更容易 e.与旋转矩阵类似,两个四元组相乘可表示两次旋转
49.请简述OnBecameVisible及OnBecameInvisible的发生时机,以及他们执行的意义?
当renderer(渲染器)在任何相机上都不可见时调用:OnBecameInvisible
www.xiexiebang.com
当renderer(渲染器)在任何相机上可见时调用:OnBecameVisible 50.动画层(Animation Layers)的作用是什么?
动画层作为一个具有层级动画编辑概念的工具,可以用来制作和处理任何类型的动画
51.请说出4种面向对象的设计原则,并分别简述它们的含义。
1)单一职责原则(The Single Responsiblity Principle,简称SRP):一个类,最好只做一件事,只有一个引起它的变化.2)开放-封闭原则(The Open-Close Principle,简称OCP):对于扩展是开放的,对于更改是封闭的
3)Liskov 替换原则(The Liskov Substitution Principle,简称LSP):子类必须能够替换其基类
4)依赖倒置原则(The Dependency Inversion Pricinple,简称DIP):依赖于抽象
5)接口隔离原则(The Interface Segregation Principle,简称ISP):使用多个小的专门的接口,而不要使用一个大的总接口。
52.Material和Physic Material区别?
www.xiexiebang.com
PhysicMaterial 物理材质:物理材质描述,如何处理物体碰撞(摩擦,弹性)。
Material材质(材质类)为了获得一个对象使用的材质,可以使用 Renderer.materia属性:
53.法线贴图、CG动画
A.法线贴图:是在原物体的凹凸表面的每个点上均作法线,通过RGB颜色通道来标记法线的方向,你可以把它理解成与原凹凸表面平行的另一个不同的表面,但实际上它又只是一个光滑的平面。
B.CG动画:原为Computer Graphics的英文缩写。随着以计算机为主要工具进行视觉设计和生产的一系列相关产业的形成,国际上习惯将利用计算机技术进行视觉设计和生产的领域通称为CG。它既包括技术也包括艺术,几乎囊括了当今电脑时代中所有的视觉艺术创作活动,如平面印刷品的设计、网页设计、三维动画、影视特效、多媒体技术、以计算机辅助设计为主的建筑设计及工业造型设计等。NGUI(NUGUI1、NGUI2)
54.如何销毁一个UnityEngine.Object及其子类?
使用Destroy()方法;
55、请描述游戏动画有哪几种,以及其原理。
www.xiexiebang.com
主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。
a、关节动画把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活Quake2([kwe?k]vi.发抖,颤抖;)中使用了这种动画;b、单一网络模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。
c、骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,由关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观。皮肤网格每一个顶点都会受到骨骼的影响,从而实现完美的动画
56、下面哪种做法可以打开Unity的Asset Store Windows-> Asset Store
57、Mecanim系统中,Body Mask的作用是?
指定身体的某一部分是否参与渲染
58、以下哪种操作步骤可以打开Unity编辑器的Lightmapping视图?
Windows--> Lightmapping
www.xiexiebang.com
59、关于光照贴图
A:使用光照贴图比使用实时光源渲染要快
B:可以降低游戏内存消耗
C、多个物体可以使用同一张光照贴图
60、关于Vector3的API,以下说法正确的是?
Vector3.forward与Vector3(0,0,1)是一样的意思;
61、什么是导航网格(NavMesh)?
一种用于实现自动寻路的网格
62、什么是局部坐标,什么是世界坐标?
世界坐标是不会变的,一直以世界坐标轴的XYZ为标准。局部坐标其实就是自身的坐标,会随着物体的旋转而变化的。
63、itween插件的作用是什么,itween作用于世界坐标还是局部坐标,请列举出3个其常用方法?
www.xiexiebang.com
iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出。让你做开发更轻松,用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等“
方法:
a、MoveTo 物体移动 ;
b、ColorTo:随着时间改变对象的颜色组;
c、LookTo:随时间旋转物体让其脸部朝向所提供的Vector3或Transform位置
64、请简述NGUI中Panel和Anchor的作用
Anchor包含UIAnchor脚本。UIAnchor的功能是把对象锚定在屏幕的边缘(左上,左中,左下,上,中,下,右上,右中,右下),或缩放物体使其匹配屏幕的尺寸Panel对象有UIPanel脚本,UIPanel是一个容器,它将包含所有UI小部件,并负责将所包含的部件组合优化、承载,以减少绘制命令的调用。
65、Unity摄像机有几种工作方式,分别是什么?
perspective透视摄像机和orthographic正交摄像机
66、LayerMask.NameToLayer()这个方法有什么作用?
www.xiexiebang.com
LayerMask的使用是按位操作的,LayerMask.NameToLayer(“Players”)返回该Layer的编号。
67、请描述MeshRender中material和shader的区别?
Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)
Shader大体上可以分为两类: 表面着色器(Surface Shader)、片段着色器(Fragment Shader)
68、什么是矢量图
矢量图:计算机中显示的图形一般可以分为两大类——矢量图和位图。矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。例如一幅花的矢量图形实际上是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。由于矢量图形可通过公式计算获得,所以
www.xiexiebang.com
矢量图形文件体积一般较小。矢量图形最大的优点是无论放大、缩小或旋转等不会失真;最大的缺点是难以表现色。
69.上机题:用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放(用一个Cube即可)。
70、以下哪个函数在游戏进入新场景后会被马上调用?
MonoBehaviour.OnLevelWasLoaded 71、Unity3D方法执行的顺序:
1、Awake(),2、Start()(激活时的初始化代码)
3、Update()【FixUpdate、LateUpdate】、4、OnGUI(渲染模块)
5、然后是卸载模块(TearDown),这里主要有两个方法OnDisable()与OnDestroy()这里只列出了70个重要的知识点,大家可以参照着去学习,同时也不能忽略其他没有罗列出来的知识,最好就是在项目中不断的锻炼自己,让自己在各方面的能力都不断的提升。