装饰器模式
详细见:https://www.runoob.com/design-pattern/decorator-pattern.html 什么是装饰器模式?? 装饰器模式:允许向一个现有的对象添加新的功能,同时又不改变其结构。 说人话:我原本的类不想改,但是我还想添加额外的功能 实现思想:套娃 主要解决了什么问题? 避免通过继承引入静态特征,特别是在子类数量急剧膨胀的情况下。 允许在运行时动态地添加或修改对象的功能。 :::color4使用建议: 在需要动态扩展功能时,考虑使用装饰器模式。 保持装饰者和具体组件的接口一致,以确保灵活性。 ::: 具体实现 下面以简单的附魔系统演示代码 12345678910111213public interface IWeapon { void Attack();}public class Sword : IWeapon{ public void Attack() { Debug.Log("挥剑攻击!"); ...
状态模式
详细请见:https://www.runoob.com/design-pattern/state-pattern.html 此为FSM有限状态机的基础 什么是状态模式?如果一个角色现在有如下几个状态,待机、攻击、巡逻等,且当前只有一个状态。 正常在书写代码时进行状态切换往往会维护一个超级史山的ifelse语句非常不便。 1234567891011121314151617181920212223242526272829303132333435363738public class Player{ public enum PlayerState { Idle, Move, Attack, Hurt, Dead } public PlayerState currentState; public void Update() { switch (currentState) { case PlayerState.Idle: ...
外观模式
详细请见:https://www.runoob.com/design-pattern/facade-pattern.html 什么是外观模式???外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 主要解决的问题 降低客户端与复杂子系统之间的耦合度。 简化客户端对复杂系统的操作,隐藏内部实现细节。 缺优点 优点 减少依赖:客户端与子系统之间的依赖减少。 提高灵活性:子系统的内部变化不会影响客户端。 增强安全性:隐藏了子系统的内部实现,只暴露必要的操作。 缺点 违反开闭原则:对子系统的修改可能需要对外观类进行相应的修改。 代码实现 123456789101112131415161718192021222324252627public interface Shape{ void Draw();}public class Rectangle :...
策略模式
详细请看:https://www.runoob.com/design-pattern/strategy-pattern.html 什么是策略模式???在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context...
抽象工厂模式
更详细见:https://www.runoob.com/design-pattern/abstract-factory-pattern.html 什么是抽象工厂抽象工厂就是从一个大工厂创建n多个小工厂,再从小工厂里面创建对象 适用场景:当系统需要创建多个相关或依赖的对象,而不需要指定具体类时。 运用实例:假设有不同类型的衣柜,每个衣柜(具体工厂)只能存放一类衣服(成套的具体产品),如商务装、时尚装等。每套衣服包括具体的上衣和裤子(具体产品)。所有衣柜都是衣柜类(抽象工厂)的具体实现,所有上衣和裤子分别实现上衣接口和裤子接口(抽象产品)。 与简单工厂区别:可以批量管理相关联对象 缺优点 优点: a. 确保同一产品族的对象一起工作 比如都是怪物和颜色产品族,有哥布林、巨魔,每个怪物都得有颜色 b. 客户端不需要知道每个对象的具体类,简化了代码。直接干就行。 缺点: 扩展产品族非常困难。增加一个新的产品呢族需要修改抽象工厂和所以具体工厂的代码 比如:新增了个道具族,抽象工厂要新增一个抽象的创建方法。所有具体的工厂必须去实现那个新增的方法。同时还要新增工厂类 使用场景 QQ...
简单工厂模式
详细见:https://www.runoob.com/design-pattern/factory-pattern.html 什么是工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,它提供了一种创建对象的方式,使得创建对象的过程与使用对象的过程分离。 工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。 通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。 说人话:实例化对象时直接new就行,其他都不用管。 比如:你需要一辆汽车,只需从工厂提货,而不需要关心汽车的制造过程及其内部实现。 工厂模式类型 简单工厂模式: 简单工厂模式不是一个正式的设计模式,但它是工厂模式的基础。 它使用一个单独的工厂类来创建不同...
Excel配置表小工具
Unity中添加 菜单栏功能为编辑器菜单栏添加新的选项入口 可以通过Unity提供我们的MenuItem特性在菜单栏添加选项按钮 特性名:MenuItem 命名空间:UnityEditor 12345678[MenuItem("GameTool/Test/Tools/生成Excel信息")]//规则一:必须为静态方法//规则二:菜单栏至少有一个斜杠//规则三:可以用在任意类中,不继承Mono也行private static void Test(){ } 刷新Project窗口 类名:AssetDatabase 方法:Refresh 123456789[MenuItem("GameTool/Test/Tools/生成Excel信息")]//规则一:必须为静态方法//规则二:菜单栏至少有一个斜杠//规则三:可以用在任意类中,不继承Mono也行private static void Test(){ ...
UnityShader基础(三)
引言:Shader基础内容由于内容较多分为多个部分记录,该部分主要为动态效果以及屏幕后处理相关 动态效果如何制作动态效果 让画面动起来是因为每一帧对象的位置、角度、缩放、颜色等等信息的改变后重新渲染带来的 相当于就是间隔一定时间更新一些数据,从而带来了画面变化 那么想要利用Shader制作出动态效果,其实原理也是一样的 我们只需要间隔一定时间改变Shader中的数据,从而改变渲染的结果,最终达到画面变化的目的 这样就能够带来动态感了 总结: 利用Shader制作动态效果的关键就是 —— 利用时间变化来改变数据,从而导致渲染结果改变,带来画面变化 Shader中的内置时间变量 时间是关键数据,Shader中提供了对应的内置时间变量 变量名 分量(x, y, z, w) 数学表达式 用途说明 典型应用场景 _Time (t/20, t, 2t, 3t) t = Time since level...
UnityShader基础(上)
引言:Shader基础内容由于内容较多分为多个部分记录 渲染路径渲染路径概述渲染路径是什么?? 概念: 渲染路径(Rendering Path)是指在图形渲染过程中,图形引擎按照特定的步骤和顺序来处理场 景中的几何、光照、材质等信息,最终生成屏幕上的图像的一种算法或策略。 它决定了图形引擎如何组织和执行渲染过程,以产生最终的视觉效果 对于我们来说: 在Unity中,渲染路径决定了光照如何应用到Unity Shader中,如果要在Unity Shader中和光源打交道,我们需要为每个Pass渲染通道匹配对应的渲染路径,这样才能在Shader 当中获取到正确的光源数据进行处理。 总结: 渲染路径会影响光照处理,从而影响最终的渲染效果(光照、阴影等)。 存在多种不同的渲染路径 为什么会影响: 我们可以简单理解,使用不同的渲染路径时,Unity在Shader中准备光源数据的流 程是不同的,那么我们在Shader开发时,获取光源数据的方式就会有所不同。 渲染路径的种类和设置 我们可以在Camera组件中的Rendering...
Unity基础—UGUI
...
