1.什么是渲染管道?

是指在显示器上为了显示出图像而经过的一系列必要操作。

渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。

主要步骤有:

本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。

2.如何优化内存?

有很多种方式,例如

A、压缩自带类库;

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

C、释放AssetBundle占用的资源;AssetBundle资源包

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

E、使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。

3.动态加载资源的方式?(有时候也问区别,具体请百度)

1.通过Resources模块,调用它的load函数:可以直接load并返回某个类型的Object,前提是要把这个资源放在Resource命名的文件夹下,Unity不关有没有场景引用,都会将其全部打入到安装包中。Resources.Load();

2.通过bundle的形式:即将资源打成 asset bundle 放在服务器或本地磁盘,然后使用WWW模块get 下来,然后从这个bundle中load某个object。AssetBundle

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.你用过哪些插件?

一 界面制作 推荐:NGUI

二 2D游戏制作 推荐:2D Toolkit   //[ˈtu:lkɪt] 工具包,工具箱

三 可视化编程 推荐:PlayMaker

四 插值插件 推荐:iTween,HOTween

五 路径搜寻 推荐:Simple Path

六 美术及动画制作 推荐:RageSpline,Smooth Moves

七 画面增强    推荐:Bitmap2Material,Strumpy Shader Editor

八 摄像机管理  推荐:Security Camera

九 资源包  推荐:Nature Pack

十、造路插件EasyRoads3D

 

====================================================

====================================================

 

 

1.使用unity3d实现2d游戏,有几种方式?

1.使用本身的GUI;

2.把摄像机的Projection(投影)值调为Orthographic(正交投影),不考虑z轴;

//[ˌɔ:θə'ɡræfɪk] adj. 正字法的,拼字正确的;正射

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,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。

{ [hɪndʒ] n. 铰链,折叶;关键,转折点;枢要,中枢}

8.物体自身旋转使用的函数?

Transform.Rotate()

9.物体围绕某点旋转使用的函数?

Transform.RotateAround()

10.Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数

PlayerPrefs.SetInt()     PlayerPrefs.GetInt()

11.Unity3d提供了几种光源类型,分别是哪几种?

四种。

平行光:Directional Light 点光源:Point Light

聚光灯:Spot Light 区域光源:Area Light

12.Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。

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.请描述游戏动画有哪几种,以及其原理?

主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。

a.关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一 个整体的动画,角色比较灵活,Quake2中使用这种动画;

b.骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观;

c.单一网格模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。

21.请描述为什么Unity3d中会发生在组件上出现数据丢失的情况

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

22.alpha blend工作原理

Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。

23.写出光照计算中的diffuse的计算公式

计算公式为: Idiffuse = Dintensity*Dcolor*N.L ; (Dintensity表示漫反射强度, Dcolor 表示漫反射光颜色, N 为该点的法向量, L 为光源向量 其中N与L点乘,如果结果小于等于0,则漫反射为0。)

diffuse = Kd x colorLight x max(N*L,0);Kd 漫反射系数、colorLight 光的颜色、N 单位法线向量、L 由点指向光源的单位向量、其中N与L点乘,如果结果小于等于0,则漫反射为0。

24.Lod是什么,优缺点是什么?

LOD(Level of detail)多层次细节,是最常用的游戏优化技术。它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

25.两种阴影判断的方法、工作原理。

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

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

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

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

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

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

shadow area= L ∩ S

B.阴影分为两种:自身阴影和投射阴影

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

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

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

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

若是动态光源此方法就无效了。

26.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几个过程。

27..MipMap是什么,作用?

MipMapping:在三维计算机图形的贴图渲染中有常用的技术,为加快渲染进度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为MipMap。

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

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

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

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

30.获取、增加、删除组件的命令分别是什么?

获取:GetComponent 增加:AddComponent  删除:Destroy

31.Animation.CrossFade命令作用是:(C) 

A.动画放大 B.动画转换 C.动画的淡入为其他动画

32.Application.loadLevel命令为:(A)

A加载关卡 B.异步加载关卡 C.加载动作

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

Debug.Log();

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

工程目录下的Assets/Editor文件夹下。

35.使用原生GUI创建一个可以拖动的窗口命令是什么?

GUI.DragWindow();

36.localPosition与Position的使用区别?

localPosition:自身位置,相对于父级的变换的位置。

Position:在世界坐标transform的位置

37.意义连线

Mathf.Round 插值

Mathf.Clamp 四舍五入

Mathf.Lerp 限制

38..写出Animation的五个方法

AddClip 添加剪辑、Blend 混合、Play 播放、Stop 停止、Sample 采样

39.怎么拿到一个对象上脚本的方法

GameObject.GetComponent<>();

40.请简述向量的点乘,向量的叉乘以及向量归一化的几何意义?

点乘的几何意义是:计算两个向量之间的夹角,以及在某一方向上的投影;

叉乘的几何意义是:创建垂直于平面,三角形,或者多边形的向量;

http://blog.sina.com.cn/s/blog_9283b6f601017hfw.html

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

支持:如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine.{ [kəru:'ti:n] n. 协同程序}

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

42.Unity3D中的协程(Coroutine)和C#线程之间的区别是什么?

Unity3d没有多线程的概念,不过unity也给我们提供了StartCoroutine(协同程序)和LoadLevelAsync(异步加载关卡)后台加载场景的方法。 StartCoroutine为什么叫协同程序呢,所谓协同,就是当你在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间不影响主程序的继续执行,可以协同工作。而LoadLevelAsync则允许你在后台加载新资源和场景,所以再利用协同,你就可以前台用loading条或动画提示玩家游戏未卡死,同时后台协同处理加载的事宜asynchronous[eɪˈsɪŋkrənəs].synchronous同步

43..请简述四元数的作用以及四元数相对于欧拉角的优点

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.与旋转矩阵类似,两个四元组相乘可表示两次旋转

44.请简述OnBecameVisible及OnBecameInvisible的发生时机,以及他们执行的意义?

当renderer(渲染器)在任何相机上都不可见时调用:OnBecameInvisible

当renderer(渲染器)在任何相机上可见时调用:OnBecameVisible

45.动画层(Animation Layers)的作用是什么?

动画层作为一个具有层级动画编辑概念的工具,可以用来制作和处理任何类型的动画

46.请说出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):使用多个小的专门的接口,而不要使用一个大的总接口。

47.Material和Physic Material区别?

PhysicMaterial 物理材质:物理材质描述,如何处理物体碰撞(摩擦,弹性)。

Material材质(材质类)为了获得一个对象使用的材质,可以使用 Renderer.materia属性:

48..法线贴图 、CG动画

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

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

NGUI(NUGUI1、NGUI2)

49、NGUI Button怎样接受用户点击并调用函数,具体方法名称是什么

a、直接监听事件

把下面脚本直接绑定在按钮上,当按钮点击时就可以监听到,这种方法不太好很不灵活

1

void OnClick()

2

{

3

  Debug.Log("Button is Click!!!");

4

}

b、SendMessage

选择Button-Component-NGUI-Interaction-Button Message//一起活动;合作;互相影响;互动

c、UIListener(推荐)

选择Button-Component-NGUI-Internal-Event Listener

调用方法:

01

using UnityEngine;

02

using System.Collections;

03

04

public class BtnNUGUI : MonoBehaviour {

05

06

07

void Awake()

08

{

09

GameObject button = GameObject.Find("UI Root (2D)/Camera/Anchor/Panel/Button");

10

UIEventListener.Get(button).onClick = ButtonClick;

11

}

12

13

void ButtonClick(GameObject button)

14

{

15

Debug.Log("NGUI button name :"+button.name);

16

}

17

// Use this for initialization

18

void Start () {

19

20

}

21

22

// Update is called once per frame

23

void Update () {

24

25

}

26

}

50、请描述游戏动画有哪几种,以及其原理。

  主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。 a、关节动画把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活Quake2([kweɪk]vi.发抖,颤抖;)中使用了这种动画;b、 单一网络模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。 c、骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,由关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观。皮肤网格每一个顶点都会受到骨骼的影响,从而实现完美的动画

51、下面哪种做法可以打开Unity的Asset Store

Windows -> Asset Store

52、Mecanim系统中,Body Mask的作用是?

  指定身体的某一部分是否参与渲染

53、以下哪种操作步骤可以打开Unity编辑器的Lightmapping视图?

Windows --> Lightmapping

54、关于光照贴图

A:使用光照贴图比使用实时光源渲染要快 B:可以降低游戏内存消耗 C、多个物体可以使用同一张光照贴图

55、关于Vector3的API,以下说法正确的是?

Vector3.forward与Vector3(0,0,1)是一样的意思;

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

MonoBehaviour.OnLevelWasLoaded

57、 什么是导航网格( NavMesh)?

  一种用于实现自动寻路的网格

58、什么是局部坐标,什么是世界坐标?

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

59、itween插件的作用是什么,itween作用于世界坐标还是局部坐标,请列举出3个其常用方法?

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

  方法:a、MoveTo  物体移动 ;b、ColorTo:随着时间改变对象的颜色组; c、LookTo:随时间旋转物体让其脸部朝向所提供的Vector3或Transform位置

60、请简述NGUI中Panel和Anchor的作用

Anchor包含UIAnchor脚本。UIAnchor的功能是把对象锚定在屏幕的边缘(左上,左中,左下,上,中,下,右上,右中,右下),或缩放物体使其匹配屏幕的尺寸

Panel对象有UIPanel脚本,UIPanel是一个容器,它将包含所有UI小部件,并负责将所包含的部件组合优化,以减少绘制命令的调用。

61、Unity摄像机有几种工作方式,分别是什么?

62、LayerMask.NameToLayer()这个方法有什么作用?

LayerMask的使用是按位操作的,LayerMask.NameToLayer("Players") 返回该Layer的编号。

 63、请描述MeshRender中material和shader的区别?

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

Shader大体上可以分为两类:表面着色器(Surface Shader) 、片段着色器(Fragment Shader)

 64、什么是矢量图

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

65、Unity 连接数据库

  需要得到Mono.Data.Sqlite.dll 文件与System.Data.dll文件

66、四元组是什么?

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

67.如果进来的是玩家,立即销毁!

void OnTriggerEnter(Collider other) {

if (other.gameObject.CompareTag("Player"))

Destroy(other.gameObject);

}

68.发送消息。打印damage的值=5

void ApplyDamage(float damage) {

print(damage);

}

public void Awake() {

gameObject.BroadcastMessage("ApplyDamage", 5.0F);

}

69.销毁同一标签的物体

public GameObject[] ShuZu = GameObject.FindGameObjectsWithTag("Tag");

public void Awake() {

foreach (GameObject A in ShuZu) {

// 销毁代码

}

}

 

70. 挂在你想要监测的NGUI上,但是那个NGUI必须要有触发器,触发器要足够大

void OnHover(bool isOver)
        {
                if(enabled)
                {
                        if(isOver)
                        {
                                // 触发了停留事件
                                Debug.Log("讨厌啦!求别摸!");
                        }
                        else
                        {
                                Debug.Log("别走嘛!");
                        }
                }
        }挂在你想要监测的NGUI上,但是那个NGUI必须要有触发器,触发器要足够大

简述一下Prefab的用处?

在游戏运行时实例化,prefab相当于一个模板,对你已经有的素材、脚本、参数做一个默认的配置,以便于以后的修改,同事prefab打包的内容简化了导出的操作,便于团队的交流。

10.简述一下对象池,你觉得在FPS游戏里哪些东西适合使用对象池?

对象池就存放需要被反复调用资源的一个空间,比如游戏中要常被大量复制的对象,子弹,敌人,以及任何重复出现的对象。

31.机试:二选一

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

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

2.实现吊机吊物体的功能
【吊机吊物体需要节点挂接和坐标系转换】

上机题:用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放(用一个Cube即可)。

1.NGUI屏幕自适应问题
  2.协程问题
  3.数据结构中的算法和排序
  4.图形学相关的问题
  5.解析JSON数据问题
  6.网络通信问题

1. 机枪兵在平时站立时,处于空闲 状态;

初始化状态机,并将空闲 状态作为初始状态放入状态机堆栈中;状态机堆栈:【空闲】

2. 机枪兵发现敌人,并且敌人在射程范围内,机枪兵开始攻击敌人;此时,机枪兵进入攻击 状态;

进入攻击 状态;状态机堆栈:【攻击】【空闲】

3. 敌人死亡,机枪兵停止攻击;此时,机枪兵回到空闲 状态;

退出当前状态;状态机堆栈:【空闲】

4. 此时玩家发出进攻命令,此进攻命令是用A键点了远处的一个地面 place1 ,也就是没有具体目标的进攻;此时,机枪兵进入 移动进攻 状态;

进入移动进攻 状态;状态机堆栈:【移动进攻】【空闲】

5. 在移动过程中,机枪兵发现了敌人,所以他要脱离原来的路径,走向发现的敌人;此时,机枪兵进入追击 状态;

进入追击 状态;状态机堆栈:【追击】【移动进攻】【空闲】

6. 机枪兵和敌人的距离小于了自己的射程之后,机枪兵停下来,并且攻击敌人;此时,机枪兵进入了攻击 状态;

切换到攻击 状态;状态机堆栈:【攻击】【移动进攻】【空闲】

7. 敌人死亡后,机枪兵重新寻路到place1,继续前进;此时机枪兵回到步骤4,回到了 移动进攻 状态。

退出当前状态;状态机堆栈:【移动攻击】【空闲】

1.[脚本] 关于Destroy问题

GameObject.Destroy():表示移除物体或物体上的组件,代表销毁该物体,实际上该物体的内存并没有立即释放,因为有延迟删除机制在。
DestroyImmediate 适用在自定义窗口里面,因为那个里面没有延迟删除机制。
下面参考:http://www.unitymanual.com/thread-9735-1-1.html
destroy是下一帧被销毁的
DestroyImmediate是这一帧就销毁了
Destroy本身是个延迟操作,默认是执行完这一帧多有操作后销毁,内存的回收是unity本身的设计不是及时回收.
因而用destoryImmediately还是destroy是看设计需求而不是统一用哪个

这里以作记录,方便查看。

2.如何在game视图中实现scene的overdraw效果

将材质球改成transparent 透明的 然后调整透明度就可以了alpha

3.[基本操作] unity操作android触屏移动代码

public Vector3 fristPos;//接触时的position

public Vector3 twoPos;//移动后的position

public float speet=1.0f;        //移动速度

void Update ()

{

float moveY = 0;// 上下移动的速度

float moveX = 0;//左右移动的速度

if(Input.GetTouch(0).phase==TouchPhase.Began)

{

//获取接触屏幕的坐标

fristPos=Input.GetTouch(0).position;

}

//判断移动

if(Input.GetTouch(0).phase==TouchPhase.Moved)

{

//获取在屏幕上移动后的坐标

twoPos=Input.GetTouch(0).position;

//判断向上移动,并且不出上方屏幕

if(fristPos.y

{

moveY +=speet*Time.deltaTime;

}

//判断向下移动,并且不出下边屏幕

if(fristPos.y>twoPos.y && Camera.main.WorldToScreenPoint(transform.position).y>0)

{

moveY -=speet*Time.deltaTime;

}

//判断向左移动,并且不出左边屏幕

if(fristPos.x>twoPos.x && Camera.main.WorldToScreenPoint(transform.position).x>0)

{

moveX -=speet*Time.deltaTime;

}

//判断向右移动,并且不出右边屏幕

if(fristPos.x

{

moveX += speet*2.0f*Time.deltaTime;

}

//改变物体坐标

transform.Translate(moveX,moveY,0);

Unity高频面试题总结相关推荐

  1. 高频面试题:Spring 如何解决循环依赖?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 在关于Spring的面试中,我们经常会被问到一个问题:Spring ...

  2. Java 晋升必会的 70 道 「Spring 全家桶」高频面试题

    对于那些想面试高级 Java 岗位的同学来说,除了算法属于比较「天方夜谭」的题目外,剩下针对实际工作的题目就属于真正的本事了,热门技术的细节和难点成为了面试时主要考察的内容. 这里说「天方夜谭」并不是 ...

  3. python高频面试题_2019下半年金九银十Python高频面试题(第四弹)

    第四弹来了,Python高频面试题总结! 一. 将字符串 "k:1 |k1:2|k2:3|k3:4",处理成字典 {k:1,k1:2, str1 = "k:1|k1:2| ...

  4. window服务器cpu过高的排查_高频面试题:Java程序占用 CPU 过高怎么排查

    这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的. 线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因? 这就是 ...

  5. 【网络协议】专题总结以及网络协议高频面试题汇总(8篇)

    这是一份超详细的HTTP协议攻略,内容大纲如下: 内容如下(点击即可跳转): 一篇文章带你详解 HTTP 协议(上) 一篇文章带你详解 HTTP 协议之报文首部及字段详解(中) 一篇文章带你详解 HT ...

  6. java 关注公众号没有调接口_高频面试题:接口和抽象类的区别

    作为一个基础的Java高频面试题,是所有Java面试者必须烂熟于心的.当然不能死记硬背,可以通过实际地写几个小demo,边实际操作边理解,既能感受到编程的快乐,更重要的是真的理解记住了二者的区别. 此 ...

  7. android activity生命周期_Android岗高频面试题合一集,看你能答出几题?

    前言 面试季黄金时期来袭,想必许多朋友在这时有找工作.换工作.跳槽涨薪等想法,但你们都有一个相同的过程那就是面试.大家肯定想知道面试时都问哪些面试相关问题,所以就去网上查找题去刷题,为了省去大家找题的 ...

  8. 面试突击 | 彻底搞定 JVM 这几道高频面试题

    前言 Java 相比 C/C++ 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收),它解决了 C/C++ 最令人头疼的内存管理问题,让程序员专注于程序本身,不用关心内存回收这 ...

  9. 专栏丨MySQL 高频面试题解析

    推荐墨天轮专栏<MySQL 高频面试题解析>,共8篇文章,前4篇由墨天轮用户 无为 完成,后4篇由墨天轮用户 马听 完成,文稿互相审核.总结了两位作者在这些年自己或者朋友遇到过的高频面试题 ...

最新文章

  1. android错误整理——模拟器无法连接网络
  2. 无人出租今起免费坐,只恨不是长沙人
  3. Jquery中替换节点的方法replaceWith()和replaceAll()
  4. “这块布的艺术成分都几高唧!”“有几高啊?”“三、四层楼那么高啦。”...
  5. apache多站点配置+多端口配置
  6. 教师排课程序设计c语言,计算中心
  7. Eclipse下Java项目转web项目
  8. Linux不重启Tomcat清空catalina.out日志的几种方法
  9. 读取浏览器cookies的python脚本
  10. 【带权并查集题目汇总】
  11. 计算机命令提示符的使用,命令提示符(电脑系统命令提示符的打开方法)
  12. chrome open axure 自动跳转到axure插件
  13. 树莓派安装中文拼音输入法和五笔输入法
  14. 计算机表格斜杠怎么打,如何在excel表格中绘制斜线并上下打字
  15. vue+element_ui纯前端下载csv文件
  16. 计算机毕业设计android的消防安全知识宣传app(源码+系统+mysql数据库+Lw文档)
  17. C语言编程>第二十一周 ⑥ 请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中。
  18. unity3D 音频播放
  19. 网络服务器 用到的技术
  20. Vue移动端----页面旋转进入特效功能实现

热门文章

  1. 两个坚持是什么_什么运动减肚子脂肪效果最好?坚持这两个运动,“燃烧”腹部脂肪...
  2. 银行核心业务系统全盘西化成功与否都是警钟
  3. WEB前端网页设计-Bootstrap 按钮下拉菜单
  4. 解决linux上的Give root password for maintenance问题
  5. 基于物联网的环境调节系统(ESP32-C3+Onenet+微信小程序)
  6. 汇总阿里云GPU云服务器常见问题解答FAQ
  7. 移动硬盘,如何分区使得Mac和Win同时使用?
  8. cookie获取和钓鱼攻击演示
  9. JS修改this指向:call、apply和bind函数
  10. Ubuntu虚拟机中VCS安装和启动过程中遇到的问题总结