设置项目目录设置的主要步骤的操作步骤遵循什么顺序





StaticBatchingUtility:合并到一个游戏对象下合并後可以移动父节点游戏对象"

 平台上运行,可以使用.NET 库这也为 XML、数据库、正则表达式等问题提供了很好的解决方案。

Unity 里的脚本都会经过编譯他们的运行速度也很快。这三种语言实际上的功能和运行速度是一样的区别主要体现在语言特性上。

JavaScript:和网页中常用的 JavaScript 不一样它編译后的运行速度很快,语法方面也会有不少区别

109. Unity3D 是否支持写成多线程程序?如果支持的话需要注意什么

注意:C#中有 lock 这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象

当物体是否可见切换之时。可以用于只需要在物体可见时才进行的计算

114. 物体发生碰撞時,有几个阶段分别对应的函数

116. 物体自旋转使用的函数叫什么

117. 物体绕某点旋转使用函数叫什么

118. u3d 提供了一个用于保存读取数据的类,(playerPrefs)请列出保存读取整形数据的函数

119. unity3d 从唤醒到销毁有一段生命周期,请列出系统自己调用的几个重要方法

120. 物理更新一般在哪个系统函数里?

121. 移动相机动作在哪个函数里为什么在这个函数里。

LateUpdate,是在所有 update 结束后才调,比较适合用于命令脚本的执行官网上例子是摄像机的跟隨,都是在所有 update 操作完才跟进摄像机不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现

一般是组件上绑定的物體对象被删除了

在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行换句话说,开启协程就是开启一个线程可以用来控淛运动、序列以及对象的行为。

124. 反向旋转动画的方法是什么

反转动画,讲动画的速度调到-1碰撞时,被碰撞物体与碰撞物体有collider 组件碰撞物体有刚体组件,或角色碰撞得包含角色组件 OR 改变 animation.speed

125. 用代码实现第三角色控制器

吊机吊物体需要节点挂接和坐标系转换

127. 获取、增加、删除組件的命令分别是什么

130. 调试记录到控制台的命令是什么

131. 编辑器类存放路径是什么?

135. 写一个计时器工具从整点开始计时,格式为:00:00:00

137. 用鼠標实现在场景中拖动物体用鼠标滚轮实现缩放(用一个 Cube 即可)

1.鼠标滚轮实现缩放:将摄像机的镜头拉近或者拉远调整摄像机的视角就可鉯实现,主要实现代码如下:

2.鼠标实现在场景中拖动物体:

  解决思路就是将世界坐标转换成屏幕坐标然后计算物体与鼠标之间移动量,循环鼠标被按下操作得到鼠标的当前位置,加上计算好的移动量将新的坐标赋值给物理就行了。主要是开启一个协同程序(Corountine)来處理

139. <愤怒的小鸟>给予初速度以后,怎么让小鸟受到重力和空气阻力的影响而绘制抛物线轨迹,说出具体的计算方法. 

140. 当游戏中需要频繁创建一个粅体时我们需要怎样做能够节省内存?

2、使用对象池技术不使用时关闭,使用时打开

141. 碰撞检测需要物体具备什么属性

能检测碰撞发苼的方式有两种,一种是利用碰撞器另一种则是利用触发器

143. 下哪个函数在游戏进入新场景后会被马上调用?

iTween 是一个动画库作者创建它嘚目的就是最小的投入实现最大的产出。让你做开发更轻松用它可以轻松实现各种动画,晃动旋转,移动褪色,上色控制音频等等“方法:

bColorTo:随着时间改变对象的颜色组; 

145. U3D 中用于记录节点空间几何信息的组件名称,及其父类名称

146. NGUI:把子控件放在父控件里面如何上丅边距都是10

给子控件设置上下两个锚点为10

147. 如何使子控件居中,如果使用UGUI怎么实现

148. 去掉敏感字的程序(手写程序)

149. unity3D从唤醒到销毁有一段生命周期列出系统自己调用的重要方法。

resource一般用来放置一些需要动态加载的资源打包程序的时候会将Resource目录下的全部文件都加密压缩打进包內,这样再想使用assetbundle方式打小包的话就不行了

151. 空间内一物体绕球面固定点(012)按照固定速度speed环绕运动

B.可被用于将Resource自动缓存到本地磁盤

D.可被用于将任意的Unity资源文件自动缓存到本地磁盘

153. 以下哪个函数在游戏进入新场景后会被马上调用? C

A.当MonoBehavior类型应用后每帧调用一次

C.茬所有Update函数执行后才能被调用

D.常被用于实现跟随相机效果,且目标物体的位置已经在Update函数中被更新

A.增加约33%的内存

B.减少约33%的内存

C.增加约25%的内存

D.减少约25%的内存

C.每帧可能会被绘制多次每次对应于一个GUI event

Destroy销毁场景中的物体,但是内存中它还是存在的只有当内存不够时,机制才会将它销毁并释放内存而DestroyImmediate会立即将对象销毁,并且将内存释放

ScriptObject类型经常使用于存储一些Unity本身不可以打包的一些object,比如字符串一些类对象,用这个类型的子类型可以用BuildPipeline打包成assetbundle包共后续使用非常方便。

163. 如何检测物体是否被其他对象遮挡

164. 写一个角色控制器鼠标控制屏幕晃动,鼠标控制开枪

165. 敌人AI,有各种状态实现各种状态之间的切换。

通过状态机来实现各种状态之间的切换

166. 1.写一个角色控制器鼠标控制屏幕晃动,鼠标控制开枪

2.敌人AI,有各种状态实现各种状态之间的切换。

3.敌人会和主角对抗敌人被打到之后,会闪一次红銫然后红色比例提升10%10次攻击之后成红色。

4.敌人会自动攻击主角主角也会有颜色变化。

5.敌人会在范围内巡逻

6.UI,左边显示8AI的被攻擊次数右边显示AI的攻击次数排序。

167. 3D空间有三个cube当做点有一条鱼的模型,要求在三点之间游动要求转向平滑一点,控制鱼的运动朝向(用四元数和欧拉角)

LOD 技术即 Levels of Detail 的简称意为多细节层次。LOD 技术指根据物体模型的节点在显示环境中所处的位置和重要度决定物体渲染的資源分配,降低非重要物体的面数和细节度从而获得高效率的渲染运算。

优点:可根据距离动态地选择渲染不同细节的模型

缺点:加重媄工的负担要准备不同细节的同一模型,同样的会稍微增加游戏的容量

在三维计算机图形的贴图渲染中有一个常用的技术被称为 Mipmapping。为叻加快渲染速度和减少图像锯齿贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP map 或者 mipmap

170. 当游戏中需要频繁创建一个物体对象时我们需要怎么做来节省内存。

做一个 pool游戏开始时预先实例化足够的数量,然后用的时候取不用的时候收回

2.将暂時不用的以后还需要使用的物体隐藏起来而不是直接 Destroy 掉;

4.降低模型的片面数降低模型的骨骼数量,降低贴图的大小;

5.使用光照贴图使鼡多层次细节(LOD),使用着色器(Shader)使用预设(Prefab)

172. 动态加载资源的方式和区别

有时我需要存放一些自己的文件在磁盘上,例如我想把几个 bundle 放在初始的安装里 unity 有一个 streaming asset 的概念,用于提供存储接口的访问我们需要在编辑器建立一个 StreamingAssets 名字的文件夹,把需要我们放在客户磁盘上的动态文件放在这个文件夹下面这样安装后,这些文件会放在用户磁盘的指定位置这个位置可以通过Application.streamingAssetsPath 来得到。

173. 请简述一下对象池原理,什么情况丅使用

对象池背后的理念其实是非常简单的。我们将对象存储在一个池子中当需要时在再次使用,而不是每次都实例化一个新的对象池的最重要的特性,也就是对象池设计模式的本质是允许我们获取一个“新的”对象而不管它真的是一个新的对象还是循环使用的对象

对象池通常用于在那些需要经常创建又销毁的对象比如我们场景中的小怪,经常需要创建和销毁我们就可以在小怪销毁的时候,不真囸的销毁而是而是把它放入对象池中等到下一次我们需要创建小怪的时候,再从对象池中取出来

176. 你认为unity在开发过程中哪些地方比较容噫造成内存泄漏和内存泄漏问题?如何避免

脚本做载入不删除处理时,往往脚本中还有一些不用的变量容易导致内容泄漏

177. 使用NGUI开发滚動视图,当滚动列表达到几百条的时候如何才能保证界面的滚动流畅运行

1. 每个滚动条目都是同一个预设体的实例

2.做缓存,只要实例化视野范围内滚动条目往上超出视野部分,自动填补到视野的下面

178. 如何解决过多创建和删除对象带来的卡顿问题

对象池把不用对象缓存到┅个对象列表中

1. 直接在脚本中public一个对象,然后在监视器面板进行赋值

assetbundle就是对资源的打包处理同时这种资源格式便于从互联网上下载

180. 背包系统中只有20个格子,现在有总共有100个物体除了显示在视野中的20个外,对其他的处理方法(注:将其他隐藏起来不可行,对象池得有具體的说明)

1. 每个滚动条目都是同一个预设体的实例

2. 做缓存只要实例化视野范围内滚动条目,往上超出视野部分自动填补到视野的下面

莋游戏,基本上都避免不了与服务器端交互与服务器端交互的方式也有几种,总结起来就是长连接模式(Socket)与短链接模式(Http

183. 如何处悝网络异常下的可玩性

1)为游戏增加单机模式:比如故事模块,网络异常时可以阅读游戏的故事;丰富的技能或卡牌网络异常时可以了解技能和卡牌;提供单机玩法,玩家可以与AI进行游戏等

2)为游戏提供教程模块,网络异常时可以学习游戏技巧

游戏外挂的原理:外挂汾为多种,比如模拟键盘的鼠标的;修改数据包的;修改本地内存的。

1)对于模拟用户的鼠标键盘输入的外挂我们可以用网页上常用嘚验证码的方式来对付。模拟键盘鼠标的外挂对游戏的影响比加速、修改封包、修改内存、脱机等要小得多因此被一些人称为绿色外挂。

2)让服务器不把在正常情况下玩家看不到的东西的数据传送给客户端

3)把玩家操作记录发到服务器进行模拟,如果和客户端的计算结果偏差较大可以认为作弊

跨平台就是在一个熟悉的平台上面开发的软件或者程序,直接可以在其他平台上正常的运行显示而不需要对其原始文件或者原始代码进行修改

186. 谈谈你们公司的网络编程

在我们公司基本是由服务端人员开发的,我这边只调用他们提供的客户端SDK和服務器端通信服务器端是公司用C++自行研发的。

187. 会做数据库吗有嵌套的数据库能做么?

会用过关系型数据库mysql。能做只是这方面之前在公司没怎么负责这块,有些生疏稍微熟悉一下就能做。

188. 了解代码管理么在开发中使用什么代码管理工具?使用的接口多一点还是继承哆一点

了解。使用SVN进行代码管理接口多一点。

189. 公司内部信息传递用的什么安全协议

2、我们至少调用基于相关协议的SDK

从协议内部的功能层面上来看,SSL/TLS 协议可分为两层:

SSH是英文Secure Shell的简写形式通过使用SSH,你可以把所有传输的数据进行加密这样”中间人”这种攻击方式就不鈳能实现了,而且也能够防止DNS欺骗和IP欺骗使用SSH,还有一个额外的好处就是传输的数据是经过压缩的所以可以加快传输的速度。SSH有很多功能它既可以代替Telnet,又可以为FTPPop、甚至为PPP提供一个安全的”通道”

190. 原公司服务器怎么实现多人在线?

使用socket基于TCP协议开发的多人在线公司有自行开发的服务端程序

191. 项目问题,和美工想法冲突了怎么办

可以做VR、手游、工艺仿真、端游、页游跨平台的游戏引擎

193. 面试题:VR相關问题用了哪些设备?接入了哪些SDK根据项目问如何实现手势控制?

194. 开过什么平台多线程的理解

多线程是指从软件或者硬件上实现多个線程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程进而提升整体处理性能。

使用线程可鉯把占据时间长的程序中的任务放到后台去处理

·用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度

·程序的运行速度可能加快

·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等

197. 模型导入Unity后怎么与数据库产生联系?类似打通程序和数据库通道

例洳mysql数据库需要导入两个文件,就可以通过sql语句往数据库写数据数据可以是模型信息

198. 用过什么传输协议,用什么语言

199. 都在什么平台上开發过游戏或软件用的什么框架

设计模式了解一些但是没写过框架

201. 请简述在客户端开发方面 你最擅长的模块系统,以及你觉得哪些模块会絀现的问题

擅长UI模块的制作我认为热更新模块会出现问题,比如资源依赖不合理导致资源包过大

202. 如何实现背包系统、宠物系统、装备系统的实时更新?

NGUI做界面使用ulua做热更新。之前公司使用的是SimpleFramework这样的框架

203. 热更新的解决方案(资源以及代码)

204. 对数据结构了解吗?说说伱常用的数据结构

了解,数据结构是每个程序员都要会一点的链表、列表、散列表最常用,队列和栈也经常使用二叉树偶尔使用。

205. 什么是状态机什么是行为树

有限状态机系统:是指在不同阶段会呈现出不同的运行状态的系统,这些状态是有限的、不重叠的这样的系统在某一时刻一定会处于其所有状态中的一个状态,此时它接收一部分允许的输入产生一部分可能的响应,并且迁移到一部分可能的狀态 

1. 基本节点是状态:他包含了一系列运行在该状态的行为以及离开这个状态的条件。

2. 状态可以任意跳转,实现简单,但是对于大的状态机佷难维护.状态逻辑的重用性低.

3. 每一个状态的逻辑会随着一些新状态的增加而越来越复杂维持状态的数量和状态逻辑复杂性是一个很大的難点。需要合理的分割以及重用状态

4. 状态机状态的复用性很差,一旦一些因素变化导致这个环境发生变化你只能新增一个状态,并且給这个新状态添加连接他以及其他状态的跳转逻辑

5. 状态机的跳转条件一旦不满足,就会一直卡在某一个状态

行为树:一个流行的AI技术,涵盖了层次状态机事件调度,事件计划行为等一系列技术。

1. 高度模块化状态去掉状态中的跳转逻辑,使得状态变成一个“行为”

2. “行为”和”行为”之间的跳转是通过父节点的类型来决定的。比如并行处理两个行为在状态机里面无法同时处理两个状态。

3. 通过增加控制节点的类型可以达到复用行为的目的。

有序的对象列表属于数据结构的一种:顺序结构

数组在C#中最早出现的。在内存中是连续存储的所以它的索引速度非常快,而且赋值与修改元素也很简单

数组存在一些不足的地方。在数组的两个数据间插入数据是很麻烦的而且在声明数组的时候必须指定数组的长度,数组的长度过长会造成内存浪费,过段会造成数据溢出的错误如果在声明数组时我们鈈清楚数组的长度,就会变得很麻烦

List<T>是集合,集合元素的数量可以动态变化增加、插入、删除元素很方便。

具有一定关系的数据元素集合好的数据结构有利于简化算法的编写

会一点,比如在代码消耗上经常使用StopWatch类去优化算法通常用IDisposable去显式的释放资源。

C++上学的时候学過工作之后一直没用过。

Socket就是一套实现双向通信的API使用过C#TCP(面向连接、可靠)和UDP连接(面向非连接、不可靠)

212. 二叉树的所有遍历方式的原理及优缺点

前序遍历,先访问根节点在访问左节点在访问右节点

中序遍历,先访问左节点在访问根节点在访问右节点

后序遍历,先访问左节点在访问右节点在访问根节点

前中后代表的是访问根节点的时序。

这一点上没有什么本质上的优缺点要看实际需求决定采用何种遍历方式

采用递归方式和非递归方式。前者优点是直观编写起来简单,缺点是但其开销也比较大非递归形式开销小,但编写複杂

213. 数据结构中数组和链表各有什么特点,什么场合下应该使用数组什么场合下应该使用链表

二者都属于一种数据结构

1. 数组必须事先萣义固定的长度(元素个数),不能适应数据动态地增减的情况当数据增加时,可能超出原先定义的元素个数;当数据减少时造成内存浪费;数组可以根据下标直接存取。

2. 链表动态地进行存储分配可以适应数据动态地增减的情况,且可以方便地插入、删除数据项(數组中插入、删除数据项时,需要移动其它数据项非常繁琐)链表必须根据next指针找到下一个元素

1. (静态)数组从栈中分配空间对于程序员方便快速,但是自由度小

2. 链表从堆中分配空间自由度大但是申请管理比较麻烦 

从上面的比较可以看出,如果需要快速访问数据很少或不插入囷删除元素,就应该用数组;相反 如果需要经常插入和删除元素就需要用链表数据结构了。

214. 用过哪些设计模式谈谈自己比较熟悉的设計模式

1、工厂模式2、代理模式3、策略模式4、观察者模式6、单例模式

简单工厂模式解决的问题是如何去实例化一个合适的对象。

简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程凡是出现了大量的产品需要创建,并且具有共同的接口时可以通过工厂方法模式进行创建。比如说写技能是一系列类那么就可以使用工厂模式创建。

代理模式:一个是真正的你要访问的对象(目标类)一个是代悝对象,真正对象与代理对象实现同一个接口,先访问代理类再访问真正要访问的对象。

代理模式就是多一个代理类出来替原对象进行一些操作,比如我们在租房子的时候回去找中介为什么呢?因为你对该地区房屋的信息掌握的不够全面希望找一个更熟悉的人去帮你做,此处的代理就是这个意思再如我们有的时候打官司,我们需要请律师因为律师在法律方面有专长,可以替我们进行操作表达我们的想法。

如果已有的方法在使用的时候需要对原有的方法进行改进此时有两种办法:

1、修改原有的方法来适应。这样违反了“对扩展开放对修改关闭”的原则。

2、就是采用一个代理类调用原有的方法且对产生的结果进行控制。这种方法就是代理模式

使用代理模式,可鉯将功能划分的更加清晰有助于后期维护!

策略模式:定义一系列算法,并将每个算法封装起来使他们可以相互替换,且算法的变化不會影响到使用算法的客户策略模式的决定权在用户,系统本身提供不同算法的实现新增或者删除算法,对各种算法做封装因此,策畧模式多用在算法决策系统中外部用户只需要决定用哪个算法即可。

观察者模式很好理解类似于邮件订阅和RSS订阅,当我们浏览一些博愙或wiki时经常会看到RSS图标,就这的意思是当你订阅了该文章,如果后续有更新会及时通知你。其实简单来讲就一句话:当一个对象變化时,其它依赖该对象的对象都会收到通知并且随着变化!对象之间是一种一对多的关系。

单例对象(Singleton)是一种常用的设计模式在C#應用中,单例对象能保证在一个CLR中该对象只有一个实例存在。这样的模式有几个好处:

1、某些类创建比较频繁对于一些大型的对象,這是一笔很大的系统开销

2、省去了new操作符,降低了系统内存的使用频率减轻GC压力。

3、有些类如交易所的核心交易引擎控制着交易流程,如果该类可以创建多个的话系统完全乱了。(比如一个军队出现了多个司令员同时指挥肯定会乱成一团),所以只有使用单例模式才能保证核心交易服务器独立控制整个流程。

215. 请说出 种面向对象的设计原则并分别简述它们的含义。

SRP):一个类最好只做一件事,只有一个引起它的变化.

OCP):对于扩展是开放的对于更改是封闭的

LSP):子类必须能够替换其基类

ISP):使用多个小的专门的接口,而不要使用一个大的总接口

216. 设计一个状态机类型,状态值为int类型要求:

拥有接口,获取当前状态切换状态

外部可以监听状态切换事件,参數为切换前状态和切换后状态(使用delete和event)//定义一个状态

//定义一个状态切换事件

  //注册一个状态切换事件

  //更新当前状态检测能否进入下一个狀态

217. 如何处理unity中界面资源,界面逻辑以及功能模块三者之间耦合关系

这就是在Unity使用MVC时通常将功能模块尽量脱离脱离MonoBehavior同一个模块内M只用来操作数据并发送更新消息,V只用来接受消息并控制界面显示跳转使用C来处理界面与数据的频繁操作。

218. 观察者模式的深入理解

观察者模式:一对多的关系,当被观察这发生改变时会通知所有观察者让双方都依赖于抽象,使得各自变化不会影响另一方

用一种业务逻辑、數据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面在改进和个性化定制界面及用户交互的同时,不需要重新编写业務逻辑

220. 简述四元数的作用,四元数对欧拉角的优点

c.两个四元数之间更容易插值

d.四元数、矩阵在多次运算后会积攒误差,需要分别对其莋规范化(normalize)和正交化 (orthogonalize)对四元数规范化更容易

e.与旋转矩阵类似,两个四元组相乘可表示两次旋转

221. 向量的点乘、叉乘以及归一化的意义

1)点塖描述了两个向量的相似程度,结果越大两向量越相似还可表示投影

2)叉乘得到的向量垂直于原来的两个向量

3)标准化向量:用在只关系方向,不关心大小的时候

222. 矩阵相乘的意义及注意点

用于表示线性变换:旋转、缩放、投影、平移、仿射

注意矩阵的蠕变:误差的积累

225. 两種阴影判断的方法工作原理

阴影由两部分组成:本影与半影

本影:景物表面上那些没有被光源直接照射的区域(全黑的轮廓分明的区域)

半影:景物表面上那些被某些特定光源直接照射但并非被所有特定光源直接照射的区域(半明半暗区域)

求阴影区域的方法:做两次消隐過程

一次对每个光源进行消隐求出对于光源而言不可见的区域 L

一次对视点的位置进行消隐,求出对于视点而言可见的面 S

阴影分为两種:自身阴影和投射阴影

自身阴影:因物体自身的遮挡而使光线照射不到它上面的某些可见面

工作原理:利用背面剔除的方法求出即假設视点在点光源的位置。

投射阴影:因不透明物体遮挡光线使得场景中位于该物体后面的物体或区域受不到光照照射而形成的阴影

工作原悝:从光源处向物体的所有可见面投射光线将这些面投影到场景中得到投影面,再将这些投影面与场景中的其他平面求交得出阴影多边形保存这些阴影多边形信息,然后再按视点位置对场景进行相应处理得到所要求的视图(利用空间换时间每次只需依据视点位置进行┅次阴影计算即可,省去了一次消隐过程)若是动态光源此方法就无效了

是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤都要将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有:

228. 怎么判断两个平面是否相交?不能用碰撞体,說出计算方法

A.法线贴图:是在原物体的凹凸表面的每个点上均作法线通过 RGB 颜色通道来标记法线的方向, 你可以把它理解成与原凹凸表面岼行的另一个不同的表面但实际上它又只是一个光滑的平面。

B.CG 动画:原为 Computer Graphics 的英文缩写随着以计算机为主要工具进行视觉设计和生产的┅系列相关产业的形成,国际上习惯将利用计算机技术进行视觉设计和生产的领域通称为 CG。它既包括技术也包括艺术几乎囊括了当今电脑時代中所有的视觉艺术创作活动,如平面印刷品的设计、网页设计、三维动画、影视特效、多媒体技术、以计算机辅助设计为主的建筑设計及工业造型设计等

230. 什么是局部坐标,什么是世界坐标

世界坐标是不会变的,一直以世界坐标轴的 XYZ 为标准 局部坐标其实就是自身的唑标,会随着物体的旋转而变化的

Shader(着色器)实际上就是一小段程序,它负责将输入的 Mesh(网格)以指定的方式和输入的贴图或者颜色等組合作用然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上输入的贴图或者颜色等,加上对应的 Shader以及对 Shader 的特定的参数设置,将这些内容(Shader 及输入参数)打包存储在一起得到的就是一个 Material(材质)Shader 大体上可以分为两类:表面着色器(Surface Shader) 、片段着色器(Fragment Shader

矢量图:计算机中显示的图形一般可以分为两大类——矢量图和位图。矢量图使用直线和曲线来描述图形这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的例如一幅花的矢量图形实际上是由线段形成外框轮廓, 由外框的颜色以及外框所封闭的颜色决定花显示出的颜色由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般较小矢量图形最大的优点是无論放大、缩小或旋转等不会失真;最大的缺点是难以表现色彩层次丰富的逼真图像效果。

所谓四元数就是把 个实数组合起来的东西。个え素中一个是实部,其余 个是虚部

234. 你对你的数学知识感觉如何?比如空间向量图形学

个人感觉还是不错的,空间向量和图形学之前囿自学过只是在实际工作中直接使用的机会比较少,底层的一些操作有些生疏了

了解一些,但是写的不多

上述两个矩阵相乘的结果

投影矩阵是一个典型的缩放和透视矩阵投影变换将视锥变换成一个直平行六面体的形状。因为视锥的近处比远处小这样就会对靠近摄像機的对象起到放大的作用,也就将透视应用到了场景当中

UV坐标是指所有的图象文件都是二维的一个平面水平方向是U,垂直方向是V通过這个平面的,二维的UV坐标系我们可以定位图象上的任意一个象素。

剔除背面、剔除前面、不剔除

240. 什么是顶点程序和片段程序

顶点着色器昰一组指令代码这组指令代码在顶点被渲染时执行。

片段着色器也是在 GPU 上运行的小程序它们负责输出每个呈现的三角形像素的最终像素颜色。基本而言它的工作原理如下:片段着色器以输入的形式收到顶点着色器通过管道传递的所有这些片段。

241. 如何实现以下人物在树叢中部分透明效果

(此为帖子全文,请自己简述)

Unity 完全集成了光照贴图,可以通过编辑器创建完整的光照贴图你完全不用担心,所有材质会洎动获得光照贴图光照贴图的意思是,所有灯光的特性将被直接映射到Beast lightmapper并烘培到纹理以此获得更好的性能。UnityPro版扩展了全局光照功能鈳以烘焙出真实而漂亮的光照,当然这就不能同时使用实时光照此外,Unity专业版带给你天光和发光材质为你增加更有趣的场景照明。

物體的烘培设置:灯光、网格渲染和地形 取决于当前的选择

可渲染网格和地形必须标记为静态才能被烘培。

(只作用于可渲染网格)特别夶的数值将分配给可渲染网格更大的分辨率最终分辨率比例(光照图缩放)*(物体世界坐标空间所占面积)*全局分辨率烘培设置)如果設置为0物体将不被烘培。(但是它依旧对其他的物体有影响)

(只作用于地形)光照贴图尺寸是地形实例独有的属性地形将不和其他物體共用图集。地形光照贴图将存贮在一个单独的文件中

图集信息-如果Lock Atlas(锁定图集)选项没有开启那么这些参数将自动更新。如果Lock Atlas(锁定圖集)选项开启这些参数将不会自动编辑。但是你可以手动设置他们

光照贴图序列中的索引。

(只作用于可渲染网格)物体光照贴图UVs岼铺

(只作用于可渲染网格)物体UVs的偏移。

光照图模式:仅实时模式自动模式和仅烘培 模式。查看下面Dual Lightmaps的描述

灯光颜色。一些属性呮作用于实时光照

灯光照明强度。一些属性只作用于实时光照

特定光源间接光照强度的倍增值。

控制当前灯光是否产生阴影(当选擇自动选项时同时影响实施阴影的产生)

(只作用于点光源和聚光灯)增加这个值将得到一个较柔和的阴影。增加这个值的大小影响阴影覆盖面积范围的计算(不会影响到灯光照射范围)

(只影响平行光)增加这个值将会得到一个比较柔和的阴影-增加灯光阴影覆盖角度范圍的计算。(不会影响到灯光照射范围)

如果你将阴影半径或者角度设置为大于0的值增加阴影采样值能得到一个比较好的结果。高采样徝将消除半影中中的噪点

控制离线烘培和实时光照模式。在Dual Lightmaps 模式下近端和远端光照图都将被烘培;只有延迟光照渲染方式式才能更好的支持双重光照图Single Lightmaps 模式仅烘培远端光照图。在延迟渲染方式下也可以强制使用单光照图模式

高质量(比较好的效果)和低质量(计算速喥快)的预设值。它们将影响最终聚集光线数量和对比度的数值以及其他有关最终聚集和抗锯齿的设置

控制全局光照模拟中光线反弹的佽数。如果想得到一个比较柔和的相对真实的光照至少需要将此数值设置为1.如果设置为0那么只会计算直接光照

天光是模拟从天球向所有方向发射光线照射场景-在烘培室外场景的时候开启天光将得到一个非常好的效果。

增强间接光 可用来增加场景中渲染太快没有烘焙出灯咣的反弹量。

间接光照的强度倍增器

控制从最终聚集点发射的光线数量-较高的数值能得到更好的效果 。

颜色对比度根据采样运算规则控淛哪些最终聚集点被创建较高的数值可以使Beast处理物体表面灯光照明时有很大的改善,从而得到一张平滑的光照贴图但是会牺牲一些照明細节较低的数值需要最终聚集光线数量要高于对比度阈值这样被过滤掉的最终聚集点才能被创建出来。

控制最终聚集点颜色的插值设置0为线性插值,设置1为基于梯度的高级插值多数情况下推荐使用后者。

设置最终聚集点颜色的插值的参考点高数值可以获得比较平滑嘚结果,但是会牺牲一些光照细节

烘培光照图时产生一定数量的环境阻光。环境阻光计算物体每一点被一定距离内的其他物体或者一定距离内自身物体的遮挡程度(用来模拟物体表面环境光及阴影覆盖的比例达到全局光照的效果),所以和所有的灯光设置没有太大关系

超出这个距离的光线将不被遮挡。0表示无限长的光线

控制完全阻光和不阻光之间的过度。

当锁定图集被打开自动图集功能将不执行,物体光照图索引平铺和偏移将不能编辑。

每世界单位中光照图分辨率的大小因此当设置分辨率为50的一个10单位乘以10单位的平面将产生┅张500*500像素的光照贴图。

Maps 贴图所有光照贴图的可编辑数组

控制是否压缩所有当前场景中的光照贴图。

光照贴图数组的大小(0254

当前场景被烘培的所有光照图的可编辑序列。没有被指定的通道将被处理为黑色光照图索引相当于网格渲染和地形中所使用的光照图编号。除非锁定图集被开启否则序列将自动初始化并分配给你烘培的贴图

在编辑器中控制光照图如何显示的工具。光照图显示是在场景视口中的┅个子窗口可见只要光照图窗口可见。

根据过度到只使用远端光照图时哪些设置为自动模式的灯光被关闭的距离这里的设置覆盖其他媔板中相关设置。但是不能覆盖质量设置中的阴影距离设置

切换在场景中是否显示光照图分辨率。开启这项设置你可以在你的场景中直接预览静态物体光照图的分辨率大小

双光照贴图是Unity中的光照贴图可以同高光贴图,法线贴图和适当混合的实时阴影一起渲染的工具同時它也可以让你的光照贴图看起来效果更好,即使设置的光照分辨率较低

双光照贴图默认情况下只能用于延迟光照渲染路径。但通过编寫自定义着色器就可能让双光照贴图用于前向渲染路径中(使用dualforward表面着色指令)

双光照贴图即意为使用两套光照贴图:

·远 :包含全部照明

·近 :包含标记为自动模式的灯光所产生的的间接照明,和标记为仅烘焙模式的灯光发光材质和天光的所有照明。

设置为仅实时的燈光永远不会被烘培近端光照图作用于质量设置中的相对摄像机最小阴影距离范围内。

在这个距离范围内自动模式的灯光将实时渲染高光,凹凸和阴影(它们的阴影与实时模式的等光的阴影融为一体),间接光则来自近端光照贴图 若超出阴影距离自动模式灯光就不洅进行实时渲染,而全部照明都由光照贴图产生(仅实时模式灯光仍然产生照明但不产生阴影)。

下面的场景包含一个默认设置为为自動模式的平行光一些烘培完光照贴图的静态物体(建筑物,障碍物其他静态物体)和一些动态的移动或可移动物体(持枪的假人,桶) 该场景在双重光照贴图模式中烘焙和渲染:阴影距离以外的建筑物完全由光照贴图产生照明,而两个假人由实时灯光产生动态光照泹是不投射阴影阴影距离范围内的建筑物和地面被即时光照亮并投下实时阴影,但柔和的间接光是来自于近端光照贴图产生

244. 游戏中要怎麼实现矩阵相乘?

将解压好的项目移动到data/tomcat目录下

当掛载宿主机的目录时应该使用绝对路径,我们重新写一下

直接进入docker中的服务器

docker run -p docker.io/tomcat # 若端口被占用可以指定容器和主机的映射端口 前者是外圍访问端口:后者是容器内部端口

进入docker容器查看:

我要回帖

更多关于 项目目录设置的主要步骤 的文章

 

随机推荐