微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Unity 面向跳槽学习——面试向

自我介绍

面试官你好,我叫XXX,XXX年软件工程毕业。目前有三段工作经历。
第一段工作经历是一家初创公司实习,做一款区块链游戏项目。
客户端使用CocosCreator制作,结合区块链技术,将游戏中的角色和道具上链交易。我在项目中实现了A*寻路,每日任务,pve新手引导等模块。另外,使用solidity语言开发智能合约,在以太坊测试链实现了一套简单的虚拟货币。
第二段工作经历也是一家初创公司,项目是一款少儿钢琴陪练软件。
底层是基于人工智能的语音识别技术。客户端使用CocosCreator实现。我在项目中负责一些UI功能的制作。比如曲目搜索、任务中心、签到系统、乐理题库等。
第三段工作经历是一个主做MMORPG游戏的成熟商业公司。
在工作中我经历了两个项目,第一个是一款挂机养成类游戏。我在项目中负责UI功能、和一些公共模块的实现。比如红点系统,活动模块,任务系统,功能开放系统,面板跳转模块等。
第二个项目拿一个老项目换皮,平时负责界面功能调整,添加一些副本活动,修复bug等。
因为我是从JS转到C#的,所以我在平时的学习过程中比较重视基础,会看一些比较经典的C#书籍,
像CLR vai C#。在工作之余我会学习一些图像渲染的知识,比如看一些Shader入门的书,像Unity Shader入门精要。然后学习一些与游戏相关的数学知识,比如我会去看看3d数学基础:图形与游戏开发等等。
以上就是我的一个基本情况,谢谢。

1.渲染流水线

渲染流水线
渲染流水线就是给定光源、摄像机从三维场景生成2D图像的过程。
主要分为三个阶段。

应用阶段,在cpu上执行
1.准备场景中的基本数据:物体网格数据(顶点、uv)、摄像机数据、光照阴影数据。
2.进行一个粗粒度的剔除,将看不到的物体剔除出去。
3.设置渲染状态(物体的材质,使用的贴图、shader等),将物体排序
4.调用DrawCall输出渲染图元到显存

几何阶段,在GPU上执行
1.顶点着色器:接受来自cpu的顶点数据进行坐标转换和逐顶点光照。通过MVP矩阵将顶点数据从模型空间转换到裁剪空间。
2.投影:通过透视除法,将裁剪空间下的顶点转换到NDC坐标。
3.裁剪:根据图元和摄像机视野的关系,剔除和裁剪掉视野外的图元。
4.屏幕映射:将NDC空间下的图元映射到屏幕坐标下,根据屏幕分辨率对x,y坐标进行缩放。

光栅化阶段,在GPU上执行
1.三角形设置:根据屏幕映射输出的顶点数据,计算边方程,生成三角形网格数据。
2.三角形遍历:遍历三角形网格,找到被网格覆盖的像素,使用三个顶点的信息对内部像素进行插值运算。
3.片元着色器:将插值后的像素进行逐像素的纹理着色和光照着色,输出颜色值。
4.透明度测试、模板测试、深度测试、混合,将颜色输出到帧缓存。

2.游戏中红点系统的实现

一个完整红点系统分为结构层,驱动层和表现层。
我所实现的红点系统结构上是扁平化的设计,每个红点都是一个简单的枚举。
通过一个单例管理类,使用字典保存所有的红点枚举和红点状态。
每个红点状态由自己的红点逻辑驱动,游戏初始化的时候,向服务器请求主界面所有的红点状态。
当玩家点击某一个养成界面时,再向服务器请求该界面内部的红点。
当红点状态发生改变时,通过消息分发的形式通知表现层。
表现层有一个UIRedpint类,内部有一个它所关注的红点的枚举数组。会在类初始化的时候去监听数组中红点的变化。
当需要显示红点时,就可以通过各种表现提醒玩家去点击。

3.A*寻路系统

首先有三个概念
1.每个格子的寻路消耗公式
f(寻路消耗)= g(离起点的距离,非斜向方向移动的距离定为10,斜向为14)+ h(离终点的曼哈顿距离)
2.开启列表 (OpenList)
存放着所有的待检测的节点(坐标),每次都会从其中寻找出符合某个条件的节点。
3.关闭列表 (ClosedList)
存放着所有不会被检测的节点(坐标),每次检测都会忽略它们。
4.Node节点
包括f,g,h,父节点father,节点类型type,节点坐标x,y

寻路算法实现:
1.首先将起点加入关闭列表,然后开启循环。
2.将起点周围的可行走点加入开启列表,并记录起点为他们的父节点。
3.计算开启列表里每个点的寻路消耗,将消耗最小的点作为新的起点。并将其从开启列表移到关闭列表。然后进入下一轮循环。
4.当找到终点的时候退出循环,通过回溯父节点,找出路径并返回。当开启列表中没有节点的时候表示终点不可达,退出循环。

4.新手引导系统

新手引导系统是通过监听一些触发条件,打开一个引导面板去引导玩家点击某一个功能按钮。

未完待续。。。

原文地址:https://www.jb51.cc/wenti/3286482.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐