##前言
上个月陆续给大家更新了cocos和unity的面试题,相信读者朋友们看了之后多多少少也有了一些收获,在之前的分享中,有部分读者粉丝一直私信阿博,让我分享一些金九银十服务器和Laya的面试题,让大家都能赶着去面试。

所以,今天阿博就来给大家分享关于Laya的面试题了!!!

啥?今天阿博怎么这么直接,不墨迹了

这不还在国庆放假,大家还在休息嘛! 咱们就化繁为简,直接点,进入正题不好吗?

那么接下来就请各位读者朋友好好看、好好学咯!!!
请仔细查阅~

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

####问题1: LayaBox 的发展经历了哪些阶段?

LayaBox 1.x出来的时候主要是解决了FLASH网页游戏转成H5页游,转手游。将Flash的AS转成H5的代码,然后在跑自己的内核来驱动H5的代码。后来随着Flash没落,H5兴起,LayaBox发展成性能最好的次世代H5游戏引擎,后来也支持了手游。

LayaBox2.x阶段进一步优化了3D游戏引擎,并支持了微信小游戏,抖音小游戏,QQ小游戏等。开发语言同时支持了JavaScript/TypeScript/ActionScript

LayaBox 下一个阶段目标主要有两个,第一个是进一步完善LayaAir的引擎,让他成为最好用的游戏引擎之一,同时推出了LayaME,做UGC。

####问题2: LayaBox 做3D H5 小游戏到底怎么样?

LayaBox做的3D微信小游戏在小游戏市场份额中占90%以上, 是非常成熟的H5小游戏开发引擎,同时也可以打包发布到Native平台。

####问题3: Laya与Unity 之间到底是如何配合的呢?

Laya 有自己的引擎内核,有自己的开发工具,同时他也巧妙的用了Unity的编辑器,他是如何来做的呢?Laya 引擎内核是独立的,纯代码开发完整的游戏引擎,同时游戏引擎也要提供工具,2D编辑器,是Laya自己提供的,3D编辑器Laya没有自己做而是用了Unity来编辑场景,然后再工具把Unity编辑的场景和角色预制体转成Laya可以使用的格式,这样3D引擎和3D资源就可以用市场比较成熟的Unity,好用,很多资源可以共用,而且市场很多U3D开发的3D游戏,Laya这样做能将这些游戏转成H5的小游戏。

####问题4: Laya 到底使用J avaScript 开发好还是使用T ypeScript 开发好?

JavaScript是弱类型编程语言,开发比较灵活,TypeScript对类型的要求比较严格,从灵活性来说Js更灵活,但是灵活的同时,等项目带了不好维护,所以很多公司慢慢的倾向于选择强类型的TypeScript来开发。TypeScript底层运行是是JS,所以建议先学习JS再学习TS

####问题5: Laya 如何使用图集?

Laya 在做UI的时候,没有图集的概念,直接用单个小图片,UI制作完成以后,Laya会根据文件夹为我们把一个文件夹内的图片自动生成一个图集,如果文件过大,这个文件默认不会打包到图集,一般的图片默认是生成到图集的,如果你想这个图片不生成到图集,可以指定这个图片的类型为不打包。图集的使用能提升绘制性能,节约DrawCall。

####问题6: Laya 3D 摄像机有哪些模式?

Laya里面摄像机有两种模式,一种是透视摄像机,一种是正交摄像机,这两种摄像机决定了两种不同的投影成像的方式。如下图:

正交摄像机直接投影到屏幕成像

####问题7: Laya 3D 物体结果与U nity 有什么区别?

Laya 的3D物体与Unity还是有区别的,Unity是GameObject + [Transform, MeshRender等组件], 而Laya里面是MeshSprite3D包含了MeshRenderer, 并且继承自Sprite3D,Sprite3D里面包含了数据成员transform。所以和Unity的纯组件开发有一些不一样。

####问题8: Laya.Scrip 与L aya.Script3D 有什么区别?

Laya 里面有两个代码组件类,一个是Laya.Script, 一个是Laya.Script3D,这两个有什么区别呢?记住一条,2D节点上只能挂Laya.Script, 3D节点上只能挂Laya.Script3D。

####问题9: Laya UI 里面如何换图片?

Laya Image里面有个skin指向的是图片的路径的字符串,当我们要换图片的时候,只需要将Image的数据成员skin,设置为图片的路径,如果要加载网络图片,也只需要将skin设置成http的一个网络地址。

####问题10: Laya 组件化开发的固定入口?

Laya写脚本的代码的时候是组件化开发,和Unity类似,接口也和Unity相似,不过前面加了一个on, 如下:

onAwake:组件实例加载的时候调用。

onStart: 组件实例在第一次update之前调用

onUpdate: 组件实例在每次画面刷新的时候调用

onFixedUpdate(): 组件实例以固定的时间间隔调用。

onDestroy(): 组件实例删除的时候调用。

接口很多与Unity类似,所以Unity开发人员很快就能上手Laya。

####问题11: Laya 如何做第三方资源部署

开发微信抖音小游戏的时候,如果包体超过了大小我们需要把资源部署到第三方的服务器上,Laya为我们提供了第三方部署的方法,只需要设置资源的urlRoot就可以了。

####问题12: Lay a 如何裁剪引擎的体积?

打开游戏场景,按住F9, 弹出项目设置对话框。你可以对你用到的库来进行设置,不用的就不要勾选上这样能减少游戏引擎的体积。如图:

####问题13: Laya 如何播放粒子特效?

粒子特效的节点为Laya. ShuriKenParticle3D,我们通过场景的节点查找函数获取到粒子节点,获取粒子节点后,里面有个数据成员particleSystem就是粒子的播放的控制,我们只要调用: ((节点 as Laya.ShuriKenParticle3D).particleSystem).play()。

####问题14: 3D 游戏里面如何监听触摸事件

3D里面我们使用舞台来进行事件监听,Laya.stage.on(Laya.Event.MOUSE_DOWN, this, this.onTouchStart);Laya.stage.on(Laya.Event.MOUSE_UP, this, this.onTouchEnd);Laya.stage.on(Laya.Event.MOUSE_MOVE, this, this.onTouchMove);

####问题15: 微信小游戏如何监听进入后台与回到游戏事件?

if (Laya.Browser.onWeiXin) {wx.onShow(this.onEnterFrount.bind(this));wx.onHide(this.onEnterBackGround.bind(this));}

####问题16: Laya 如何加载Unity 导出的3D 游戏场景?

Laya.Scene3D.load(“资源路径”, Laya.Handler.create(this, function (scene3d) {// 加载完成的回调}));

####问题17: Laya 如何加载Unity*导出的预制体?

Laya.Sprite3D.load(“资源路径”, Laya.Handler.create(this, function (sprite3d) {// 加载成功的回调}));

####问题18: 如何正确的使用U nity 来辅助开发Laya 项目?

Laya的3D编辑器是Unity, 这里要注意几个问题,而且非常重要。

1: 注意一定要使用laya for unity插件指定的Unity版本,这个真的很重要,很多问题都有可能是它引起的,比如场景性能很差等。

2: 一定要按照laya的支持规范来使用相关的操作,比如Laya兼容组件,Laya兼容的Shader。

####问题19: Laya 如何切换材质?

r = ("节点" as Laya.MeshSprite3D).meshRenderer;r.material = 材质对象;

####问题20: Laya 如何播放背景音乐?

Laya.SoundManager.playMusic(soundPath, 次数, Laya.Handler.create(this, this.onSoundPlayEnd));

####问题21: Laya 的项目目录结构有哪些?

bin: 存放运行时候的代码库,资源等,运行时候的数据所在的目录,非常重要。

laya: 2D UI 场景视图,资源所在的文件夹,专门用来做2D编辑的。

libs: 游戏引擎所在的库的目录,当前项目使用的Laya引擎代码库所在目录。

release: 打包发布到各个平台的发布路径。

src: 代码所在的路径

laya文件: Laya工程项目文件。

tsconfig.json: ts代码相关的一些设置。

####问题22: Laya 如何升级引擎?

这里有一个误区,大家都以为只要重新安装了LayaAir的IDE,用新的IDE打开了老的项目就已经升级成功了引擎版本。其实并没有升级引擎版本,还需要把新引擎的库拷贝到项目,如菜单所示:文件-》项目-》类库管理, 选择版本,点击”应用”即可

####问题23: Laya 如何正确的做资源管理和使用资源?

Laya资源加载都是基于异步的,如果是H5游戏,有些资源可能要从服务器下载下来,再加载到内存,所以这个”时间段”会导致黑屏(无内容)与闪烁,所以使用Laya的资源的时候最好做好资源管理的预加载机制,你后面要使用什么资源先预加载进来,这样就可以避免黑屏与内容闪烁,避免由于资源加载照程的卡顿。

####问题24: Laya如何监听物理碰撞?

Laya物理引擎的碰撞检测其实非常简单,只需要在物理刚体所在的节点添加脚本,在脚本里面重载下面的接口即可检测到物理碰撞

####问题25:Laya 物理引擎支持哪些碰撞器?

SphereColliderShape 球体碰撞器
BoxColliderShape 盒型碰撞器
CapsuleColliderShape胶囊碰撞器
CylinderColliderShape圆柱碰撞器
ConeColliderShape圆锥碰撞器
MeshColliderShape网格碰撞器

####问题26: Laya*使用Unity导出天空盒要注意哪些事项?

1:导出的天空盒cubeMap 需要勾选 Readable选项

2:导出的天空盒材质必须使用LayaAir下的天空盒材质

####问题27: Laya 拖尾的参数有哪些?

Time 拖尾生存时长

minVertexDistance 最小拖尾片段距离

width 拖尾宽度设置(可以为宽度曲线)

Color 采用 colorGradient 方式设置,有两个可选模式

Fixed 固定模式

Blend 混合模式

texture Mode 纹理模式,与普通纹理模式相同。

Stretch 可沿着轨迹的整个长度应用纹理贴图

Tile 使纹理沿着轨迹的长度平铺

alignment 轨迹准线

ALIGNMENT_VIEW 可以使轨迹面向摄像机

ALIGNMENT_TRANSFORM_Z 根据轨迹的变换组件的方向对齐

####问题28: Laya如何使用静态合批?

Laya使用静态合批非常的简单,在Unity中对需要使用静态合并的模型勾选 Static 静态选项导出即可。如图所示:

####问题29: Laya里面动态合批的原则

Laya里面动态合批,是自动完成的不需要开发人员做相关操作,动态合批分为两种,实例合并与顶点合并,他们的条件要求如下:

实例合并:

​ 需要同Mesh和同材质双条件满足。在三维场景中同Mesh同材质的模型还是可能大量存在的,在这时实例合并有不小的发挥空间。

顶点合并:

​ 需要同材质且模型顶点小于10个。顶点合并目前在一些假阴影和特效模型上有发挥空间。

注意:半透明的物体需要连续渲染才能动态合并,所以半透明物体的动态合并几率低。

####问题30: LayaIDE如何清理缓存?

开发者在使用IDE的时候,有时候会报出一些错误,有的时候直接忽略即可。有的时候,需要重启IDE才可以解决。也有的时候重启也解决不了。这个时候。我们建议开发者先清理缓存来解决。因为大多数情况都是缓存的问题导致。

在IDE导航的帮助菜单里有一个选项叫“打开编辑器本地缓存”,如图所示。通过点击这里,可跳转到缓存的资源目录。

缓存目录打开后,如图2所示。如果是布局问题,可以直接删除layout目录。如果也不清楚什么问题。所有看到的目录和文件都删干净也没关系。

####问题31: Laya 3D物体显示有锯齿怎么办?**

由于3D抗锯齿默认是开启的,但有的开发者发现锯齿感还是很明显,如果是采用了2.2或更高版本的引擎,那就需要检查是否使用了HDR和后期处理。

webGL 1.0不支持renderTarget有抗锯齿,使用相机HDR和后期处理管线的BloomEffect泛光效果就会引起抗锯齿无效。解决办法就是不要使用这两块功能,后期处理一般来说,开发者用的不多。

HDR是要特别注意的,在Unity里导出资源时,不要勾选HDR相关选项。如果不小心勾了,不想重新导出的。也可以在项目代码里强制HDR效果。示例代码如下:

this.camera = new Laya.Camera(0, 0.1, 100);this.camera.enableHDR = false; //关闭HDR

####问题32: Laya如何可能一个3D物体?
我们经常需要在游戏里面大量复制同一个物体,那么如何clone一个物体呢?Laya提供了接口来clone, Laya.Sprite3D.instantiate(物体)。

##最后
今天的Laya面试习题就给大家分享到这里了,欢迎读者朋友们在评论区留言,今天的内容到此结束!

当然还有,今天的面试集锦大礼包已经分享出来啦~ 有需要获取的读者朋友,欢迎来后台私信阿博:面试 就可以获取了哦

那么,下篇再会,敬请期待!

2020,Laya最新中高级面试灵魂32问,你都知道吗?相关推荐

  1. TCP 协议面试灵魂 12 问 | 强势整理

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | urlify.cn/rqumIn 先亮出这篇文 ...

  2. TCP协议面试灵魂10问 | 强势整理

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 来源 | urlify.cn/rqumIn 先亮出这篇文章的思维导 ...

  3. TCP 协议面试灵魂10问,建议收藏~

    Proc 先亮出这篇文章的思维导图 TCP 作为传输层的协议,是一个软件工程师素养的体现,也是面试中经常被问到的知识点.在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各位. 001. 能不能 ...

  4. TCP 协议面试灵魂 12 问(二)

    007: 能不能说说TCP报文中时间戳的作用? timestamp是 TCP 报文首部的一个可选项,一共占 10 个字节,格式如下: kind(1 字节) + length(1 字节) + info( ...

  5. 全网第一 | Flink学习面试灵魂40问答案,文末有福利!

    大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 来源:王知无 作者:王知无 By 暴走大数据 场景描述:这是一份Flink学习面试指北.看看你搞清楚 ...

  6. 大数据/数仓面试灵魂30问

    1.什么是数据仓库?如何构建数据仓库?(如果这个问题回答的好,后面很多问题都不需要再问) 2.如何建设数据中台?可简单说下理解与思路 3.数据仓库.数据中台.数据湖的理解 4.传统数仓的程度(建模工具 ...

  7. 大数据/数仓面试灵魂30问(转)

    1.什么是数据仓库?如何构建数据仓库?(如果这个问题回答的好,后面很多问题都不需要再问) 2.如何建设数据中台?可简单说下理解与思路 3.数据仓库.数据中台.数据湖的理解 4.传统数仓的程度(建模工具 ...

  8. JAVA面试灵魂108问(二十六)---JVM2

      大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...

  9. 易语言tcp多线程服务端客户端_太详细了,TCP协议面试灵魂10问,建议收藏!

    推荐阅读: 阿里P9架构师120分钟带你掌握线程池,不在为线程而烦恼​www.bilibili.com 不懂算法怎么去字节等大厂面试?左程云大神联合马士兵大佬120分钟带你掌握算法底层​www.bil ...

最新文章

  1. install vim plugin local file offline
  2. ios 静态库合成_iOS链接原理解析与应用实践
  3. geany配置python_Linux系统下搭建基于Geany+Python开发环境
  4. 工厂模式、策略者模式、责任链模式综合应用
  5. Maven学习教程(六)
  6. 《树莓派Python编程入门与实战》——3.5 关于Python交互式shell
  7. python小程序代码50 到100行-Python代码不到四十行简单暴力,微信跳一跳小程序轻松过万...
  8. java解决跨域问题
  9. WordPress数据库管理中五个实用的phpMyAdmin技巧
  10. 开机连接WiFi显示无Internet连接但能上网且弹出“MSN中国”网页
  11. java代码实现CGCS2000大地坐标系XY值转化为对应经纬度
  12. 什么是SRE?一文详解SRE运维体系
  13. 银河麒麟4.0.2安装
  14. laravel中faker的方法总结
  15. 胡闹厨房2 for Mac厨房模拟游戏又名煮糊了2
  16. Teamspeak3集成要注意的问题
  17. 高洛峰ajax分页源码,PHP 分页类 高洛峰 细说PHP
  18. Game Hacking Fundamentals 学习笔记1
  19. HINSTANCE/HWND/CWnd/HANDLE 的区别
  20. 目前所有ewebeditor版本***的漏洞与问题总结

热门文章

  1. 八股文--MySql
  2. 指静脉代码学习---5.ROI感兴趣区域提取/图像分割
  3. enscape使用gpu_如何评价Enscape实时渲染器?
  4. PMI-ACP练习题(20)
  5. typora 有道云笔记_有道云笔记会员版
  6. ASIC/SoC设计
  7. 《写给企业家的经济学》读书笔记 - Part 10
  8. Cypress CY7C65634-28LTXCT 数据通信IC USB 2.0 Hub
  9. 【matplotlib】 移动平均(Moving Average)
  10. Hibernate Note