Unity面试题加强版

开通VIP,畅享免费电子书等14项超值服

首页

好书

留言交流

下载APP

联系客服

2024.12.13

(1)多线程程序同时运行多个线程,而在任一指定时刻只有一个协程在运行,并且这个正在运行的协同程序只在必要时才被挂起。

(2)除主线程之外的线程无法访问Unity3D的对象、组件、方法。

(3)Unity3d没有多线程的概念,不过unity也给我们提供了StartCoroutine(协同程序)和LoadLevelAsync(异步加载关卡)后台加载场景的方法。

(4)StartCoroutine为什么叫协同程序呢,所谓协同,就是当你在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间不影响主程序的继续执行,可以协同工作。而LoadLevelAsync则允许你在后台加载新资源和场景,所以再利用协同,你就可以前台用loading条或动画提示玩家游戏未卡死,同时后台协同处理加载的事宜

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

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

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

C#

Boo:可以看做是Python语言的变种,又糅合了Ruby和C#的特性,它是静态类型语言

仅能从主线程中访问Unity3D的组件,对象和Unity3D系统调用

Awake-》OnEnable-》Start

OnEnable在同一周期中可以反复地发生

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

Resource.Load

AssetBundle.Load

三个阶段,OnCollisionEnter/Stay/Exit函数

rigidbody.AddForce/AddForceAtPosition,都是rigidbody的成员函数

transform.Rotate

transform.RotateAround

PlayerPrefs.SetInt与PlayerPrefs.GetInt

Awake–>OnEnable–>Start–>Update–>FixedUpdate–>LateUpdate–>OnGUI–>Reset–>OnDisable–>OnDestroy

FixedUpdate,每固定帧绘制时执行一次,和update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。

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

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

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

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

publicclassPlayer:MonoBehaviour{

publicTransform_cameraTrans;

privateVector3_cameraOffset;

voidAwake(){

_cameraOffset=transform.position-_cameraTrans.position;

}

voidUpdate(){

_cameraTrans.position=transform.position-_cameraOffset;

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

获取:GetComponent

增加:AddComponent

删除:Destroy

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

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

Debug.Log();

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

GUI.DragWindow();

localPosition:自身位置,相对于父级的变换的位置。Position:在世界坐标transform的位置

Mathf.Round四舍五入

Mathf.Clamp限制

Mathf.Lerp插值

privatefloattimer=0f;

privateinth=0;

privateintm=0;

privateints=0;

privatestringtimeStr=string.Empty;

timer+=Time.deltaTime;

if(timer>=1f){s++;timer=0;}

if(s>=60){m++;s=0;}

if(m>=60){h++;m=0;}

if(h>=99){h=0;}

voidOnGUI(){

timeStr=string.Format("{0:D2}:{1:D2}:{2:D2}",h,m,s);

GUI.Label(newRect(10,10,100,200),timeStr);

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

在场景中添加一个Plan,Camera,DirectionalLight,Cube。添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上)。

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

//鼠标滚轮的效果

if(Input.GetAxis("MouseScrollWheel")<0){

if(Camera.main.fieldOfView<=100)

Camera.main.fieldOfView+=2;

if(Camera.main.orthographicSize<=20)

Camera.main.orthographicSize+=0.5F;

//Zoomin

if(Input.GetAxis("MouseScrollWheel")>0){

if(Camera.main.fieldOfView>2)

Camera.main.fieldOfView-=2;

if(Camera.main.orthographicSize>=1)

Camera.main.orthographicSize-=0.5F;

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

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

主要代码如下:

//Usethisforinitialization

voidStart(){

StartCoroutine(OnMouseDown());

IEnumeratorOnMouseDown(){

//将物体由世界坐标系转换为屏幕坐标系

Vector3screenSpace=Camera.main.WorldToScreenPoint(transform.position);

//完成两个步骤1.由于鼠标的坐标系是2维,需要转换成3维的世界坐标系

//2.只有3维坐标情况下才能来计算鼠标位置与物理的距离,offset即是距离

//将鼠标屏幕坐标转为三维坐标,再算出物体位置与鼠标之间的距离

Vector3offset=transform.position-Camera.main.ScreenToWorldPoint(newVector3(Input.mousePosition.x,Input.mousePosition.y,screenSpace.z));

while(Input.GetMouseButton(0)){

//得到现在鼠标的2维坐标系位置

Vector3curScreenSpace=newVector3(Input.mousePosition.x,Input.mousePosition.y,screenSpace.z);

//将当前鼠标的2维位置转换成3维位置,再加上鼠标的移动量

Vector3curPosition=Camera.main.ScreenToWorldPoint(curScreenSpace)+offset;

//curPosition就是物体应该的移动向量赋给transform的position属性

transform.position=curPosition;

yieldreturnnewWaitForFixedUpdate();//这个很重要,循环执行

1、主要是在UICamera脚本中用射线判断点击的物体并通过SendMessage调用OnClick()OnPress()等函数,可以说NGUI的按钮是通过发消息这个方式调用的。具体方法名称是OnClick()

2、voidAwake(){

//获取需要监听的按钮对象

GameObjectbutton=GameObject.Find("UIRoot/Button3");

//设置这个按钮的监听,指向本类的ButtonClick方法中。

UIEventListener.Get(button).onClick=OnButton3Click;

privatevoidOnButton3Click(GameObjectbutton){

Debug.Log("我是按钮3被点击了");

1、使用预制物体对象Prefab

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

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

【Physics.OverlapSphere相交球检测碰撞,碰撞检测需要包围盒】

MonoBehaviour.OnLevelWasLoaded

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

a、MoveTo物体移动;

Transform父类是Component

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

设置子控件锚点为中心

Strings="你是坏蛋";

s.Replace("坏蛋","**");

Awake()

OnEnable()

Start()

FixedUpdate()

OnTriggerXXX(Colliderother)

OnCollisionXXX(CollisioncollisionInfo)

Update()

LateUpdate()

OnGUI()

OnDisable()

OnDestroy()

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

publicfloatSpeed=1;

transform.RotateAround(newVector3(0,1,2),Vector3.up,Speed);

A.可被用于将TextAssets自动缓存到本地磁盘

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

C.可被用于将AssetsBundles自动缓存到本地磁盘

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

A:MonoBehaviour.OnSceneWasLoaded

B:MonoBehaviour.OnSceneEnter

C:MonoBehaviour.OnLevelWasLoaded

D:MonoBehaviour.OnLevelEnter

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

B.常被用于处理RigidBody的更新

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

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

A.GetComponent().DoSomething()

B.GetComponent

THE END
1.离线编程操作,优势应用与未来离线编程技术,离线编程操作,优势在数字化和智能化的时代,编程技术已经渗透到各个领域,无论是软件开发、机器人控制还是自动化生产等,都离不开编程的影子,离线编程操作作为一种新兴的编程方式,逐渐在各个领域中崭露头角,本文将详细介绍离线编程操作的概念、优势、应,天纯雾芯科技http://www.skypure.com.cn/post/35344.html
2.离线分析系统架构包括离线分析手段转载离线分析系统架构为企业提供了一种有效的数据分析方式,通过整合数据采集、存储、处理、分析和结果展示等模块,帮助决策者深入理解数据背后的价值。随着越来越多的企业意识到数据的重要性,离线分析手段的应用将持续增长。通过理解和实现这样的系统架构,企业不仅能提升数据处理能力,还能在竞争激烈的市场中抢占先机。因此,掌握https://blog.51cto.com/u_16213455/12851415
3.数据库数据迁移与同步方案深度探索天翼云开发者社区离线迁移:离线迁移通常在系统停机或业务低峰期进行,数据在迁移过程中无法被访问或修改。这种迁移方式简单直接,但会对业务连续性造成一定影响。 在线迁移:在线迁移允许在数据迁移过程中继续访问和修改数据。这通常通过增量迁移、双写等机制实现,以最小化对业务的影响。在线迁移技术复杂,但能够确保业务连续性。 https://www.ctyun.cn/developer/article/624406507151429
4.计算机考研:计算机网络五大考点解析腾讯云开发者社区计算机知识点多且难,一直是学生们头痛的科目之一,我们化繁为简,按照考研计算机专业大纲解析,特归纳出计算机网络五大核心考点以供同学们复习参考。 OSI参考模型的分层结构? OSI七层参考模型图如下: 最底层:物理层(PhysicalLayer)功能:数据物理传输 https://cloud.tencent.com/developer/article/2478828
5.办公自动化原理及应用自考复习串讲笔记(第八章)办公自动化原理及应用自考复习串讲笔记(第八章)的内容就介绍到这里,了解更多有关自考、成考等学历提升相关知识,同学们可以把本站()加入浏览器收藏夹。有任何学历提升相关疑问,也可以点此在线咨询!https://www.eol.cn/zikao/zk-wyw/20241218174436.html
6.关于AI网络的五个基本要点无论是作为聊天机器人,推荐系统还是在各个领域中实现流程自动化,比如无人驾驶、人脸识别;AI技术都有望提升并加速众多企业和公共设施的运营,甚至改变人们的生活方式。 然而,AI网络或算力网络作为一个概念,常常让人感到困惑且被误解,AI和算力需要网络么? https://m.elecfans.com/article/6393385.html
7.网专业的奥鹏在线离线作业答案辅导网河南开放大学24秋行政管理理论与实践专题讲座第一次作业练习答案第一次作业练习试卷总分:100 得分:1001.兴趣与职业相配是决定事业成败的唯一因素。2.管理自己情绪和处理人际关系的能力,叫情商,简称EQ。4.管理心理学的发展与西方工业心理学的http://www.youxue100f.com/qita/2024-12-14-17954.html
8.在线方式在线方式(on-line): 生产过程和计算机直接连接,并受计算机控制的方式称为在线方式或联机方式。定义 生产过程和计算机直接连接,并受计算机控制的方式称为在线方式或联机方式。性质 在线、离线通常是指某一功能或工作(如检测、控制、给定)是在系统运行之中进行,还是在系统运行之前(或之后)进行。系统实时性是指https://baike.baidu.com/item/%E5%9C%A8%E7%BA%BF%E6%96%B9%E5%BC%8F/16962834
9.360AI云盘官网360AI云盘是智能高效办公云盘。可以安全存储个人数据、实现多端同步、自动备份、在线编辑文档进行高效办公,可跨平台使用,支持PC电脑、Android手机、iPhone手机数据备份、同步,随时随地移动办公。https://www.yunpan.com/
10.游民星空国风席卷全球的当下 他们用开放世界的方式讲故事 11-14 和万达、苹果开启联动!《排球少年》手游更新玩得很大 11-07 硬闯科幻蓝海,他们的勇气或许比直面虫族需要的更多 10-30 《排球少年》手游公测定档10月25日! 10-14 游戏杂谈 用爱发电的赞助,让CNDOTA重现荣光? https://gamersky.com/
11.学堂在线学堂在线简述 学堂在线为学生提供线上学习支持,包括但不限于:(1)包括图文、视频、讨论、作业等学习单元的学习;(2)视频下载及离线观看;(3)公告区与讨论区师生、同学间互动;(4)线上考试。 网络行为准则 您同意对您使用本产品和您的用户发布内容承担责任。“用户发布内容”是指您和本产品的其他用户在本产品上提交https://www.xuetangx.com/app/protocol?cookie=1
12.菜鸟教程菜鸟教程(www.runoob.com)提供了编程的基础技术教程, 介绍了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识。 同时本站中也提供了大量的在线实例,通过实例,您可以更好的学习编程。..https://www.runoob.com/
13.首页智能云盘 QQ账号登录 微信账号登录 同意《微云服务协议》 《隐私政策》 下次自动登录 稳定可靠的储存任何文件 多端查看、下载分享文件 便捷的文件管理 多种格式文件在线预览 智能化的照片备份管理 照片智能备份,生活点滴不被遗落 与家人朋友共享美好时刻 在线办公全新体验 https://www.weiyun.com/
14.CSDN基于 Ray 的分布式编程、动态计算图、异构调度能力,通过封装单模型的分布式计算、统一模型间的数据切分,以及支持异步 RL 控制流,HybridFlow 能够高效地实现和执行各种 RL 算法,复用计算模块和支持不同的模型部署方式,大大提升了系统的灵活性和开发效率。然而,随着模型规模的不断扩大,RL 算法在大模型训练中面临着灵活https://www.csdn.net/
15.2024年非金属废料和碎屑项目资金筹措计划书.docx这将包括在线和离线广告宣传、参与非金属废料和碎屑行业展会、建立合作关系等多方面手段。我们将密切关注市场反馈,根据市场需求调整产品定位,并通过创新的市场活动提高品牌曝光度。 4.财务管理: 为确保项目的财务稳健,我们将建立健全的财务管理体系。这将包括预算控制、成本分析、财务报告等多个方面。通过财务数据的及时https://max.book118.com/html/2024/1213/6025035012011011.shtm
16.古河IBMS集成平台IBMS云服务平台与传统IBMS最大的不同是运行环境不同、组态方式不同、运行负载能力不同。 运行环境不同:传统的IBMS通常是基于微软平台,IBMS云服务平台是运行于云虚拟服务器PaaS上的。 组态方式不同:传统的IBMS通常是采用本机组态工具组态,IBMS云服务平台采用云端在线组态,实时发布组态页面。 运行负载能力不同:云服务https://www.ghibms.com/index.php?act=content&cid=52
17.Yourrequesthasbeenblocked.ThiscouldbeduetoseveralUnited States English Microsoft Homepage What's new Surface Laptop Studio 2 Surface Laptop Go 3 Surface Pro 9 Surface Laptop 5 Microsoft Copilot Copilot in Windows Microsoft 365 Windows 11 apps Microsoft Store Account profile Download Center https://outlook.live.com/