IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity 游戏设计模式 — 外观模式(Facade) -> 正文阅读

[游戏开发]Unity 游戏设计模式 — 外观模式(Facade)

一、外观模式定义

外观模式(Facade)在GoF中的解释:为子系统定义一组统一的接口,这个高级接口会让子系统更容易被使用。
所以,外观模式的重点在于,它能够将系统内部的互动细节隐藏起来,并提供一个简单方便的接口。

二、外观模式说明

在这里插入图片描述
示意图表示:整合子系统并提供一个高级的界面让客户端使用。
其中的参与者具体说明:

  • client(客户端、用户)
    从原本需要操作多个子系统改为只需要面对一个整合后的界面。
  • subSystem(子系统)
    原本会由不同的客户端(非同一系统相关)来操作,改为只会由内部系统之间交互使用。
  • Facade(统一对外的界面)
    整合所有子系统的接口及功能,并提供高级界面(或接口)供客户端使用。
    接受客户端的信息后,将信息传送给负责的子系统。

具体来说,外观模式可以让客户端使用简单的界面来操作一个复杂的系统,并且减少客户端要与之互动的系统数量,让客户端能够专心处理与本身有关的事情。

三、实现游戏主程序

1、游戏主架构设计

在这里插入图片描述

2、实现说明

  • 子系统对外接口类 - PBaseDefenseGame
/// <summary>
/// Author:maki
/// Time:2021-12-11
/// Describe:整合所有子系统的接口及功能
/// </summary>
public class PBaseDefenseGame
{
	//使用单例
	private static PBaseDefenseGame _instance;
	public static PBaseDefenseGame Instance
	{
		get
		{
			if (_instance == null)			
				_instance = new PBaseDefenseGame();
			return _instance;
		}
	}

	//场景状态
	private bool m_bGameOver = false;
    //游戏系统
    private GameEventSystem m_GameEventSystem;
    private CampSystem m_CampSystem;
    private StageSystem m_StageSystem;

    /// <summary>
    /// 初始化
    /// </summary>
    public void Initinal()
    {
    	m_bGameOver = false;
        //游戏系统
        m_GameEventSystem = new GameEventSystem(this);
        m_CampSystem = new CampSystem(this);
        m_StageSystem = new StageSystem(this);
        //...
    }
    //释放系统游戏
	public void Release()
	{
		// 游戏系统
		m_GameEventSystem.Release();
		m_CampSystem.Release();
		m_StageSystem.Release();
		m_CharacterSystem.Release();
		//...
	}
    /// <summary>
    /// 更新
    /// </summary>
    public void Update()
    {
        //游戏系统更新
        m_GameEventSystem.Update();
        m_CampSystem.Update();
        m_StageSystem.Update();
        //...
    }

    //游戏状态
    public bool ThisGameIsOver()
    {
        return m_bGameOver;
    }
    //...
}

  • 战斗状态类调用Facade接口
/// <summary>
/// Author:maki
/// Time:2021-12-2
/// Describe:战斗场景
/// </summary>
public class BattleState : ISceneState
{
	public BattleState(SceneStateController Controller) : base(Controller)
	{
		this.StateName = "BattleState";
	}

	// 开始
	public override void StateBegin()
	{
		PBaseDefenseGame.Instance.Initinal();
	}

	// 结束
	public override void StateEnd()
	{
		PBaseDefenseGame.Instance.Release();
	}

	// 更新
	public override void StateUpdate()
	{
		// 游戏更新
		PBaseDefenseGame.Instance.Update();
		// Render由Unity負責

		// 游戏是否結束
		//if (PBaseDefenseGame.Instance.ThisGameIsOver())
		//m_Controller.SetState(new MainMenuState(m_Controller), "MainMenuScene");
	}
}

3、使用外观模式的优点

  • 上述示例中可体现:

    1、将战斗状态类BattleState单一化,让该类只负责游戏在“战斗状态”下的功能执行及状态切换,不用负责串接各个游戏系统的初始化和功能调用。
    2、使战斗状态类BattleState减少了不必要的类引用即功能整合,因此增加了BattleState类被重复使用的机会。

  • 如果外观模式运用得当还具有以下优点:
  1. 节省时间
    比如:Unity组件接口(物理、渲染,UI,粒子等)是使用Facade接口,通过面板公开参数,可通过调整相关参数数据可以轻易得到反馈效果。
  2. 易于分工开发
    比如,在工作分工配合上,开发者只需要了解对方负责系统的Facade接口,不必深入了解其中运作方式。
  3. 增加系统的安全性
    这里安全性是指系统执行时“意外宕机或者出错”的情况。比如,一个功能先通知A去做后通知B做,一旦顺序出错会让系统初始化失败或导致宕机,所以需要Facade接口类来完成,不应该有客户端去做。

四、结论

将复杂的子系统沟通交给单一的一个类负责,并提供单一界面给客户端使用,使客户减少对系统的耦合度使外观模式(Facade)的优点。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 13:11:29  更:2021-12-13 13:12:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:36:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码