unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx
《unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx(4页珍藏版)》请在冰豆网上搜索。
整个状态机的运行原理:
通过GameManager类保持数据在各个GameState的传递,依靠GameState类中Update方法来实现该游戏状态下所执行的动作,并通过SwitchNext方法连接各个GameState,使之成为一个状态机。
States类
先来分析最干净的WelcomeState类,
在这段代码中,定义了两个字段、一个构造函数、以及对IGameState接口的实现
构造函数传入GamaManager用来保持在游戏的各个状态转换时数据能够保持,并可以调用GameManager里的公共方法
States这几个类并没有继承自MonoBehaviour类,其中的Update()方法并不会被Unity调用,所以我会GameManager类中定义一个IGameState变量,得到这些States的引用,并在Update方法中调用States。
里的Update的方法。
当条件触发时,调用SwitchInterface方法,用来实例化出已经在Prefab文件夹中已经创建好的游戏界面。
文章来自【狗刨学习网】
[code]WelcomeState.cs:
internalclassWelcomeState:
IGameState
{
privatereadonlyGameManager_manager;
privateintstateCode=0;
publicWelcomeState(GameManager_manager)
this._manager=_manager;
_manager.SwitchInterface();
_manager.CurrentStateCode=stateCode;
Debug.Log("
Welcome"
+_manager.CurrentStateCode);
}
publicvoidUpdate()
if(Input.GetKey(KeyCode.Return))
SwitchNext();
publicvoidSwitchNext()
_manager.SwitchFlag=false;
_manager.CurrentGameState=newStartState(_manager);
WelcomeState的游戏界面的预制中,在开始按钮[左下]和小鸟[中上]的游戏对象上绑定了脚本,用以随机创建小鸟以及设置调用SwitchNext跳转状态的表示为true
[code]RandomGameObject:
publicclassRandomGameObject:
MonoBehaviour
publicList<
GameObject>
RandomGameObjects;
[HideInInspector]
publicGameObjectgo;
privateGameObjectpreback;
//Usethisforinitialization
voidStart(){
RandomCreate();
//Updateiscalledonceperframe
voidUpdate(){
privatevoidRandomCreate()
if(preback)
Destroy(preback);
intRand=UnityEngine.Random.Range(0,RandomGameObjects.Count);
go=(GameObject)GameObject.Instantiate(RandomGameObjects[Rand],transform.position,Quaternion.identity);
if(go.tag=="
Player"
)
GameManager_manager=GameObject.FindGameObjectWithTag("
GameController"
).GetComponent<
GameManager>
();
if(_manager.Player!
=null){Destroy(_manager.Player);
_manager.Player=go;
else
preback=go;
publicvoidRandomCreate(List<
list)
if(go!
=null)
Destroy(go);
go=(GameObject)GameObject.Instantiate(RandomGameObjects[Rand],transform.position,Quaternion.identity);
这里使用了多态,可以使用有参和无参两个随机生成游戏对象的方法,并会根据相应的条件去除上一次的游戏对象,比如在welcome界面跳转到start界面时,小鸟应该重新生成。
StartState,PlayingState,EndState的结构类似,只不过多了些控制游戏的代码,之后再挑要点分析
总的来说,States的逻辑处理方式为:
在构造方法中处理上一状态的结果及新状态的初始
在Update方法中处理该状态运行时的逻辑
在SwichNext方法里跳转下一状态
所有的State都将在GameManager类中被引用,并执行其中方法。