返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Unity游戏开发中必备的设计模式之外观模式详解
  • 403
分享到

Unity游戏开发中必备的设计模式之外观模式详解

Unity设计模式之外观模式Unity外观模式 2023-05-19 08:05:52 403人浏览 安东尼
摘要

目录一、外观模式定义二、外观模式说明三、实现游戏主程序1、游戏主架构设计2、实现说明3、使用外观模式的优点四、结论一、外观模式定义 外观模式(Facade)在GoF中的解释:为子系统

一、外观模式定义

外观模式(Facade)在GoF中的解释:为子系统定义一组统一的接口,这个高级接口会让子系统更容易被使用。

所以,外观模式的重点在于,它能够将系统内部的互动细节隐藏起来,并提供一个简单方便的接口。

二、外观模式说明

示意图表示:整合子系统并提供一个高级的界面让客户端使用。

其中的参与者具体说明:

client(客户端、用户)

从原本需要操作多个子系统改为只需要面对一个整合后的界面。

subSystem(子系统)

原本会由不同的客户端(非同一系统相关)来操作,改为只会由内部系统之间交互使用。

Facade(统一对外的界面)

整合所有子系统的接口及功能,并提供高级界面(或接口)供客户端使用。

接受客户端的信息后,将信息传送给负责的子系统。

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

三、实现游戏主程序

1、游戏主架构设计

2、实现说明

子系统对外接口类 - PBaseDefenseGame

/// <summary>
/// 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>
/// 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类被重复使用的机会。

如果外观模式运用得当还具有以下优点:

节省时间

比如:Unity组件接口(物理、渲染,UI,粒子等)是使用Facade接口,通过面板公开参数,可通过调整相关参数数据可以轻易得到反馈效果。

易于分工开发

比如,在工作分工配合上,开发者只需要了解对方负责系统的Facade接口,不必深入了解其中运作方式。

增加系统的安全

这里安全性是指系统执行时“意外宕机或者出错”的情况。比如,一个功能先通知A去做后通知B做,一旦顺序出错会让系统初始化失败或导致宕机,所以需要Facade接口类来完成,不应该有客户端去做。

四、结论

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

到此这篇关于Unity游戏开发中必备的设计模式之外观模式详解的文章就介绍到这了,更多相关Unity外观模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Unity游戏开发中必备的设计模式之外观模式详解

本文链接: https://lsjlt.com/news/212671.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Unity游戏开发中必备的设计模式之外观模式详解
    目录一、外观模式定义二、外观模式说明三、实现游戏主程序1、游戏主架构设计2、实现说明3、使用外观模式的优点四、结论一、外观模式定义 外观模式(Facade)在GoF中的解释:为子系统...
    99+
    2023-05-19
    Unity设计模式之外观模式 Unity外观模式
  • Unity游戏开发中的设计模式之策略模式
    目录一、使用策略模式的原因二、策略模式的定义三、策略模式的使用说明四、策略模式的实现范例五、中介者模式的优点和注意事项六、策略模式的总结一、使用策略模式的原因 在设计游戏角色伤害时,...
    99+
    2023-05-19
    Unity策略模式 Unity设计模式
  • Java设计模式之java外观模式详解
    目录模式动机模式定义模式结构角色模式分析典型的外观角色代码外观模式实例与解析实例一:电源总开关实例二:文件加密模式优缺点优点缺点模式适用环境源码分析外观模式的典型应用(1) 外观模式...
    99+
    2024-04-02
  • Java设计模式中的外观模式详解
    目录模式介绍UML类图外观模式案例:外观模式的注意事项和细节模式介绍 外观模式(Facade) ,也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定...
    99+
    2024-04-02
  • Java设计模式之外观模式示例详解
    目录定义案例需求方案:外观模式实现分析总结定义 外观模式为多个复杂的子系统,提供了一个一致的界面,使得调用端只和这个接口发生调用,而无须关系这个子系统内部的细节 案例 需求 看电影的...
    99+
    2024-04-02
  • 探秘Unity游戏开发中的状态设计模式
    目录一、状态模式定义二、实现范例三、使用状态模式(state)实现游戏场景的转换四、使用状态模式的优点一、状态模式定义 状态模式(state)在GoF中的解释: 让一个对象的行为随着...
    99+
    2023-05-19
    Unity状态模式 Unity设计模式
  • Unity游戏开发中的桥接模式
    目录一、使用中介者模式的原因二、桥接模式的定义三、桥接模式的使用说明四、桥接模式的实现范例五、桥接模式的总结一、使用中介者模式的原因 比如,在实现较为复杂的角色和装备关系时,将两种...
    99+
    2023-05-19
    Unity桥接模式 Unity设计模式
  • Golang设计模式之外观模式的实现
    目录1. 模拟场景2. 代码实现2.1 Hero2.2 LiXin2.3 LiBai2.4 main3. 含义1. 模拟场景 实现需求为玩家拥有多个英雄,在部署好英雄之后,只用点击进...
    99+
    2023-05-20
    Go外观模式 Go设计模式外观模式
  • 深入理解Java设计模式之外观模式
    目录一、什么是外观模式二、外观模式的使用场景三、外观模式的优缺点四、外观模式的实现总结一、什么是外观模式 定义:为子系统中的一组接口提供一个一致的界面,用来访问子系统中的一群接口。 ...
    99+
    2024-04-02
  • Java设计模式之java观察者模式详解
    目录引言介绍角色原理类图微信订阅号的案例总结优点缺点适用场景观察者模式的典型应用JDK 提供的观察者接口Guava EventBus 中的观察者模式Spring Applicatio...
    99+
    2024-04-02
  • Java中常用的设计模式之观察者模式详解
    目录优点缺点使用场景注意事项一、实现方式1、观察者抽象类2、第一个观察者3、第二个观察者4、第三个观察者5、定义主题二、测试总结优点 1.观察者和被观察者是抽象耦合的。 2.建立一套...
    99+
    2024-04-02
  • android开发设计模式之——单例模式详解
    单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到。比如在Android实际APP 开发中用到的 账号信息对象管理, 数据库对象...
    99+
    2022-06-06
    设计模式 android开发 单例模式 Android
  • PHP设计模式中观察者模式详解
    目录简介适用场景缺点补充代码(自定义实现)简介 观察者模式是行为型模式的一种,定义了对象间一对多的关系。当对象的状态发生变化时候,依赖于它的对象会得到通知。 适用场景 类似触发钩子事...
    99+
    2022-12-20
    PHP观察者模式 PHP设计模式
  • Java设计模式探究之观察者模式详解
    目录1.观察者模式是什么2.如何实现3.代码实现1)观察者接口2)被观察者接口3)观察者实现4)被观察者实现5)测试类4.延伸拓展1.观察者模式是什么 顾名思义,有两个对象,观察者和...
    99+
    2024-04-02
  • 怎样理解NET设计模式实例中的外观模式
    本篇文章给大家分享的是有关怎样理解NET设计模式实例中的外观模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、外观模式简介(Brief Introduction)外观模式,...
    99+
    2023-06-17
  • Java设计模式之java备忘录模式详解
    目录引言备忘录模式(Memento Pattern)角色为什么会出现守护者对象(负责人)?备忘录模式实现框架下棋案例备忘录模式总结优点缺点适用场景注意细节参考文章总结引言 备忘录模式...
    99+
    2024-04-02
  • Java设计模式初识之备忘录模式详解
    目录简介典型实现总结优点缺点适用场景源码简介 备忘录设计模式(Memento Design Pattern)也叫作快照(Snapshot)模式,主要用于实现防丢失、撤销、恢复等功能。...
    99+
    2022-11-13
    Java 设计模式 备忘录模式 Java 备忘录模式 Java 设计模式
  • JavaScript设计模式之中介者模式详解
    目录中介者模式现实中的中介者中介者模式的例子泡泡堂游戏为游戏增加队伍玩家增多带来的困扰用中介者模式改造泡泡堂游戏小结中介者模式 在我们生活的世界中,每个人每个物体之间都会产生一些错综...
    99+
    2022-11-13
    JavaScript 设计模式 JavaScript 中介者模式
  • Java中常用的设计模式之模板模式详解
    目录优点缺点使用场景一、实现方式1、游戏抽象类2、LOL游戏类3、CF游戏类二、测试总结优点 封装不变部分,扩展可变部分。 提取公共代码,便于维护。 行为由父类控制,子类实现。 缺点...
    99+
    2024-04-02
  • Java设计模式之java中介者模式详解
    目录引言介绍角色数据库同步数据案例不使用中介者模式的数据同步方案,各数据源维护各自的同步作业其实这样已经实现了我们的需求,但是存在一些问题中介者模式来重构,将数据同步的功能迁移到中介...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作