- 博客(21)
- 收藏
- 关注
原创 关于Unity的A*巡逻算法
A*巡逻算法:根据估量代价,起点估量代价和终点估量代价来寻路,如果遇到障碍物的话,即便代价再小也不会去寻路。(估量代价:可以理解为从某一点到终点所用的距离)先排序,排序出来最小的估量代价。从最小的估量代价为起点再计算估量代价。以起点作为中心发散的不再计算。当过中心格子的放到列表里面,不参与综合估量代价计算发现者机制,一个格子被发现回溯机制起点估量代价【G】+终点估量代价【H】=综合估量代价【F】...
2022-01-06 09:34:39 2086
原创 c#设计模式之观察者模式
很多观察者想要观察被观察者的状态,因此委托⼀个通知者去观察,观察到变化后,通知给所有参与的观察者class Program{ static void Main(string[] args) { ConcreteSubject s = new ConcreteSubject(); s.Attach(new ConcreteObserver(s, "X")); s.Attach(new ConcreteObserver(s, "Y")); s.Attach(new ConcreteOb...
2021-10-14 17:37:56 111
原创 c#设计模式之外观模式
别有洞天。外观模式使⽤⼀个类作为外观去接触客户,内部管理各个⼦系统。class Program{ static void Main(string[] args) { Facade facade = new Facade(); facade.MethodA(); facade.MethodB(); Console.Read(); }}class SubSystemOne{ public void MethodOne() { Console.WriteLine(" ⼦系统...
2021-10-14 17:29:24 114
原创 设计模式之装饰模式
装饰类是抽象组件类的⼦类,继承并扩展它。通过构造传输具体组件⼦类,进⾏装饰操作,可以是装饰字段,也可以是装饰⽅法using System;using System.Collections.Generic;using System.Text;namespace 装饰模式{ class Program { static void Main(string[] args) { ConcreteComponent c = new ConcreteComponent(); Concret...
2021-10-13 20:04:33 94
原创 设计模式之策略模式
类似简单工厂模式上下⽂类通过构造传⼊具体的策略对象,实现具体策略算法,从⽽返回不同的策略结果abstract class CashSuper{ public abstract double acceptCash(double money);}class CashNormal : CashSuper{ public override double acceptCash(double money) { return money; }}class CashRebate : C...
2021-10-13 16:58:14 66
原创 简单工厂模式
简单⼯⼚类通过不同参数,返回不同的功能对象,通过返回的对象执⾏相应的操作using System;using System.Collections.Generic;using System.Text;namespace OperationLibrary{ /// <summary> /// 运算类 /// </summary> public class Operation { private double _numberA = 0; private d..
2021-10-13 16:45:45 56
原创 设计模式之开闭原则
开闭原则(OCP:Open Closed Principle)【总则】 在⾯向对象编程领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是 对于修改是封闭的”,这意味着⼀个实体是允许在不改变它的源代码的前提下变更它的⾏为。该特性在产品化 的环境中是特别有价值的,在这种环境中,改变源代码需要代码审查,单元测试以及诸如此类的⽤以确保产 品使⽤质量的过程。遵循这种原则的代码在扩展时并不发⽣改变,因此⽆需上述的过程。定义对扩展开放,对修改关闭扩展:添加新代码(类)修
2021-10-12 21:27:46 54
原创 接口隔离原则
客户端不应该依赖它不需要的接⼝。⼀个类对另⼀个类的依赖应该建⽴在最⼩的接⼝上。定义: 使⽤多个专⻔的接⼝⽐使⽤单⼀的总接⼝要好,但也不建议⼀个接⼝只对应⼀个⽅法。⼀个类对另外⼀个类的依赖性应当是建⽴在最⼩的接⼝上的。⼀个接⼝代表⼀个⻆⾊,不应当将不同的⻆⾊都交给⼀个接⼝。没有关系的接⼝合并在⼀起,形成⼀个 臃肿的⼤接⼝,这是对⻆⾊和接⼝的污染。接⼝的正确定义 既不能⼤⽽全,也建议不能⼀个接⼝⼀个⽅法 应该按照功能的密不可分来定义接⼝ 应该是动态的,随业务变化⽽变化,设计的时候要留好提前量
2021-10-12 21:08:14 68
原创 依赖倒置原则
程序要依赖抽象接口,不要依赖具体的实现,简单的说就是对抽象进行编程不要对实现进⾏编程,这样就降低了客户与实现模块间的耦合定义 ⾼层模块不应该依赖于低层模块,两者应该依赖抽象,⽽不是依赖细节。⾼层:⽅法调⽤⽅底层:被调⽤⽅ ⾯向抽象编程 属性、字段、⽅法参数、返回值,⼀切都尽量使⽤抽象【类/接⼝】 抽象不变,⾼层就不变抽象⼀般是稳定的,低层的扩展变化不会影响到⾼层,低层就可以横向的⾃由扩展,架构稳定 80%的设计模式跟抽象有关抽象的好处⼀个⽅法可以满⾜不同类型的参数传⼊ ⽀持动态扩展,
2021-10-12 21:05:02 63
原创 c#设计原则(迪米特法则)
定义:一个对象应该对其他对象保持最少的了解,只与直接朋友进行通信类与类的关系纵向:继承关系横向:聚合、组合、关联、依赖⾼内聚、低耦合降低耦合度的方法降低耦合度的⽅法1. 少使⽤类的继承,多⽤接⼝隐藏实现的细节。2. 模块的功能化分尽可能的单⼀,道理也很简单,功能单⼀的模块供其它模块调⽤的机会就少。(其实这是⾼内 聚的⼀种说法,⾼内聚低耦合⼀般同时出现)。3. 遵循⼀个定义只在⼀个地⽅出现。4. 少使⽤全局变量。5. 类属性和⽅法的声明少⽤public,多⽤pr
2021-10-12 17:54:26 154
原创 c#设计原则(里氏替换原则)
主张使用抽象和多态将设计中的静态结构改为动态结构定义任何使用基类的地方可以安全地去使用其子类父类有的子类必须有(强继承)如果父类中出现了子类不该有的方法,那么应该立刻断开关联创建新的父类,包含子类应该拥有的方法子类必须有自己的行为和特征父类中有的方法,子类中不要用New关键字隐藏父类方法如果子类希望可以重写父类中的方法,父类用abstract或者virtual...
2021-10-12 17:39:51 71
原创 c#设计原则(一)
单一职责原则一个模块只负责一件事一个类只负责一件事一个方法只负责一件事如何遵守单一职责原则定义抽象父类或者父类的虚方法子类继承后重写,不同的实现单一职责的不同层面1.方法为单位一个方法只负责一件事2.类为单位一个类只负责一件事不属于该类的内容,创建新的类去封装3.模块为单位一个模块只负责一件事不属于该项目的内容,交由属于的模块去负责实例:不同动物的叫声处理,喊叫⽅法中多个分⽀,还是不同类不同喊叫⽅法using UnityEngine;
2021-10-12 17:10:04 113
原创 对于抽象的再学习与总结
什么是抽象?百度百科这样解释:抽取共同的,本质的特征。这里应该使用了面向对象的思想。注意:抽象类不能被实例化。继承抽象类的话,抽象类中的抽象方法必须被重写抽象类可以包含非抽象方法继承的子类没有实现所有的抽象方法,这个类就是抽象类只有抽象类才可以有抽象方法只有abstract,没有方法体,只是定义...
2021-10-12 16:51:18 73
原创 Unity协程
using System.Collections;using System.Collections.Generic;using UnityEngine;public class CoroutineTest : MonoBehaviour{ //1s/3s/5s 分别去做某一件事 float timer = 1; float timer3 = 3; /* * 1.什么是协程? * 协程是一段在主线程中执行的代码逻辑 * 协程在每帧结束.
2021-10-10 20:39:35 848
原创 通过鼠标实现拖拽功能
Unity中的几个接口IPointerEnterHandler,IPointerDownHandler,IPointerUpHandlerIPointerClickHandlerIPointerExitHandler,IDragHandlerpublic void OnDrag(PointerEventData eventData) { Debug.Log("鼠标拖拽"+eventData.position); Debug.Log("UI坐标" + tr
2021-10-10 15:59:36 293
原创 通过Slider来控制方块的旋转速度
搭建UI界面编写代码using System.Collections;using System.Collections.Generic;using UnityEngine;public class L9Slider : MonoBehaviour{ public Transform cubeTF; private float speed = 20; void Start() { } public void Slide
2021-10-10 15:44:26 404
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人