前言
上个月陆续给大家更新了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 游戏里面如何监听触摸事件?
3
D
里面我们使用舞台来进行事件监听,
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(“资源路径”,