我的第一个Unity的2D小游戏(Flappy Bird)

本文介绍了作者初次学习Unity时,使用Unity2017.2版本开发2D游戏Flappy Bird的过程。内容涵盖场景构建、组件添加以及功能脚本的分析和编写。在场景构建中,作者讲解了GameObject的创建、对象层级管理和碰撞组件的选择。功能脚本部分,讨论了MVP模式在Unity开发中的应用,以及场景管理模块的设计,以提高代码复用性和性能。
摘要由CSDN通过智能技术生成

前言

兜兜转转跑来学习unity了,学习利用的是unity2017.2版本,在看过网上所谓的一堆零基础入门的视频后(确实0基础,无外乎都从界面开始介绍,然后是脚本基础几个API的介绍,然后讲解了下UGUI的一些应用,然后就没了),终于选定 Flappy Bird 作为第一个熟悉界面操作的作品。
根据视频内容分为以下

  1. 场景构建
  2. 根据需求添加相应的组件
  3. 功能脚本的分析及编写

过程

1.场景需求及构建

完成概览
最终结果大概如图,该过程通过构建使人熟悉了对于GameObject类的创建,以及稍微科普了下贴图与材质球的关系。以及通过对物体的position的z轴移动调整物体的的一个视觉关系,让人初步了解关于创建之后的视角关系。在创建之后,根据场景的从属关系或者同质关系将object进行层级的从属管理,以最高级的场景做最上级元素,将从属于场景的地面、水管等元素作为子类拖曳在场景下方,又由于水管为多个同质存在,通过创建空的GameObject类做父类进行统一管理。

2.根据需求添加相应的组件

在场景构建完毕后,由于构建基础只是在3D Object的Squd上涂上一层材质,并未具有更多的物理属性以支持我们进行对应事件的触发,我们要分析出最基本的碰撞事件会在什么之间发生,然后是他们的碰撞会触发什么后果,哪些物体需要刚体属性。
当物体需要到重力或者外力因素的时候即考虑使用riligbody组件,而如果只是需要使用其进行碰撞判定,则只添加collider组件即可,根据object的种类及需求选择,这里选择使用box collider来做碰撞判定。有如下分析:

  1. Bird——玩家操作本身,具有碰撞特性、受重力影响的特性,不能作为触发器使用;
  2. Pipe——游戏中的障碍,具有碰撞特性,却并不需要刚体特性,由于每过一根柱子我们要进行一次计分,而pipe本身为一个组合(上下两根),因此在该元素组合下增添一个empty object,添加碰撞特性做触发器,以触发事件;
  3. Land——游戏中的土地,在Bird坠落地面后不至于由于重力因素无限向下坠落,同样的只需要一个碰撞组件以承载Bird,并不需要接受外力。

    3.功能脚本的分析及编写

    在组件的添加的时候就考虑过对应要实现的相应功能,在根据原视频的教导下,基本能实现到这个小游戏需要的功能,但是代码却并不具备着良好的概念,这里写一下自己的体会,在过去的java学习中,遵循MVC模式,视图层可以直接调用改变模型业务层数据,而为了保持一个整洁清晰的开发过程,MVP模式的概念更适用于unity开发之中,通过编程过程中对象的泛型化、工厂化的形式进行编写,以节省更多的效率。

场景块管理类概念

设计场景管理模块的目的是在无较大程度视觉差异,不影响真实性效果的情况下人为的减少三角面数量,从而保证场景渲染的实时性,流畅性。

即通过更底层的功能拆分进行代码编写,在上级场景的管理类中进行整合,增大代码的复用性。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 关于物体图片的材质球平移造成连续播放效果
/// 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值