1>.Unity3D中的协程(coroutine)和C#线程之间的区别是什么?
多线程程序同时运行多个线程,而在任一指定时刻只有一个协程在运行,并且这个证在运行的协同程序值在必要时才被挂起.除主线程之外的线程无法访问Unity3D的对象,组件,方法.
Unity3D没有多线程的概念,不过unity也给我们提供了StartCoroutine(协同程序)和LoadLevelAsync(异步加载关卡)后台加载场景的方法
StartCoroutine为什么叫协同? 程序呢,所谓协同,就是当你在StarCoroutine的函数体里处理一端代码时,利用yield语句等执行结果,这期间不影响主程序的继续执行,可以协同工作
2>.简述Unity3D支持的作为脚本的语言的名称
unity的脚本语言基于Mono的.Net平台上运行,可以使用.Net库,这也为XML,数据库,正则表达式等问题提供了很好的解决方案.unity里的脚本都会经过编译,他们的运行速度也很快,这三种语言实际上的功能和运行速度是一样的,区别主要体现在语言特性上.
JavaScript:和网页中常用的JavaScript不一样,它编译后的运行速度很快,语法方面也会有不少区别.
Boo:可以看做是Python语言的变种,又糅合了Ruby和C#的特性,它是静态类型语言
3>.Unity3D是否支持写成多线程程序?如果支持的话需要注意什么?
仅能从主线程中访问Unity3D的组件,对象和Unity3D系统调用
支持:如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine
注意:C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象