前言

许久没有更新日志了,之前写了GUIManager,GUIClickEventReceiver还有AudioManager,这次写MissionManager

引用关系

首先看下MissionManager在项目中的引用关系

解释一下引用关系:

MissionManager是一个单例类,类中定义了和任务相关的属性的方法,其它类中通过单例引用MissionManager中的方法

GameManager

public void gameOver (GameOverType gameOverType, bool waitForFrame)
{
missionManager.gameOver ();
}
再来查看MissionManager中的GameOver()
    public void gameOver()
{
checkForCompletedMissions();
}

这里的逻辑是,在GameOver的时候检查MissionManager中的任务是否完成

DataManager

public int getScore ()
{
return Mathf.RoundToInt (score * missionManager.getScoreMultiplier ());
}

DataManager中 获取玩家得分  MissionManager中的倍率*Score=玩家最后的得分

 

GUIManager

    public void showGUI (GUIState state)
{
// activate the new gui state, deactivate the old.
changeGUIState (true, state);
changeGUIState (false, guiState); switch (state) {
case GUIState.EndGame:
endGameScore.text = dataManager.getScore ().ToString ()+"M";
endGameCoins.text = dataManager.getLevelCoins ().ToString ();
endGameHighScore.text=dataManager.getHighScore().ToString()+"M";
endGameMultiplier.text = string.Format ("{0}x", missionManager.getScoreMultiplier ());
break;
case GUIState.Missions:
if (guiState == GUIState.MainMenu) {
missionsBackButtonReceiver.clickType = ClickType.MainMenu;
} else { // coming from GUIState.EndGame
missionsBackButtonReceiver.clickType = ClickType.EndGame;
}
missionsScoreMultiplier.text = string.Format ("{0}x", missionManager.getScoreMultiplier ());
missionsActiveMission1.text = dataManager.getMissionDescription (missionManager.getMission (0));
missionsActiveMission2.text = dataManager.getMissionDescription (missionManager.getMission (1));
missionsActiveMission3.text = dataManager.getMissionDescription (missionManager.getMission (2)); break;
}

可以看到在GUIManager中,当UI切换到任务界面时,显示在界面上的数据大多与MissionManager中的属性或方法相关

任务系统 (MissionManager)

MissionManager的属性和方法

    public void Start()
{
dataManager = DataManager.instance; activeMissions = new MissionType[3]; // 3 active missions at a time
scoreMultiplier = 1;
for (int i = 0; i < activeMissions.Length; ++i) {
activeMissions[i] = (MissionType)PlayerPrefs.GetInt(string.Format("Mission{0}", i), -1);
// there are no active missions if the game hasn't been started yet
if ((int)activeMissions[i] == -1) {
activeMissions[i] = (MissionType)(i * 4); // 4 missions per set
}
scoreMultiplier += ((int)activeMissions[i] % 4) * scoreMultiplierIncrement;
}
}
//检测任务是否完成
private void checkForCompletedMissions()
{
for (int i = 0; i < activeMissions.Length; ++i) {
switch (activeMissions[i]) {
case MissionType.NoviceRunner:
if (dataManager.getScore() > 500) {
missionComplete(MissionType.NoviceRunner);
}
break;
......
}
}
}
//任务完成
private void missionComplete(MissionType missionType)
{
int missionSet = (int)missionType / 4;
activeMissions[missionSet] = missionType + 1;
scoreMultiplier += scoreMultiplierIncrement;
PlayerPrefs.SetInt(string.Format("Mission{0}", missionSet), (int)activeMissions[missionSet]);
}

设计思想

[3D跑酷] MissionManager的更多相关文章

  1. 3D跑酷遇到的问题

    前言 项目名称:3D跑酷项目 写作目地:使用Asset Server进行多人协作开发过程中,记录遇到的问题 问题1:UIAtlas无法自动更新 描述:NGUI的Atlas图集(图片)无法自动更新 后果 ...

  2. 3D跑酷游戏《月影忍者之疾风狂逃》

    <月影忍者之疾风狂逃>是一款3D跑酷游戏,也是我实习的时候参与的一个项目,在那个公司我学到了很多东西,谢谢他们.大家可以去玩玩这个游戏啊,还是不错的哦.

  3. [3D跑酷] GUIManager UI管理

    UI元素更新及界面跳转 继上篇日志<Unity开发之 GUIClickEventReceiver>,再谈一下我们如何管理游戏中的UI元素更新及界面跳转 UI绑定 图一:Inspector面 ...

  4. [3d跑酷] Xcode5 打包 发布配置

    主题 Unity导出Xcode项目,使用Xocde打包ipa并提交到AppStore xcode发布配置 1.设置发布相关参数,比如 包名,版本,证书,ios设备版本 2.设置体系结构,支持的平台(I ...

  5. [3D跑酷] DataManager

    DataManager管理游戏中数据,当然这个类中大部分的属性和方法都是Public 函数列表

  6. [3D跑酷] GameManager

    GameManager在游戏中很重要,处理整个游戏的流程,但是在这个类中尽量也只是写一些重要的方法,调用其它类中的方法. 枚举项 函数列表 方法解释 //当玩家碰到障碍(障碍Type,碰撞Positi ...

  7. [3D跑酷] UI事件处理系统

    在我们的Unity游戏项目中,GUI的表现采用NGUI.记录一下我们的处理方式: 需要解决的问题 1.需要处理大量按钮的点击事件 2.需要处理界面跳转事件 3.需要处理界面元素更新事件 解决方案 GU ...

  8. [3D跑酷] AudioManager

    Unity音频管理 游戏中的声音管理最常用的组件莫过于AudioSource和AudioClip,我的做法是建立是一个AudioManager类(单例类)管理各个音频,谈一下我的经验: 函数列表 St ...

  9. Unity3D 3D横版跑酷

    Unity3d  3D横版跑酷系列(Character Controller组件) @广州小龙 目前在做一个3D跑酷的横版游戏,目前说一下 Character Controller组件! 1.Slop ...

随机推荐

  1. Mysql进阶(二)

    一.触发器 对某个表进行[增/删/改]操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行[增/删/改]前后的行为. 创建视图 # 插入前CREATE TRIGGER ...

  2. .net经验积累

    希望对.net编程者有所帮助 1.学会配置环境变量  1.我的电脑-属性-环境变量-双击下面的path-粘贴路径  2.ctrl+r 输入软件名字按回车 2.常用vs2010快捷键  代码格式化:ct ...

  3. Cannot export AX project in AX7

    I tried to export project from VS.  I succeed before.  But today I got a Microsoft Visual Studio err ...

  4. 转:Web应用程序项目XX已配置为使用IIS

    转:http://www.cnblogs.com/Joetao/articles/2392526.html 今天在看开源项目Umbraco是,出现一个项目加载不了,并报如下错误: Web应用程序项目U ...

  5. STL--迭代器(iterator)

    指针与数组 指针与其它数据结构呢?比如说链表? 存储空间是非连续的.不能通过对指向这种数据结构的指针做累加来遍历. 能不能提供一个行为类似指针的类,来对非数组的数据结构进行遍历呢?这样我们就能够以同样 ...

  6. iOS 抽象工厂模式

    iOS 抽象工厂模式 什么是抽象工厂模式 简单了解一下 按照惯例,我们先了解一下什么是抽象工厂模式.抽象工厂模式和工厂方法模式很相似,但是抽象工厂模式将抽象发挥的更加极致,是三种工厂模式中最抽象的一种 ...

  7. IOS常用的系统文件目录介绍

    iOS常用目录整理说明是本文要介绍的内容,虽然不同API全面,也算是在编程中常用到的存放目录,所以是必备文档,不多说,来看详细内容讲解. 1.[/Applications] 常用软件的安装目录 内建软 ...

  8. 解压缩框架--SSZipArchive

    下载地址:https://github.com/ZipArchive/ZipArchive 如果你直接将框架文件夹拖入项目,构建时会出现以下错误 解决方案: 点击+以后会弹出 如果使用cocoaPod ...

  9. ios appIcon配置

    iOS 我所知道的Assets.xcassets 字数923 阅读723 评论1 喜欢3 Assets.xcassets是用来存放图像资源文件的.将一个图片放在Assets里面是这个样子的 目录结构 ...

  10. Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称

    Atitit. <吠陀> <梨俱吠陀>overview 经读后感  是印度上古时期一些文献的总称 1. 印度古<吠陀>经,是印度上古时期一些文献的总称, 1 1.1 ...