天才的大三暑假修行之旅.捕鱼达人

来源:互联网 发布:java web调用微信接口 编辑:程序博客网 时间:2024/04/30 11:05

天才的大三暑假修行之旅.捕鱼达人

没想到一个上午就写完了捕鱼达人,教程很简单,而且代码量也不是很多,2D做起来比3D快很多,但是也很有趣。可能是做过一些3D游戏,学2D游戏里面的刚体和碰撞体都有基础了。这里还是先上一张游戏运行图片吧。
这里写图片描述

还是挺简单的,而且鱼的种类也只有3种,而且每一种鱼之间除了碰撞体的大小不一样,身上带的血量,游动速度都是一样的。
游戏内容没什么好说的,代码也很简单。连游动的方向也只有左右之分。背景也没有添加上动画,呈现出水的效果。也没有记分数的功能。可能作者意在讲解技术而非把这个项目做的完整。
但是除了游戏本身,跟2D知识之外。还是有其他亮点的。以前常常困扰我的一个问题。如果,游戏当中我想让鱼死了增加分数,那么我必须在一个记分数的脚本里添加一个记录分数的对象这里就叫Number好了,然后还要在这个类里面添加一个静态的本类对象并把自己赋值给它,也就是单例。然后鱼在自己的脚本里添加死亡方法来,死亡时通过这个单例来修改Number。感觉不是很舒服。
这里说说作者的方法。他在鱼的脚本里面声明了一个委托,然后再计分的脚本里给委托复制一个加分的函数,因为这个函数在计分脚本里,所以就跳过了创建单例的步骤了。这里上代码
先是鱼的脚本。

 //定义委托类型    public delegate void VoidDelegate(Fish fish);    //声明委托对象    public VoidDelegate OnDeath;//受到伤害掉血    public void SetDamage(int damage)    {        Life -= damage;        if (0 >= Life)        {            GameObject prefab = Resources.Load<GameObject>("explosion_0");            GameObject explosion = (GameObject)Instantiate(prefab, this.transform.position, this.transform.rotation);            Destroy(explosion, 1.0f);            //调用委托            OnDeath(this);            Destroy(this.gameObject);        }    }

然后再是计分的脚本

            GameObject fishprefab = (GameObject)Resources.Load("fish" + index+"_0");            float cameraz = Camera.main.transform.position.z;            Vector3 randpos = new Vector3(Random.value, Random.value, -cameraz);            randpos = Camera.main.ViewportToWorldPoint(randpos);            Fish.Target target = Random.value > 0.5f ? Fish.Target.Right : Fish.Target.Left;            Fish f = Fish.Create(fishprefab, target, randpos);            //添加脚本之后,设置委托所调用的函数            f.OnDeath += OnDeath;//当鱼死亡的时候加分哦    private void OnDeath(Fish fish)    {        fish_count++;    }

代码不是很难,而且还附加了注释,我也解释过了。
接着再说说,我学习设计模式的事情吧,还是以面试遇见的问题,笔试的时候,有一道题目,说说你知道的3种程序设计模式。呵呵,学校根本没教过。于是整道题就都空着了,这也是促成我看设计模式的动机。大家可能会有疑问,为什么你总是拿你面试的经历来说知识呢。你到底面试被刷了几次。其实这些面试题是一次的,笔试的卷子题量还是挺多的,所以不要误会成我总是跑别人公司面试被刷掉了。再说我学习设计模式看的书,因为Unity是c#脚本语言,所以特意找c#的设计模式。第一本看的是
这里写图片描述

作者在前面介绍了c#基础,然后又按照自己的想法将常见的设计模式分成了3类。当看到这里的时候我就感觉,作者这样虽然能帮助我们理解,但是可能会在阅读之后把我们对原有的设计模式的想法产生影响。就如同一万个读者就有一万个哈姆雷特。所以我又找了另外一本书。
这里写图片描述

这本书算是我看过的最难读的书了,但是讲的确实非常好,只是我看不懂。作者开头先是以一些开发者遗漏的知识,以及作者对c#理解、还有一些自己感觉非常好的技术都写在了开头。这个开头就占了书的七分之一,而且对于我非常难懂,因为作者就是要介绍抽象的思想。同时,我一个室友也在学习设计模式,他也不是很能理解为什么书上那么写,于是就上网百度学习设计模式的方法。最后看到一句非常正确也是看不懂的原因。”设计模式是前人在大量编写代码,产生的总觉与感悟,代码量不够所以你看不懂。”
但是我感觉代码量少的人也要学习一下。幻想一下,你只有2万行代码量基础时看了别人写了上百万行代码量的人写的设计模式之后,你以后写出来的代码质量就不是2万行代码量的水平了。所以我又折回学习第一本书的知识了。等技术够了,我还是会回来的。

0 0