
技术知识掌握情况。
1请简述值类型与引用类型的区别
2C#中所有引用类型的基类是什么
3请简述ArrayList和List<Int>的主要区别
4请简述GC(垃圾回收)产生的原因,并描述如何避免?
5请描述Interface与抽象类之间的不同
6下列代码在运行中会产生几个临时对象?
7下列代码在运行中会发生什么问题?如何避免?
8请简述关键字Sealed用在类声明和函数声明时的作用
9请简述private,public,protected,internal的区别
10反射的实现原理?
11 Net与Mono的关系?
12简述unity3d支持的作为脚本的语言的名称
13Unity3D是否支持写成多线程程序?如果支持的话需要注意什么?
14Unity3D的协程和C#线程之间的区别是什么?
15U3D中用于记录节点空间几何信息的组件名称,及其父类名称
16简述四元数的作用,四元数对欧拉角的优点?
17向量的点乘、叉乘以及归一化的意义?
18矩阵相乘的意义及注意点
19为何大家都在移动设备上寻求U3D原生GUI的替代方案
20请简述如何在不同分辨率下保持UI的一致性
21为什么dynamic font在unicode环境下优于static font
22Render的作用?描述MeshRender和SkinnedMeshRender的关系与不同
23简述SkinnedMesh的实现原理
24在场景中放置多个Camera并同时处于活动状态会发生什么?
25Prefab的作用?如何在移动环境的设备下恰当地使用它?
26如何销毁一个UnityEngineObject及其子类
27为什么Unity3D中会发生在组件上出现数据丢失的情况?
28如何安全的在不同工程间安全地迁移asset数据?三种方法
29MeshCollider和其他Collider的一个主要不同点?
30当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况?如何避免?
31OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生?
32请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调函数的意义?
33Unity3D如何获知场景中需要加载的数据?
34MeshRender中material和sharedmaterial的区别?
根本区别:进程是 *** 作系统资源分配的基本单位,而线程是任务调度和执行的基本单位
在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
所处环境:在 *** 作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
协同程序的
我写个例子给你
void Start()
{
StartCoroutine(WaitEnd (5f)); // 瞬间执行 WaitEnd函数 ,和下面的函数
StartCoroutine (WaitFrameEnd());// 瞬间执行 WaitFrameEnd函数 ,和下面的函数 StartCoroutine (WaitFixedUpdate());// 瞬间执行 WaitFixedUpdate函数 ,和下面的函数
}
IEnumerator WaitEnd(float time)
{ // 执行同时,其他函数也再并行
yield return new WaitForSeconds(time);
// 5秒后到这里 ,执行这里的
DebugLog ("WaitForSeconds:"+time);
}
IEnumerator WaitFrameEnd()
{
yield return new WaitForEndOfFrame();
// 等待当前帧结束
DebugLog ("WaitForEndOfFrame:"+Timetime);
}
IEnumerator WaitFixedUpdate()
{
yield return new WaitForFixedUpdate();
// 等待每次 Update 执行一次后调用
DebugLog ("WaitForFixedUpdate:"+Timetime);
}
这个能把问题说具体点吗???MonoBehaviourOnMouseEnter 当鼠标进入时候调用的函数 C# JavaScript using UnityEngine;using SystemCollections;public class example : MonoBehaviour { void OnMouseEnter() { renderermaterialcolor = Colorred; }}// Attach this script to a mesh to make// it red when the mouse is over the mesh// 附加这个脚本到网格// 当鼠标经过网格时网格变红色function OnMouseEnter () { renderermaterialcolor = Colorred ;}This function is not called on objects that belong to Ignore Raycast layer
OnMouseEnter can be a co-routine, simply use the yield statement in the function This event is sent to all scripts attached to the Collider or GUIElement
这个函数不会在属于Ignore Raycast的层上调用
它可以被作为协同程序,在函数体内使用yield语句这个事件将发送到所有附在Collider或GUIElement的脚本上
协同程序
协同程序——在主程序运行的同时开启另一段逻辑处理,来协同当前程序的执行,开启协同程序就是开启一个线程。
协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈,自己的局部变量,有自己的指令指针(IP,instructionpointer),但与其它协同程序共享全局变量等很多信息。
线程和协同程序的主要不同在于:在多处理器情况下,从概念上来讲多线程程序同时运行多个线程;
而协同程序是通过协作来完成,在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只在必要时才会被挂起。
开启协同程序
使用MonoBehaviorStartCoroutine可以开启一个协同程序,所以该方法需要在继承Monobehaviour的类中调用
Unity3D中,使用StartCoroutine(StringmethodName)和startCoroutine(IEnumeratorroutine)都可以开启一个线程,
a使用字符串作为参数可以开启线程并在线程结束之前终止线程,开启线程最多只能传递一个参数
b使用IEnumeraotor开启的的线程不能随时终止(除非使用StopAllCoroutines()方法)
没有参数个数的限制
终止协同程序
aUnity使用StopCoroutine(StringmethodName)来终止一个协同程序,使用StopAllCoroutine来终止所有协同程序,但是这两个方法都只能终止该MonoBehaviour中的协同程序
b将协同程序所在的gameObject的acitve属性设置为false,当再次设置active为true的时候,协同程序不会再开启,而设置enable和false则不会生效,因为协同程序开启后是以一个线程在运行的,它与MonoBehavior是互不干扰的模式在运行,此后除非代码调用,他们共同作用于同一个对象,只有当对象不可见的时候才能够同时终止这两个线程。
以上就是关于准备去找工作啦求问Unity面试什么比较重要全部的内容,包括:准备去找工作啦求问Unity面试什么比较重要、线程和进程的区别、在Unity中StartCoroutine/yield return这个模式到底是怎么应用的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)