基本游戏框架介绍
来源:互联网 发布:json文件导入json 编辑:程序博客网 时间:2024/05/16 17:34
1.游戏控制器。游戏控制器是控制游戏中不同部分之间交流的中心,将构成游戏各种各样的组件黏在一起。
2.场景管理器。这个脚本主要处理加载游戏场景保存游戏场景的任务
3.UI管理器。UI管理器绘制出游戏中的一些用户界面,用来显示用户的一些信息。
4.声音管理器。声音管理器处理声音的播放控制等。
5.玩家。玩家有时直接就存在场景中,有时候是通过游戏控制器来实例化玩家。
6.AI和敌人。和玩家一样,有些敌人一开始就在,有些是实时加载。
创建核心框架脚本
BaseGameController.cs主要功能:
1.追踪游戏状态:储存游戏状态,提供函数方法去改变游戏状态,改变游戏状态通过调用一些像EndGame()这样的函数。
2.创建玩家对象
3.设置照相机(玩家跟随)
4.状态管理,用户管理以及游戏行为之间的通信
5.一些独立的脚本或者非必要重写脚本之间的通信
一个典型的游戏应该有以下几个核心的状态:
游戏开始,暂停,加载,结束。
基本游戏控制器脚本
public class BaseGameController : MonoBehaviour { bool paused; public GameObject explosionPrefab; public virtual void PlayerLostLife() { } public virtual void SpawnPlayer() { } public virtual void Respawn() { } public virtual void StartGame() { } public void Explode(Vector3 aPosition) { Instantiate(explosionPrefab, aPosition, Quaternion.identity); } public virtual void EnemyDestroyed(Vector3 aPositon, int pointsValue, int hitByID) { } public virtual void BossDestroyed() { } public virtual void RestartGameButtonPressed() { Application.LoadLevel(Application.loadedLevelName); } public bool Paused { get { return paused; } set { paused = value; if (paused) { Time.timeScale = 0; } else { Time.timeScale = 1; } } }}
场景管理
public class SceneManager : MonoBehaviour { public string[] levelName; public int gameLevelNum; void Start() { DontDestroyOnLoad(this.gameObject); } public void LoadLevel(string sceneName) { Application.LoadLevel(sceneName); } public void GoNextLevel() { if (gameLevelNum >= levelName.Length) gameLevelNum = 0; LoadLevel(gameLevelNum); gameLevelNum++; } private void LoadLevel(int indexNum) { LoadLevel(levelName[indexNum]); } public void ResetGame() { gameLevelNum = 0; }}
扩展MonoBehavior是避免重复定义函数和变量的好方法
public class ExtendedCustomMonoBehaviour : MonoBehaviour { public Transform myTransform; public GameObject myGo; public Rigidbody myBody; public bool didInit; public bool canControl; public int id; [System.NonSerialized] public Vector3 tempVEC; [System.NonSerialized] public Transform tempTR; public virtual void SetId(int anID) { id = anID; }}
基本用户管理
储存玩家信息:姓名,得分,最高得分,登记,是否通关等信息
public class BaseUserManager : MonoBehaviour { private int score; private int highScore; private int level; private int health; private bool isFinished; public string playerName = "Kitty"; public virtual void GetDefaultData() { playerName = "Kitty"; score = 0; level = 1; health = 3; highScore = 0; isFinished = false; } public string GetName() { return playerName; } public void SetName(string aName) { playerName = aName; } public int GetLevel() { return level; } public void SetLevel(int num) { level = num; } public int GetHighScore() { return highScore; } public int GetScore() { return score; } public virtual void AddScore(int amount) { score += amount; } public void LostScore(int num) { score -= num; } public void SetScore(int num) { score = num; } public int GetHealth() { return health; } public void Addhealth(int num) { health += num; } public void ReduceHealth(int num) { health -= num; } public void SetHealth(int num) { health = num; } public bool GetIsFinished() { return isFinished; } public void SetIsFinished(bool aVal) { isFinished = aVal; }}
基本玩家管理:
public class BasePlayerManager : MonoBehaviour { public bool didInit; public BasePlayerManager DataManager; public virtual void Awake() { didInit = false; Init(); } public virtual void Init() { DataManager = gameObject.GetComponent<BaseUserManager>(); if (DataManager == null) DataManager = gameObject.AddComponent<BaseUserManager>(); didInit = true; } public virtual void GameFinished() { DataManager.SetIsFinished(true); } public virtual void GameStart() { DataManager.SetIsFinished(false); }}
基本的输入控制
public class BaseInputController : MonoBehaviour { public bool Up; public bool Down; public bool Left; public bool Right; public bool Fire1; public bool Slot1; public bool Slot2; public bool Slot3; public bool Slot4; public bool Slot5; public bool Slot6; public bool Slot7; public bool Slot8; public bool Slot9; public float vert; public float horz; public bool shouldReapawn; public Vector3 TEMPVec3; private Vector3 zeroVector = new Vector3(0, 0, 0); public virtual void CheckInput() { horz = Input.GetAxis("Horizontal"); vert = Input.GetAxis("Vertical"); } public virtual float GetHorizontal() { return horz; } public virtual float GetVertical() { return vert; } public virtual bool GetFire() { return Fire1; } public bool GetRespawn() { return shouldReapawn; } public virtual Vector3 GetMovementDirectionVector() { TEMPVec3 = zeroVector; if (Left || Right) { TEMPVec3.x = horz; } if (Up || Down) { TEMPVec3.y = vert; } return TEMPVec3; }}
0 0
- 基本游戏框架介绍
- 游戏的基本框架
- YARN基本框架介绍
- IOS基本框架介绍
- J2ME手机游戏基本框架
- Akka框架基本要点介绍
- Akka框架基本要点介绍
- Akka框架基本要点介绍
- Akka框架基本要点介绍
- Akka框架基本要点介绍
- Strusts2框架的基本介绍
- 01 Spring框架 基本介绍
- 为公司做的基本游戏框架
- android游戏开发中基本组件介绍
- 介绍几个 flash 游戏框架/engine
- Flash游戏开发框架Flixel介绍
- 【2Dhtml5游戏框架phaser介绍1】
- Starling Flash游戏框架游戏开发的介绍与安装
- hihocoder 1164 随机斐波那契 (期望dp)
- IOS中通过给NSString分类实现计算一个字符串中的阿拉伯数字出现的个数
- SDK 编码格式要求
- 循环-22. 输出闰年(15)
- 29. PHP 错误控制
- 基本游戏框架介绍
- hadoop2.x编译(二)
- oracle表空间
- JQuey $.getJSON使用说明
- oracle表分区
- 数据库-三大设计范式(概念、三大范式的理解)
- 《数据结构与算法分析》网络最大流问题
- 回环网卡驱动设计
- django 1.8 官方文档翻译: 2-3-1 模型实例参考