协同程序原理
在主程序运行时同时开启另一段逻辑处理,来协同当前程序的执行。
1.开启协同程序就是开启一个线程
2.MonoBehaviour也是一个线程,与协同程序是互不干扰的模块。
3.
MonoBehaviour与
协同程序共同作用于同一个对象
结论:
将协同程序所在gameobject的active属性设置为false,当再次设置active为ture时,协同程序并不会再开启;如是将协同程序所在脚本的enabled设置为false则不会生效。这是因为协同程序被开启后作为一个线程在运行。
延伸阅读:
在Unity3D中,使用StartCoroutine(string methodName)和StartCoroutine(IEnumerator routine)都可以开启一个线程。区别在于使用字符串作为参数可以开启线程并在线程结束前终止线程,相反使用IEnumerator 作为参数只能等待线程的结束而不能随时终止(除非使用StopAllCoroutines()方法);另外使用字符串作为参数时,开启线程时最多只能传递 一个参数,并且性能消耗会更大一点,而使用IEnumerator 作为参数则没有这个限制。
Flappy Bird (PlayMaker)制作
1.鼠标点击,Add Force 使Bird(带有RigidBody)上升,使每次点击,上升效果一致,即初速度统一为0,set velocity.
2.游戏中管子只向左移动,Bird只想上下移动。设置管子障碍物随机位置,到达指定位置消失掉。注意:创建管子时,Create Object的spawnpoint可以用摆放好方块的gameObject设置位置。
3.Add global transition —system Events —COLLISION ENTER处理碰撞消息,可以代替使用Trigger Event
(要指定相撞物体Tag)的碰撞事件响应。注意:场景中的物体通过Collision Event响应碰撞,
物体落在Floor上,
该相接触的物体不能太小,否则在Unity中,Rigidbody在物理上会持续计算碰撞,实际是只计算一次。
4.Camera Fade Out 调整过渡颜色结束游戏。 要使游戏运行结束,做一个结束状态,运行到此状态。
5.为增强Bird运动效果,使Floor的纹理运动。设置 Texture Tiling 平铺, 通过设置 offset 使纹理运动起来。
具体Playmaker的Action是Set Texture Offset,每一帧计算累加的Offset X变量。
6.为使游戏每次重新加载,即用Reload Level。由于重新加载Scene前,更改了下一轮游戏背景,应将Reload Level的FSM放在Main Camera
上,Main Camera不随场景重新加载。
Unity3d,Playmaker Flappy Bird Program: