unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx

上传人:b****6 文档编号:22069680 上传时间:2023-02-02 格式:DOCX 页数:4 大小:16.10KB
下载 相关 举报
unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx_第1页
第1页 / 共4页
unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx_第2页
第2页 / 共4页
unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx_第3页
第3页 / 共4页
unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx

《unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx(4页珍藏版)》请在冰豆网上搜索。

unity3D学习之实现FlappyBird游戏Word文档下载推荐.docx

整个状态机的运行原理:

通过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类中被引用,并执行其中方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1