自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 为什么 unity 中正方体网格的顶点数量为 24?

unity 中正方体网格的顶点数量为 24, 面片为 12:1.首先看下在 3Dmax 中的顶点数量为 8,面片(四角面片)为 6(图中显示三角形数量是为了方便我们计算):2.模型导入unity 之后,会对四边形(或多边形)进行处理,转成三角面片。因此,对于上述栗子来说,面数 = 原面数 * 2 = 12;3.unity 中显示的顶点数和面片数是实际传递给 GPU 的数量。由...

2020-02-27 01:11:26 2130 4

原创 设计模式总结——命令模式

将一个请求封装为一个对象,从而可以对请求排队,记录请求,撤销请求。举个栗子:1.创建执行者 Receiver,实现具体命令,如 Action1(), Action2()。2.创建请求抽象类 Command ,维护一个 Receiver 类型的变量 r 和 Excute()方法。3.创建具体请求类 ConcreteCommand,Excute中调用 r 的 Action1()或 Ac...

2020-02-11 15:07:28 105

原创 设计模式总结——备忘录模式

用于保存状态,以便恢复状态。举个栗子,游戏中的存档:1.创建备忘录类 RoleStateMemento 。 1.1保存角色状态 attack,defense,hp;2.创建备忘录管理类 RoleStateManager , 维护一个RoleStateMemento 对象。3.创建游戏角色类 Role 。 3.1保存角色状态 attack,defense,hp;...

2020-02-11 15:07:16 107

原创 设计模式总结——原则合集

1.单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。2.迪米特法则:如果两个类不必彼此直接通信,应该通过第三者转发这个调用,强调每个类尽量降低成员的访问权限。3.依赖倒转原则:高层模块和低层模块不相互依赖,它们都应该依赖于抽象类或接口,4.里氏代换原则:子类型必须能够替换掉它们的父类型。这也是父类复用的前提,举个栗子,以下 Cat 可以替换成 Dog ,而同时不必修改其他...

2020-02-11 15:06:45 85

原创 设计模式总结——桥接模式

将抽象部分和实现部分分离,使它们都可以独立变化。也就是说,当系统有多角度分类,且每个分类都有可能变化时可以使用这个模式。举个栗子,手机可以按品牌分类,也可以按功能分类,且品牌和功能之间属于“聚合”关系,即“品牌包含功能,而功能不属于品牌”:1.功能抽象类;2.具体功能类;3.品牌抽象类,维护一个功能类的变量;4.具体品牌类,调用功能类;这样即使增加功能或者增加品牌...

2020-02-10 23:02:59 63

原创 设计模式总结——职责链模式

使多个对象都有机会处理请求,沿着这条链传递请求,直到有对象处理它为止。举个栗子,请假时提交申请,会先经过 HR 审核,再到项目负责人审核:1.创建 Manager 抽象类,维护一个“上级”的变量,和抽象方法 Handle,即“处理请假申请”;2.创建 ProjectManager 和 HRManager, 继承 Manager,方法 Handle 中根据自己的权限判断由自己处理还是“上...

2020-02-10 22:46:51 60

原创 设计模式总结——中介者模式(调停者模式)

用一个中介对象来封装一系列对象的交互,使得各个对象之间不需要显式地相互引用。该模式适用于:当一组对象定义良好,但是通信复杂时。使用:1.创建一个中介类 1.1保存各个对象的引用 (这也是这个模式的缺点); 1.2转发调用,方法 Send(消息,指定要转发的对象);...

2020-02-10 22:37:22 140

原创 设计模式总结——享元模式

防止创建多个对象,共享代码。但有足够多的对象实例可以共享时才值得用。将对象分成内部状态和外部状态,内部状态可以直接存储在享元对象中,外部状态由客户端存储或计算,当调用享元对象的操作时,再作为参数传过去。举个例子:1.创建外部状态类 User ,存储账号,名字等。2.创建抽象享元类 Website。3.创建具体享元类 ConcreteWebsite ,继承 Website,维护一...

2020-02-10 22:26:21 87

原创 设计模式总结——组合模式

将对象组合成树形结构,以表示“部分-整体”的层次结构,使得用户对“单个对象”和“组合对象”的使用具有一致性。也就是说,将对象分成枝节点和叶节点,枝节点维护一个子女节点列表。举个栗子,书本的目录(章节-小结),公司结构(总公司-分公司-具体部门):1.创建 Company 抽象类或接口,定义Add(Company c),Remove(Company c),Display()。2.创建...

2020-02-10 22:10:48 73

原创 设计模式总结——观察者模式

定义一对多的依赖关系,让多个观察者对象同时监听主题对象,主题对象在状态发生变化时,会通知所有观察者对象。1.delegate void EventHandler() 声明一个特殊的“类”。2.public event EventHandler Update() 声明一个事件委托的变量。3.Update += new EventHandler(方法) 创建委托实例,等于把方法委托给 Up...

2020-02-10 21:58:18 551

原创 设计模式总结——访问者模式

把数据结构和操作分离开,使得操作可以自由演化。该模式用于数据结构相对稳定的系统。也就是说,把操作封装成一个个类,每个操作类都要定义好对每种数据结构的操作。举个栗子,假设当前有数据结构 A 和 B,操作 1 和操作 2 :1.创建访问者抽象类 Visitor,定义对数据结构 A, B 的操作方法 HandleA(), HandleB() 。2.创建具体访问者类 Concr...

2020-02-10 16:43:46 98

原创 设计模式总结——状态模式

当对象状态转换的条件过于复杂时,把状态定义成一系列类,并将状态的判断逻辑转移各个类当中。举个栗子,12 点时切换到状态 B,否则为状态 A:1.Player 类维护一个 State 变量作为当前状态。2.定义 State 抽象状态类。包含一个 Handle 方法 ,该方法接受一个 Player 参数。3.创建 ConcreteStateA 和 ConcreteStateB ,继承...

2020-02-10 16:13:25 88

原创 设计模式总结——迭代器模式

提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露其内部表示。该模式也就是 c# 和 Java 的 foreach-in。举个栗子:1.创建集合抽象类 Aggregate。2.创建具体集合类 ConcreteAggregate,继承Aggregate。 2.1维护一个 IList 泛型变量 list,也可以用 ArrayList; 2.2提供 Count 方法(返...

2020-02-10 15:36:46 120

原创 设计模式总结——装饰模式

当需要在主类中加入新的字段,方法或逻辑,而它们只是在某种特定情况下才会用到时,可以使用这个模式。该模式可以把核心职责与装饰功能区分开,对“增加功能”来说比较灵活。举个栗子,需要在玩家类当中添加“穿戴袜子”,“穿戴鞋子”的功能:1.创建 Player类,并定义 Show 方法。2.定义服饰类 Finery ,该类继承 Player。由于袜子和鞋子存在穿戴顺序的问题,即需要先穿戴袜子再...

2020-02-10 15:00:58 93

原创 设计模式总结——代理模式

代理模式即 在访问对象的时候,引入一定程度的间接性,实现“当调用代理,从而调用实体”。分为“代理”和“实体”,“代理”和"实体"具有相同的接口,“代理”引用“实体”,并在共同的方法中调用“实体”。1.定义代理和实体的共同接口 Subject。2.RealSubject(实体),ProxySubject(代理)继承Subject。3.ProxySubject(代理)保存一个实体的引用...

2020-02-09 17:58:28 85

原创 设计模式总结——抽象工厂模式

抽象工厂是指当有多个抽象角色时使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。抽象工厂模式相对于工厂模式来说,就是工厂方法模式是针对一个产品系列的,而抽象工厂模式是针对多个产品系列的,即工厂方法模式是一个产品系列一个工厂类,而抽象工厂模式是多个产品系列一个工厂类。举个栗子,当项目中需要接入多个 SDK,每种 S...

2020-02-09 17:43:26 234

原创 cocoapods 的安装与使用

1 升级Ruby环境$ sudo gem update --system2 更换Ruby镜像首先查看当前镜像$ gem sources -l结果:*** CURRENT SOURCES *** https://rubygems.org/移除现有的Ruby镜像$ gem sources --remove https://rubygems.org/添加国内最新镜像源(淘宝的Ruby镜像已经不更新了)$...

2018-06-14 16:49:14 76

原创 Mesh 网格类

Mesh 网格类一个允许通过脚本来创建和修改meshes的类.网格(meshes)包括顶点和多个三角形数组。三角形数组仅仅是顶点的索引数组,每个三角形包含三个索引。每个顶点可以有一条法线,两个纹理坐标,及颜色和切线。虽然这些是可选的,但是也可以去掉。所有的顶点信息是被储存在单独的同等规格的数组中,所以如果你的网格(mesh)有10个顶点,你同样应该有大小为10的数组来存储法线和其它属性

2016-12-04 22:19:49 1121

原创 AssetDatabase

AssetDatabase是一个API,它允许您访问您的项目中的资源。它提供了查找资源、加载资源、创建资源,删除资源和修改资源的方法。Unity编辑器内部使用AssetDatabase保持跟踪资源文件和保持资源与引用它们的对象之间的关联。由于Unity需要保持跟踪项目文件夹中的所有更改,如果你想访问或修改的资源数据,你应该始终使用AssetDatabase API,而不是文件系统。Asse

2016-12-04 22:18:46 590

转载 通过自定义编辑器在场景和资源中创建一个四边形mesh,解决plane多三角形的问题

如果要在场景中现在一个图片,可以用plane。但是plane是由很多三角形组成,渲染效率会降低。因此可以通过脚本绘制一个由2个三角形构成的四边形代替plane.usingUnityEngine;usingUnityEditor;publicclassAssetDatabase_Test:ScriptableWizard{       publ

2016-12-04 22:15:12 307

原创 unity-定制自己的编辑器

unity的两种脚本:     1.标准脚本(继承MonoBehaviour)     2.编辑器脚本,运行在编辑器上,需放在Editor文件夹中(继承EditorWindow,EditorUtility,ScriptableWizard,ScriptableObject)注:ScriptableObject小功能,不需要窗口       ScriptableWizard :脚本化

2016-12-04 13:12:05 312

转载 unity-菜单MenuItem的使用

最简单的用法:[MenuItem("Tools/ClearPlayerPrefs")]此外,还有很多用法。添加快捷键%-CTRL 在Windows / CMD在OSX# -Shift& -AltLEFT/RIGHT/UP/DOWN-光标键F1…F12HOME,END,PGUP,PDDN注:字母键不是key-sequence的一部分,要让字母键被添加到key-

2016-12-04 12:39:07 5310 1

原创 关于OnLobbyServerSceneLoadedForPlayer和OnLobbyServerCreateGamePlayer在LobbyManager中没有执行的解决办法

今天发现写的NetworkLobbyManager的一个子类LobbyManager在从lobby场景转换到game场景时没有生成gamePlayerPrefab,即使面板的GamePlayerPrefab槽中已经放置了预制体。原因是覆写的public override bool OnLobbyServerSceneLoadedForPlayer(GameObject lobbyPlaye

2016-09-02 20:12:00 1158

空空如也

空空如也

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

TA关注的人

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