- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
UE4工程师面试题及参考答案
一、基础概念题
问:Actor和Component的核心区别是什么?实际开发中怎么选?
答:Actor能独立放在场景里(比如角色、箱子),有自己的Transform(位置/旋转/缩放);Component不能单独存在,必须挂在Actor上(比如Mesh组件、碰撞组件),依赖Actor的Transform。
实际选的时候:要做“场景里能直接放的实体”就用Actor(比如NPC、道具);要给Actor加功能/属性就用Component(比如给PlayerActor挂CharacterMovementComponent控制移动,挂SkeletalMeshComponent显示模型)。
问:蓝图里Editable和ExposeonSpawn两个变量属性,用法上有啥不一样?
答:Editable是在蓝图实例的Details面板里能改值,适合“实例化后还可能调整的参数”(比如不同敌人的血量,拖到场景里后在面板改);ExposeonSpawn是实例化Actor时必须传值(比如生成子弹时,要传“发射者是谁”“伤害值多少”),实例化后就改不了了,适合“创建时就得定死的参数”。
问:UE4的碰撞通道(CollisionChannel)分哪几类?举个实际配置例子
答:分三类:ObjectChannel(物体通道,比如ECC_Pawn、ECC_Vehicle)、TraceChannel(追踪通道,比如ECC_Visibility、ECC_Collision)、VisibilityChannel(可见性通道)。
例子:做“玩家射线检测捡道具”时,TraceChannel选ECC_Visibility,然后在道具的碰撞设置里,把“Visibility”通道设为“阻挡”,这样射线能检测到道具;同时把玩家自己的Pawn通道设为“忽略”,避免射线检测到自己。
二、蓝图实操题
问:两个不同Actor的蓝图怎么通信?说3种常用方式,各适合什么场景?
答:
①蓝图接口(Interface):适合“多个不同类Actor要统一执行某个动作”,比如“可破坏物体”接口,不管是木箱、玻璃,都实现“被破坏”方法,玩家攻击时直接调用接口,不用管具体是啥物体。
②事件调度器(EventDispatcher):适合“一个事件触发多个响应”,比如玩家血量归零时,调度“玩家死亡”事件,让UI显示GameOver、让敌人停止攻击、让音效播放死亡声音,这些响应都挂在调度器上。
③变量引用:适合“两个固定关联的Actor”,比如PlayerActor里存一个“当前持有武器”的变量(引用WeaponActor),玩家按攻击键时,直接通过这个引用调用武器的“开火”函数,缺点是耦合度高,换武器要改引用。
问:蓝图里用Tick做“检测玩家与敌人距离”,时间长了会卡顿,怎么优化?
答:首先别用Tick每帧检测,改成定时检测:用“延迟(Delay)”节点,检测一次后延迟0.5秒再检测,减少执行频率(根据需求调延迟时间,不用太频繁)。
其次优化检测逻辑:别用“获取所有Actor(GetAllActorsofClass)”找敌人,这样会遍历整个场景,改成在敌人生成时注册到一个“敌人列表”数组里,检测时只遍历数组里的敌人;另外距离计算用“向量长度平方(VectorLengthSquared)”代替“向量长度(VectorLength)”,因为平方计算不用开根号,性能更快。
三、材质与渲染题
问:怎么让材质实现“角色衣服颜色随血量变化(血量低变红色,满血变蓝色)”?
答:分三步:
①做动态材质实例(DynamicMaterialInstance,DMI):先创建一个基础衣服材质(M_Cloth),在材质里加一个“颜色参数(ScalarParameter,比如叫BloodColor)”控制Albedo颜色;然后在角色蓝图里,用“创建动态材质实例(CreateDynamicMaterialInstance)”节点,把基础材质换成DMI,挂到角色的Mesh组件上。
②传血量参数:在角色蓝图里,每次血量变化时,用“设置标量参数值(SetScalarParameterValue)”节点,把“血量比例”(当前血量/最大血量)传给DMI的BloodColor参数——比如血量比例1(满血)时,BloodColor对应蓝色;比例0(空血)时对应红色。
③材质里做颜色插值:在M
您可能关注的文档
最近下载
- CNAS-CC02_2013《产品、过程和服务认证机构要求》(2019-2-20第二次修订清稿).pdf VIP
- JJF1376-2012箱式电阻炉校准规范.pdf VIP
- 人教版六年级上册数学第三单元《解决实际问题例5》名师教学设计.doc VIP
- SCR脱硝催化剂体积及反应器尺寸计算表.xlsx VIP
- 房地产市场的数字化转型.pptx VIP
- 妇联换届宣讲培训.pptx VIP
- 穴位埋线疗法治疗失眠的临床观察及效果评价.pptx VIP
- iSecure Center综合安防管理平台 安装部署手册 V1.7.0(1).pdf VIP
- 中级经济师《经济基础》思维导图新版、曲线汇总.pdf VIP
- 动火作业专项培训.pptx
文档评论(0)