自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 UGUI源码之Toggle组件

最近在像往常一样使用Toggle组件的时候,遇到一个问题:之前一直认为toggle组件是控制对象显示和隐藏从而实现单选的效果。然后那天一不小心将toggle组件控制的对象给手动隐藏掉了,然后发现改变toggle的IsOn属性无法达到单选的效果。接着就引发了思考,原来之前的理解是错误的。于是看了一下UGUI的源码是怎么实现的。先来看下自己测试的结构:然后说下其中的几个方法:这个方法里面m_Group代表的就是我们测试的结构第二张图里面Toggle组件下绑定的Group,它是一个挂载了Tog

2020-12-08 23:50:19 702

原创 Unity:红点系统

在我们日常的开发中,红点几乎是一个必不可少的流程。各类游戏或多或少都会有红点提示。想要实现红点这个功能其实我们也可以通过最简单的在某个地方放上一个红点的图片,然后根据条件来判断它是否需要显示。这么一来虽然可以实现这个功能,但是如果红点的数量较多,或者样式比较多,我们就会难以进行管理。所以我们在设计之初可以将它统一进行管理。在此之前大家可以看看这篇文章:https://blog.uwa4d.com/archives/USparkle_RedPoint.html我是在大佬的基础上进行的修改,这是大佬的知乎主页.

2020-11-15 20:42:43 1445 3

原创 设计模式:观察者模式

观察者模式面向的需求是:A对象(观察者)对B对象(被观察者)的某种变化高度敏感,需要在B变化的一瞬间做出反应,但是我们又不能时时刻刻盯着B,所以采取是注册+订阅的方式,被观察者通知观察者我发生了改变。观察者模式是一种对象行为型模式,其主要优点如下。降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。 目标与观察者之间建立了一套触发机制。它的主要缺点如下。目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。 当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率.

2020-10-08 01:23:54 146

原创 设计模式:中介者模式

在软件的开发过程中,这样的中介者模式例子也很多,例如,在 MVC 框架中,控制器(C)就是模型(M)和视图(V)的中介者;还有大家常用的 QQ 聊天程序的“中介者”是 QQ 服务器。所有这些,都可以采用“中介者模式”来实现,它将大大降低对象之间的耦合性,提高系统的灵活性模式的定义与特点中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。中介者模式是一种对象行为型

2020-10-07 18:30:31 137

原创 设计模式:Command模式

命令模式的主要优点如下。降低系统的耦合度。命令模式能将调用操作的对象与实现该操作的对象解耦。 增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,它满足“开闭原则”,对扩展比较灵活。其缺点是:可能产生大量具体命令类。因为计对每一个具体操作都需要设计一个具体命令类,这将增加系统的复杂性。命令模式包含以下主要角色。抽象命令类(Command)角色:声明执行命令的接口,拥有执行命令的抽象方法 execute()。 具体命令角色(Concrete Command)角色:是抽象...

2020-10-06 20:24:04 118

原创 设计模式:职责链模式

责任链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式纯的责任链模式:一个具体处理者对象只能在两个行为中选择一个:要么承担全部责任,要么将责任推给下家,不允许出现某一个具体处理者对象在承担了一部分或全部责任后 又将责任向下传递的情况 一个请求必须被某一个处理者对象所接收,不能出现某个请求未被任何一个处理者对象处理

2020-10-06 12:29:28 94

原创 设计模式:享元模式

在享元模式中通常会出现工厂模式,需要创建一个享元工厂来负责维护一个享元池(Flyweight Pool)(用于存储具有相同内部状态的享元对象)。在享元模式中,共享的是享元对象的内部状态,外部状态需要通过环境来设置。在实际使用中,能够共享的内部状态是有限的,因此享元对象一般都设计为较小的对象,它所包含的内部状态较少,这种对象也称为细粒度对象。在享元模式中可以共享的相同内容称为内部状态(Intrinsic State),而那些需要外部环境来设置的不能共享的内容称为外部状态(Extrinsic Stat...

2020-10-04 22:23:19 88

原创 设计模式:Facade(外观)模式

外观(Facade)模式的定义:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。优点:降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。 对客户屏蔽了子系统组件,减少了客户处理的对象数目,并使得子系统使用起来更加容易。 降低了大型软件系统中的编译依赖性,简化了系统在不同平台之间的移植过程,因为编译一个子系统不会.

2020-10-03 17:14:14 121

原创 设计模式:装饰器模式

装饰器模式组成:抽象组件角色(Component): 定义可以动态添加任务的对象的接口 具体组件角色(ConcreteComponent):定义一个要被装饰器装饰的对象,即 Component 的具体实现 抽象装饰器(Decorator): 维护对组件对象和其子类组件的引用 具体装饰器角色(ConcreteDecorator):向组件添加新的职责一.装饰者模式的定义:装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象

2020-09-28 00:14:27 103

原创 设计模式:组合模式

组合模式中涉及到三个角色:抽象构件(Component)角色:这是一个抽象角色,上面实现中Graphics充当这个角色,它给参加组合的对象定义出了公共的接口及默认行为,可以用来管理所有的子对象(在透明式的组合模式是这样的)。在安全式的组合模式里,构件角色并不定义出管理子对象的方法,这一定义由树枝结构对象给出。 树叶构件(Leaf)角色:树叶对象时没有下级子对象的对象,上面实现中Line和Circle充当这个角色,定义出参加组合的原始对象的行为 树枝构件(Composite)角色:代表参加组合的有下级

2020-09-26 17:13:49 95

原创 设计模式:桥接模式

感慨下:设计模式这门课程有点难理解啊,没有几年代码经验还真不好琢磨。所以我写的也就是基于我现在水平下的理解。只是用来记录下,方便以后自己有东西可以翻翻。也是为了能够写出更加好的代码打打基础吧可以看看这篇文章好好理解下https://zhuanlan.zhihu.com/p/58903776桥接模式角色如下抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。 修正抽象化(RefinedAbstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定.

2020-09-20 21:19:29 132

原创 设计模式:适配器模式

模式说明:定义一个适配器类,用于包装不兼容的对象解决问题原本由于接口不兼容而不能一起工作的那些类可以在一起工作优势:易拓展,再适配器类中可以拓展相应的功能而不影响原本的功能。 更好的复用性,系统需要使用现有的类,而此类的接口不符合系统的需要。增加适配器类实现了类的复用 解耦性 将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码 符合开闭原则:同一个适配器可以把适配者类和它的子类都适配到目标接口;可以为不同的目标接口实现不同的适配器,而不需要修改待...

2020-09-20 19:44:09 108

原创 操作系统:相比32位,64位的优势是什么?

最近在看到操作系统的一门课程,以前也学的不咋滴,所以买来学习了一波。讲的还不错,附上链接感兴趣可以学习下:https://kaiwu.lagou.com/course/courseInfo.htm?courseId=478#/content。怕我学完以后忘记,所以写点东西记录下来。题目上的问题其实并没有规定范围:所说的32位和64位是指的cpu,还是操作系统,又或者是软件呢。在讲述这个问题之前,先来说下计算机的组成部分:输入设备,输出设备,内存,中央处理器,总线。输入输出设备:输入设备向计算

2020-09-19 22:50:46 2807

原创 数据结构:将两个有序的数组合并成一个有序数组

在说这个题目之前先来说说一个排序算法 “归并算法”归并算法采取思想是分治思想,分治思想简单说就是分而治之,将一个大问题分解为小问题,将小问题解答后合并为大问题的答案。乍一看跟递归思想很像,确实如此,分治思想一般就是使用递归来实现的。但是需要注意的是:递归是代码实现的方式,分治属于理论。接下来看一副图理解下:说完它的思想:我们再来分析下时间复杂度。归并算法采用的是完全二叉树的形式。所以可以由完全二叉树的深度可以得知,整个归并排序需要进行log2n次。然后每一次需要消耗O{n}时间。所以总的时间复杂

2020-09-18 00:27:40 6754

原创 设计模式:原型模式

今天来说说设计模式中的原型模式:应用原型模式就是建立一个原型,然后通过对原型来进行复制的方法,来产生一个和原型相同或相似的新对象,或者说用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。如果我们需要大量的创建一个相同的对象的时候,可以采用原型模式。原型模式有浅拷贝和深拷贝。浅拷贝很简单下面我们来放上浅拷贝的代码 public interface IColor { IColor clone(); int Red { get; set; }

2020-09-14 23:50:02 97

原创 设计模式:建造者模式

这里给大家分享一个学习设计模式好的网站:https://refactoring.guru/然后进入正题,来说说建造者设计模式。举一个例子:房屋是由门,窗户,地板等等组成的。如果我们将房屋House设计成一个类,那么他里面就包含了门,窗户,地板等等对象。若此时客户需要new出一个House对象,那么需要在构造函数中传递至少三个参数。我说的是至少,实际上不止。假如需要传递10个参数才能构建出一个House对象,那么客户在调用的时候会非常的麻烦,而且客户必须清楚的知道我们房屋是什么构成的。由此产生了我们的建造

2020-09-13 19:40:30 105

原创 设计模式:抽象工厂

先这里给大家分享一个学习设计模式好的网站:https://refactoring.guru/意图:抽象工厂是一种创新的设计模式,可让您生成相关对象的族而无需指定其具体类。利弊:客户无需知道具体产品如何创建,解耦 符合单一职责原则 符合开闭原则,对拓展开放 随着拓展的增多,会使代码变得复杂,增加了新的接口和类下面来举例子说下这个设计模式: 现在想建造一个我们人类的生存环境的模型。这个模型包括了公路Road,建筑Building,丛林Jungle等等。我们把它们三个叫做同一...

2020-09-13 10:48:07 127

原创 数据结构:C# ArrayList扩容

上一篇自己实现了数组的动态扩容,然后反编译了看了下ArrayList如何实现的扩容。先贴上来几行简单的代码:private static void Main(string[] args){ ArrayList arrayList = new ArrayList(); int length = 3; for (int i = 0; i < length; i++) { arrayList.Add("TestData"); } Console.WriteLine("count =

2020-09-12 21:16:59 499

原创 数据结构:动态扩容数组c#

记录下最近学习的动态数组扩容,参考https://blog.csdn.net/qq_30272539/article/details/88666409?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.channel_param感谢大佬!没太多好说的,直接贴

2020-09-10 22:21:01 980

原创 设计模式:工厂方法模式

先这里给大家分享一个学习设计模式好的网站:https://refactoring.guru/今天先来说说最简单的设计模式:工厂方法模式先来看看关系图:抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。抽象产品角色:它是具体产品继承的父类或者是实现的接口。具体产品角色:具体工厂角色所创建的对象就是此角色的实例。下面贴上代码: //产.

2020-09-09 23:37:22 117

原创 设计模式:简单工厂模式

先这里给大家分享一个学习设计模式好的网站:https://refactoring.guru/今天先来说说最简单的设计模式:简单工厂模式含义:简单工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法) 用一个单独的类来创建类的实例的过程,就叫做工厂优点:将创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建,实现了解耦缺点:工厂类中包含了所有产品类的创建逻辑,如果新增一个产品,需要修改工厂代码。 如果产品过多,会导致工厂方法中的实现逻辑过于复杂,不宜与系统维护和扩...

2020-09-09 22:56:41 95

原创 Unity笔记(二)AssetBundle(一)

本篇文章是介绍Unity如何AssetBundle打包,最好的介绍其实就是官方手册。https://docs.unity3d.com/Manual/AssetBundles-Workflow.html我这里稍微介绍下怎么实现。创建一个Editor文件夹, 在Editor文件夹下创建一个脚本不需要继承MonoBehaviour,导入using UnityEditor;和using Syst...

2019-01-10 15:48:47 89

原创 Unity笔记(二) AssetBundle(二)

本篇博客是我最近在学习AssetBundle的时候做的一些笔记,在此之前不了解什么是AssetBundle可以去百度下。以下有篇介绍AssetBundle的文章https://www.cnblogs.com/lancidie/p/5878789.html 本篇博客主要介绍自动标记工具类。也就是实现下图的操作:首先来看看资源文件目录结构:Res目录下有三个场景目录,Scene1下有Bui...

2019-01-10 14:07:49 210

原创 Unity笔记(一):物体移动的几种方式

关于移动的方式下面这个链接有很好的解释:https://blog.csdn.net/yangyong0717/article/details/72540052自己试了下一下几种方式:// Update is called once per frame void FixedUpdate () { float h = Input.GetAxis("Horizontal")...

2019-01-05 18:36:10 293

原创 c#数据结构静态链表实现

静态链表是在没有指针的前提下通过数组实现链表的方式,每一个元素中包含数据Data和Cur游标。下图表示静态链表的存储方式:下面就来用代码实现静态链表:程序结构如上图。下面一起来看看链表类:namespace ConsoleApp2{ class StaticLinkList { private int length = 0...

2019-01-02 09:43:44 264

原创 c#数据结构单链表基本操作实现

本文根据https://www.cnblogs.com/wjcnet/p/3424533.html文章理解,感谢博主。在数据结构中一般多用c语言实现,因为本身是学习c#,所以今天想通过c#来实现单链表的一些操作,菜鸟写的不好不要见怪,欢迎大家指出问题。程序大致结构如下:下面来看看主要类:namespace LinkList{ class Node&lt;T&gt;...

2018-12-28 15:22:43 1056

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除