Unity游戏基础-5(一些细节)
本教程开始分享教学内容:Unity游戏基础,部分内容会包括Blender建模基础,Shader基础,动画基础等等,教程面向:建模、技术美术、游戏前端、游戏后端基础,适合美术与设计(数媒、环设、动画、产设、视传、绘画)专业、计算机(计算机科学与技术、软件工程、数媒)的同学学习。
这是第一章的结束,让我们加一些细节,其实在教程刚设计开始我就觉得有些难以上手,因为新手小白甚至不懂编程的小白来说前3节都是难懂的,所以我们今天来填一下我没有讲过的知识点
一、Unity的跨平台
这一内容会在后面的章节里面讲到,但是本节先提一个基础
Unity是一个非常强大的三维游戏引擎,可以稳定的跑在各大平台上面(Android、Windows、Mac OS、Linux、IOS、web GL)可以说几乎就是一套代码跑遍全平台(个人版还不支持 新Harmony OS,需要企业定制版),为了维护同一个产品,不同的平台,在历史上我们是有过教训的,就是QQ,QQ在之前是没有使用跨平台框架的,手机端(安卓/苹果),电脑(Win、Linux、Mac)用到的都是不同的代码(就上面而言就有5种),维护起来非常难受,而现在的QQ最新版采用了跨平台的框架(全电脑端)
有网友表示,如今 QQ 的 Windows 版本就是 2009 年重构基础上“缝缝补补”建立起来的。
因此,有了跨平台,对于技术人员来说,要跨平台干的活也就只有在UI层面适配不同平台的活了,比如手机端的摇杆、技能、地图、跑跳、攻击等,而电脑端只需要隐藏这些只出现在移动端的控件。
二、材质和纹理
没有接触过Unity或者Blender等建模软件的是不了解这些东西的,有必要讲一下
在日常生活中,任意物品都有材质,比如玻璃、金属、纸张等等,这些材质是决定最终观众看到的东西,比如玻璃的标准透射率是1.45,表面如果光滑那么就是纯正的玻璃材质,如果粗糙度为1,那么就是毛玻璃效果。
在blender建模中,完成了白模之后就要给物体上材质,如果觉得材质合理了(材质效果堪比贴图),那就需要烘烤(bake)材质为纹理贴图,也可以通过UV展开来绘制纹理贴图
值得注意的是,Unity的材质不同于其他建模软件的材质,因此如果你不加处理直接导入Unity,那么不仅贴图会消失,而且部分材质也会失效,所以我提及了烘焙材质,它可以确定物体最终的纹理贴图和材质状态,在导入Unity时,只需要拖入FBX模型和对应烘焙的贴图即可。另外,修改器在导出的时候一定要勾选应用修改器,不然表面细分等修改是不会被导出的。
如图,草的贴图是在Blender里面通过渐变材质烘焙出来的
三、Shader、LOD
这里讲Shader太早了,Shader就是着色器,如上图的场景是比较明亮,但是右看起来比较难受,这时候就要调整全局Shader,又比如《原神》中二次元的风格:人物、环境(光照、石块、草地、路灯)等,夜晚是深蓝色的,而我们目前的夜晚是灰色的,这些全是由Shader完成的,Shader可以完成很多炫酷的特效(爆炸,撕裂,角色技能)。
LOD可以帮助低端手机节约性能开销,在保证画质一般的前提下,可以稳定流畅运行游戏,那么LOD就是一个超过多少距离,就使用一个少面的模型,比如一棵树我摄像机靠近时我要显示细节,走远了之后我其实也看不清什么细节了,但是渲染器还是会计算这个模型的各个面,所以在超过一定距离后就加载一个简易模型,最后超过太远的距离就直接不输出(地形直接就是一个轮廓)
LOD在优化性能方面起到了关键作用,减少不必要的开销
四、合理运用组件
Unity有很多组件比如RigidBody(刚体)、RayHit(射线)、EventTrigger(事件触发器)等
rigidbody是一个模拟真实物理运动的组件,如果配合的好可以和CharacterController一起使用,我们可以利用它来踢皮球
Ray射线可以运用在碰撞(视角碰撞、人物碰撞、子弹碰撞、选择物体)上,它虽然不是一个组件,但是我们当作为一个非常实用的方法
EventTrigger,类似于Win Form的button事件,这多使用在角色技能(短按长按)上,挂载EventTrigger的类Button控件(Image、Button、Canvas)可以接受鼠标事件(Pointer Down、Pointer Up),然后在脚本内编写触发代码