我现在的思路大概是这样的,2D游戏

Hierachy视图

有一个总的Canvas节点,挂载一个总的游戏控制脚本game_scene,下面有这样一些子节点

1.game_root:下面存放游戏界面中的物体,像飞机,敌机,子弹

2.game_ui:下面存放游戏的UI控件,像游戏分数的显示

3.menu_root:下面存放开始游戏时候的菜单界面,像开始游戏按钮

4.如果是重复不断生成的物体(子弹,敌机),需要设置成预制体,在代码里面不断生成节点,并在满足某种条件时删除节点,这些代码也是挂载在这些预制体中的,并不是挂载在空的父节点下。

脚本挂载

每一个节点的具体功能是什么,或者它自己的职责是什么,其对应的挂载的脚本里面就要写些什么。

总的游戏控制脚本game_scene里面要写的东西:

  a.界面按钮的监听器函数

  b.监听器函数所要做的事情的函数(删除或隐藏菜单节点menu_root)

  c.监听器函数所要做的事情的函数(游戏节点下的某些物体的某些动作的开始函数,里面调用比如飞机发射子弹的开始函数,敌机生成的开始函数)

游戏背景:

  a.有一个向下的移动速度

  b.移动到底时能够重新头开始接上,形成repeat的样子

子弹:

  a.有一个向上的移动速度

  b超出Canvas上边界后删除

  c.碰到敌机后删除

敌机:

  a.有一个向下的移动速度

  b.超出Canvas下边界一段距离后删除

  c,碰到子弹后播放爆炸动画,碰到飞机没反应。

  d.爆炸后抛出一个委托,用来被父节点捕捉并执行分数增加的函数。

敌机父节点:

  a.有一个生成敌机的开始函数

  b.在指定位置随机选择生成一组敌机

  c.这组敌机里面的各个敌机的位置是先前设置好的,但是某个位置的敌机的类型是随机的。

  d.管理每个敌机抛出的委托,增加游戏分数,动态改变到UI层的分数中

飞机:

  a.飞行可以被鼠标控制移动

  b.有一个发射子弹的开始函数

  c.在指定位置发射出子弹

  d.碰到敌机后播放爆炸动画

  e.爆炸后一段时间再次生成

  f.重新生成后有几秒无敌状态

注意

1.menu和ui一般都不挂脚本

  a.menu负责抛出事件,在game_scene总控制器脚本里面写响应函数。

  b.ui把自己的某个显示节点拖进别的节点的脚本的public属性中动态改变。

2.动画脚本一般挂在目标节点的子节点下面,方便想修改动画的时候就修改动画,也有直接挂在目标节点下面的。

05-11 21:54