- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 AssetBundle系列(二)
AssetBundle 与 UWRAssetBundle 下载AssetBundle 缓存为了使用 WWW 或 UnityWebRequest (UWR) 来优化 LZMA AssetBundle 的提取、再压缩和版本控制,Unity 有两种缓存: 内存缓存以 UncompressedRuntime 格式将 AssetBundle 存储在 RAM 中; 磁盘缓存将提取的 AssetBundle 以下文描述的压缩格式存储在可写介质中。 将 AssetBundle 加载到内存缓存
2021-04-21 23:07:56
185
原创 AssetBundle系列(一)
AssetBundle简介Unity中的资源加载方式场景资源在场景中被直接引用的资源可以不用打包,将直接进包,随场景加载,但并不推荐ResouorcesResuorces资源存放于Unity工程Asset目录中任意Resources目录下。Resuorces目录中的资源不论是否使用都会打包进入Apk中,并且会被加密。加载方式:Resources目录下的资源可以通过Resources.Load加载;Resources类也提供了Resources.LoadAssetAtPath方法在编辑器下加
2021-04-21 23:06:35
349
原创 Unity基础知识回顾(二)渲染顺序
渲染顺序Unity排序优先级相机 DepthRendererQueue(0~2500)透明物体(UI/特效层) SortLayer透明物体(UI/特效层) SortOrderRendererQueue(2501~5000)示意图相机相机的排序一定是最高级,按照相机depth升序渲染,depth越小越先渲染;RendererQueue 0~2500在同一个相机之下,优先渲染不透明物体,并按照RendererQueue升序排序,RendererQueue越小越先渲染。注意:因为有深度
2021-04-21 23:04:14
804
原创 Unity基础知识回顾(一)DrawCall、Batch、SetPassCall的区别
内建管线Unity渲染流程一次渲染批次(batch):设置渲染状态(材质、顶点数据等),调用DrawCall绘制因此当场景中有不同的mesh对象,使用不同的材质时,他们会分别进行渲染设置并调用DrawCall合批是对这种情况的优化,当多个不同的mesh使用的材质相同时,满足一定条件下,Unity会将他们的模型顶点合并,一次传递给GPU(材质、顶点数据)。之后再对每个子模型分别调用DrawCall进行绘制。因此合批会将多个相同材质的mesh在一个批次进行渲染,不会降低drawcall,但是会减少
2021-04-21 23:02:30
5707
原创 Unity Shader中各部分定义内容详解
Unity Shader中各部分定义内容详解样板Shader "Practice/Unlit/SimpleUnlit"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Num ("Float", float) = 0 _RangeNum ("Range Number", Range(0, 1)) = 0 } Sub...
2019-03-21 19:53:27
3584
原创 观察者模式和委托事件
观察者模式定义观察者模式(Observer Pattern)——在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。具体的说目的是 “类A想在类B变化的时候得到消息,从而跟着变化”最简单的方式,双向关联: 类A知道类B,并在一定时期将自身告诉类B 类B持有类A的对象,并在自身变化的时候调用类A的方法 这种方式不好的地方在于造成了双向...
2019-03-08 18:12:30
247
原创 命令模式
命令模式定义命令模式(Command Pattern)——是将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。解释正常来说,我们将一步操作分为调用方和执行方,这样二者各司其职,符合单一职责原则。例如:将一个方块左移一步,执行方有一个Move方法,调用方传递参数并调用执行方的方法去执行。命令模式是将调用方和执行方...
2019-03-05 18:24:02
165
原创 模板方法模式
模板方法模式定义模板方法(Template Method)——在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。解释:从类图上来看,模板方法非常简单,就是一个 继承 关系。从目的来看,模板方法就是就是将方法的实现延迟到子类中去:同一类相同的方法在父类中实现,不同的方法在子类中实现在抽象类方法中调用一...
2019-03-04 19:19:46
150
原创 代理模式
代理模式定义代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问。解释:代理模式是为实际对象提供一个代理来访问,实现方式是 代理同实际对象继承自同一个接口,代理持有实际对象,并且对实际对象的访问都通过代理来进行,因为代理可以控制对该对象的访问。简单的说:对于一个类,继承于他的抽象并持有他,然后控制对他的访问UML代码首先我们有一个抽象及其实现namespace...
2019-03-04 10:34:33
117
原创 享元模式
享元模式定义享元模式(Flyweight) 运用共享技术有效地支持大量细粒度的对象。解释: 大量的对象会出现两个问题:1.内存的大量占用;2.大量对象的创建和销毁时间; 享元模式就是用一种方法去共享“元件”,以减少内存占用和对象数量UML成员在享元模式中,我们将对象成员分为: 1.内在状态 由享元对象自己保存内部状态 2.外在状态 可以动态改变,享元对象需要用到外...
2019-02-28 18:56:53
104
原创 外观模式
外观模式定义外观模式(Facade) “为子系统定义一组统一的接口,这个高级的接口会让子系统更容易被使用”解释: 外观模式其实相当容易理解,假设我们有非常多的子系统,每个系统各自又有很多的接口,这使得这些系统阅读和使用起来非常不便,而一般的客户并不关心子系统的细节,他们只关注于有限的一些内容,所以我们需要一个门面(facade)去让他能够更简单的使用这些系统。UML相当容易理解...
2019-02-27 18:48:08
141
原创 组合模式
组合模式定义组合模式(Composite)主要用来处理一类具有“容器特征”的对象——即它们在充当对象的同时,又可以作为容器包含其他多个对象。成员:节点抽象:Component叶子结点:Leaf,继承自Component枝干节点:Composite,继承自Composite解释:其实就是一个树形对象,类似于Unity的Transform,可以通过这个对象获取到他的子物体的对象对于...
2019-02-26 20:14:00
206
原创 装饰模式
装饰模式定义装饰者模式(Decorator Pattern) 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。简单概括就是:对于一个类,继承他并持有他,然后拓展他的功能UML我们有一个Component类及其实现ConcreteComponent现在做一个装饰类Decorator,并实现装饰器A和...
2019-02-25 19:09:55
224
原创 桥接模式
桥接模式定义 桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。 桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。UML理解 以上两句话结合桥接模式个人理解是这样的: 1.在抽象层面上,是抽象A和抽象B 关联/聚合 2.在具体实现上,抽象A可以独立拓展,而抽象B也可以独立拓展 举个例子: 1.角...
2019-02-22 20:02:49
548
原创 适配器模式
适配器模式定义将一个类的接口转换成客户希望的例外一个接口,Adapter 模式使得原本由于接口不兼容二不能一起工作的那些类可以一起工作。角色Target(目标类):客户希望使用的类或接口Adaptee(被适配的类):需要被适配的类Adapter(适配器):继承自Target,包装一个Adaptee的对象,并将其接口的原方法转换为目标类的方法UML图代码Target类或接口na...
2019-02-21 19:08:56
202
原创 关于创建型模式的理解
关于创建型模式的理解单例模式 单例模式简单一言概括,就是对静态类的优化,一种可以储存中间态的“静态”模式 使用单例模式需要注意懒汉、饿汉的区别和多线程的限制原型模式 原型模式属于一种优化模式,就是只创建一次对象,而之后用到的时候“克隆”对象,以优化创建过程,对于复杂对象,可以直接克隆而避免创建和组装,或者干脆就是对产品子模块进行克隆后组装到新的产品。 在c#中,浅克隆是默认方法...
2019-02-19 18:27:17
367
原创 建造者模式
建造者模式建造者模式的定义 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 通俗点讲: 1.建造者是一种创建型模式,目的是创建所需要的对象 2.同工厂模式不一样的是,建造者的重心在如何组装对象而不是如何new对象建造者模式的角色 1.产品 要创建的产品 2.抽象建造者 定义了组装产品的组装步骤 3.具体建...
2019-02-19 18:24:38
141
转载 【转】C#利用反射创建对象
“反射”其实就是利用程序集的元数据信息。 反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间。1、假设你要反射一个 DLL 中的类,并且没有引用它(即未知的类型):Assembly assembly = Assembly.LoadFile(“程序集路径,不能是相对路径”); // 加载程序集(EXE 或 DLL)dynamic obj = assembly....
2019-02-18 11:03:41
529
原创 抽象工厂
抽象工厂对比抽象工厂和工厂方法工厂方法中,有一个抽象产品和一个抽象工厂,然后具体产品由具体工厂来生产抽象工厂中,有多个抽象产品,一个抽象工厂,然后多个具体工厂都能生产这两类产品,只不过生产出来的具体产品并不相同举例来说: 苹果和小米都生产手机、平板、电脑,他们是两家具体的工厂,都生产这三个等级的产品 苹果、小米各都是一个产品族 我们三个抽象产品,分别是手机、平板、电脑 我们...
2019-02-15 20:18:43
245
原创 工厂方法
工厂方法简单工厂的优缺点优点: 将子类的创建与具体的应用场景解藕,使得修改和新增产品类型时只需要维护工厂,而不用考虑实际应用场景缺点: 1.在新增和修改产品创建时,依然要修改工厂,违反了开闭原则,随着类型的增多将不断增加该类的逻辑 2.工厂类集中了所有产品的创建逻辑,一旦发生问题将影响整个系统工厂方法 工厂方法通过对工厂进行一次抽象,将具体产品的创建交给具体工厂去完成,从而...
2019-02-14 19:03:16
268
原创 简单工厂
简单工厂简单工厂的意义在于,将子类的创建放在工厂中一起创建,防止子类拓展或修改后,对上层调用的影响没有工厂的情况假设我们知道手机这个类,以及它的子类iPhoneXs、VivoPhonepublic class PhoneBase { public virtual void Show() { Debug.Log("My Phone Name : "); ...
2019-02-13 19:29:15
250
原创 Unity中常用的单例模式
基本单例懒汉模式用到时才创建的单例模式//单例模式// 懒汉 在使用时才创建// 缺点:不适用于多线程// 私有化构造函数public class SingletonTest_Base{ private static SingletonTest_Base instance; public static SingletonTest_Base Instance { get ...
2019-02-11 19:10:28
446
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人