Unity与学期总结

这里写自定义目录标题

  • 说明:
    • 图片格式:
    • 为什么在游戏开发中不使用MVC?
    • ShadowMap原理
    • 获取ShadowMap
      • FitScene
      • FitView
    • UI设计
      • 选色

说明:

该篇文章为期末总结

图片格式:

NGUI生成的图集的图片格式是PNG格式,但是无论是什么格式的图片Unity都会自己生成一套格式,并且打包的时候不会用文件夹下面的格式,而是Unity自己格式。

如果你用的UITexture 你可以对每一张图来修改格式,比如颜色数比较少的图片可以使用16bit,如果没有透明,可以使用pvr或者etc这样图片会小很多。

为什么在游戏开发中不使用MVC?

1,代码繁冗,当你阅读别人的代码,一个很简单的逻辑,被封装了多次,需要在多个代码文件中索引,阅读效率极低。代码文件分散,一些很简单的逻辑,例如按钮点击,都做了多层封装。

2,不太专业的某些程序的惰性,导致他们并不是真正理解MVC或者说这些框架的原理,他们的目标只是,把功能搞出来。他们要么绕过框架,穿插了很多调用,要么整体copy别人的一个功能,去掉逻辑,留下骨架,然后填充自己的逻辑,也不管这个骨架是否适用。这样的人,大大增加了项目的混乱,leader要做到充分的代码review,去除这些问题,在开发进度吃紧,每周都要出版本的情况下,是不可能的。这些快速堆出功能的程序员,反而得到策划等非技术人员的赞赏。而认真处理,把每一块都做好,但是慢一点的程序,反而不受夸奖,这导致了劣币驱逐良币。我相信,除了极少数精英团队,很多团队都有这样的问题。

3,这些设计和框架,被滥用。比如MVC也许适用于UI部分的设计,但是,他是否适用一个战斗模块呢?他是否适用一个剧情模块呢?有些团队,机械地运用某些框架,并不根据需求去思考,认为某个东西是好的,就到处使用。

我们回到最初,仔细考虑,MVC解决的核心问题是,一个M,多个V,那么,在游戏领域,这样的需求多吗?是强需求吗?我们到底应该根据需求来设计框架,还是应该根据框架来填充需求?一个框架,一套设计,适用不同的游戏,不同的逻辑吗?

我认真地考虑这块问题,发现很多教程,文章,他们介绍MVC,MVVM,介绍各种框架,包括uframe,StrangeIoC等,都缺少了思考和提问

ShadowMap原理

1.从产生阴影的光源(在通常项目中为Directional Light)放置一个相机,渲染一次场景,获取深度贴图。

2.场景内物体渲染时,将自身世界坐标转入刚才的阴影相机的投影坐标得到统一坐标系下的深度值然后和对应深度贴图中保存的深度值比较,(在d3d11下)如果小于保存的深度值代表此像素处于阴影。

获取ShadowMap

有了原理,我们接下来第一步就是要保存场景的ShadowMap。首先是建立一个Camera用来生成ShadowMap,这个camera必须和场景的主光源,通常为Directional Light,有一样的Forward朝向(Directional Light的话,需开启正交相机)。Camera的视窗决定了那些区域能产生阴影,通常有两种方案来决定视窗范围

FitScene

顾名思义,阴影摄像机视锥覆盖到场景内所有角色可行走范围即可,区域外由于角色走不到,不会产生阴影交互,生成也是浪费。比较适合小场景。对于只计算静态阴影,只需生成一次即可。缺点是当场景较大的时候,摄像机视锥很大导致ShadowMap纹理很大或者分辨率较低。

FitView

阴影摄像机视锥覆盖观察摄像机视锥,即阴影相机只渲染主观察相机能看到的地方,相对FitScene,FitView的阴影区域生成利用率更高,因为处于可行走区域但是不被主观察相机渲染的地方是不会被生成到ShadowMap中的,但是主相机的参数只要一改变,对应阴影摄像机的视锥参数也会改变,所以需要实时调整阴影摄像机的视锥以匹配观察摄像机的视锥。

由于项目和移动端性能考虑,我们项目采用了FitScene的方式来生成ShadowMap。在场景搭建好之后,美术或者策划只要在场景内适当位置摆放好一个用来生成的ShadowMap的摄像机即可,我们这里为其编写了一些工具,可简化美术或者策划端的工作。

有了正确的阴影摄像机参数设置,我们就可以在游戏开始前对场景生成ShadowMap。这里我们采用Camera自带的方法RenderWithShader,渲染一次到rendertexture,然后即可关闭这个相机。下面给出ShadowMapCapture(阴影捕获Shader)主体。

UI设计

在UI设计中,避免使用有衬线。iOS中英文用Helvetica,中文使用冬青、思源黑体等一些无线衬字体,尽量用一下和iOS自有字体相似的字体做设计,这样在app实现后能和设计稿效果减小相差出入。

选色

基本选择两个颜色,主色、辅色。而高光、阴影基于主色,高光向左上角去选择合适的色值,阴影向右下角选择暗一些的色值。主色选择是很重要的,每一个主题都有一个适合的颜色,就像旅游类的采用蓝绿色系的色值。同样色值也是有忌讳的,比如在国内金融就不能使用绿色了,因为绿色在股市代表着跌;可想而知,一个用绿色作为主题色的金融app会怎样?

你可能感兴趣的:(游戏,python,java,编程语言,unity)