自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 光照烘培系统-1

光照贴图(Lightmap)将静态物体所受光影效果,提前计算渲染到一张贴图中,引擎运行时,取贴图计算物体所受光影效果,在保障画面的同时,减少实时光影计算,提高渲染效率,采用的是全局光照技术。Global Illumination 全局光照(GI)全局光照 = 直接光照(Direct Light) + 间接光照(Indirect Light)直接光照 = 光源发出的光线照射到物体上...

2020-02-01 21:35:00 674

转载 Unity AssetBundle 热更 资源生成对应 MD5码

Unity AssetBundle 热更 资源生成对应 MD5码每个热更 AssetBundle 文件对应一个MD5码,写入一个 更新文件如update.txt,当有版本更新时,将update.txt 放到服务器,客户端在启动游戏时,首先会从服务端请求一下当前最新版本号,和本地的版本号比较,如果客户端和服务器版本号一致,则视为客户端为最新版本不需要更新,进入游戏。如果客户端版本号低于最新...

2019-12-02 23:56:55 1657

原创 Lua性能优化

Lua CPU性能优化1.使用局部变量自 5.0 版起,Lua 使用了一个基于寄存器的虚拟机。这些「寄存器」跟 CPU 中真实的寄存器并无关联,因为这种关联既无可移植性,也受限于可用的寄存器数量。Lua 使用一个栈(由一个数组加上一些索引实现)来存放它的寄存器。每个活动的(active)函数都有一份活动记录(activation record),活动记录占用栈的一小块,存放着这个函数对...

2019-12-02 21:30:02 2556

原创 为什么用Lua进行热更新?

1.Unity一般使用C#代码实现逻辑,真正让手机执行C#写的逻辑步骤如下: 1.C#代码预先编译成IL,然后把IL存到动态链接库中(.dll文件)。 2.JIT编译,程序运行时,将.dll文件中的IL解释为所在平台的机器码,开辟一段内存空间,要求这段内存空间可读、可写、可执行,然后CPU执行之前解释出来的机器码。 其中涉及到两个东西:1.1 IL 中间语言(中间代码)...

2019-11-29 22:07:27 2812

转载 使用DoTween在Unity中制作队列(Sequence)动画

DoTween是Unity上的一款动画插件,它使用简单,功能强大,利用它可以很方便地制作一些简单动画。而即使是一些较为复杂的队列动画,对它来说也不在话下。开始使用首先,访问AssetStore,搜索DoTween,下载该插件的免费版即可。下载完成后,在Unity菜单栏中点击Tools->Demigiant->DOTween Utility Panel ,在他弹出的窗口点击Se...

2019-11-12 11:28:22 9855

原创 Unity-Android真机调试(Profiler性能分析和Log打印)

1.Android-Profiler连接USB连接,打开adb,真机连接Profiler性能分析器。1.1 打包-点击Build And Run。1.2 打开adb连接(记得打开Android设备USB调试选项)首先运行程序然后命令行进入adb的上一级文件夹。(adb在androidsdk/platform-tools下)最后打开连接:adb forward tcp...

2019-09-05 16:06:17 1579

原创 Android Studio环境配置

JDK安装和环境变量配置1.安装JDK(https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html)2.JDK环境变量配置然后选择Path,出现以下:使用以下命令行,出现下图所示,即为变量配置成功。Android Studio 安装和SDK下载...

2019-08-07 17:28:21 1139

转载 Xcode打包-CocoaPods安装

CocoaPods简介:CocoaPods是一个用Ruby写的、负责管理iOS项目中第三方开源库的工具,CocoaPods能让我们集中的、统一管理第三方开源库,为我们节省设置和更新第三方开源库的时间。CocoaPods安装:下面就正式开始安装CocoaPods,命令中间可能有空格看不出来,建议直接复制粘贴执行;因为Mac电脑自带Ruby环境,我们就只需打开终端开始动手。然而又因为默...

2019-08-05 11:03:16 340

原创 UnityWebRequest

1.UnityWebRequest介绍UnityWebRequest封装了网络请求,支持http、https、file、和匿名ftp协议的请求以及处理。UnityWebRequest请求相关元素UploadHandler 处理数据 将数据发送到服务器的对象 DownloadHandler 从服务器接收数据的对象 UnityWebRequest 负责 HTTP 通信流量控制来管理...

2019-08-02 20:27:35 2418

原创 Chapter15_使用噪声

消融(dissolve)效果:原理:噪声纹理+透明度测试1.使用噪声纹理的采样结果和某个阈值比较,小于阈值,使用clip函数把它对应的像素裁剪掉,这对应了图中的烧毁区域。 2.烧焦效果则是将两种颜色混合,再用pow函数处理后,与原纹理颜色混合后的结果。// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld...

2019-06-20 23:10:29 154

原创 Chapter14_非真实感渲染

非真实感渲染(Non Photorealistic Rendering,NPR),用于卡通,水彩风格渲染。卡通风格渲染(黑色描边,分明的明暗变化)基于色调的着色技术(tone-based shading),使用蓝色来模拟冷色调,使用黄色来模拟黄色调,来实现从冷到暖的色调变化,为了更加真实的模拟,还可以模型本身的漫反射颜色进行混合来得到最终的冷暖色调。实现中一般使用漫反射系数对一张一维纹...

2019-06-10 00:17:08 290

原创 Chapter13_使用深度和法线纹理

深度纹理深度纹理实际就是一张渲染纹理,只不过它里边存储的是像素值不是颜色值,而是一个高精度的深度值。顶点坐标转化到NDC(归一化的设备坐标)下的坐标的z分量就是顶点的深度值。NDC中,z分量范围在[-1,1],为了让z分量可以存到一张纹理中,需要使用公式将z分量映射: ...

2019-05-29 09:36:32 261

原创 Chapter12_屏幕后处理效果

1.定义:屏幕后处理通常指在渲染完整个场景得到屏幕图像后,再对这个图像进行各种操作,实现各种屏幕特效。使用屏幕后处理技术,可以实现景深(Depth of Field),运动模糊(Motion Blur)等。2.实现步骤2.1 先抓取屏幕图像,调用方法如下: monoBehaviour.OnRenderImage(RenderTexture sr...

2019-05-20 19:49:19 252

原创 Chapter11_纹理动画

序列帧动画Shader "Chan/SqueueAction"{ Properties { _Color("Main Color",Color) = (1,1,1,1) _MainTex("Main Tex",2D) = "white"{} _HorizontalAmount("Horizontal Amount",Float) = 8 _VerticalAmount("...

2019-04-28 17:30:16 264

原创 图形学中的基本概念

目录UV纹素(Texel)Material Tiling 和 OffsetUV1.为什么需要UV坐标?使用纹理映射(texture mapping)技术,即把2D图像映射到3D模型三角形表面。ex:左边是两个三角面,右边是一个贴图,把一张图片映射到2个三角形上。2.什么是UV坐标?在纹理映射过程中,我们使用纹理坐标的方式(或称u、v坐标),把纹理进...

2019-04-24 23:01:26 2029

原创 Chapter10_高级纹理

1.立方体纹理用于实现环境映射。模拟物体映射周围的环境。立方体纹理包含六张贴图(前后左右上下)。局限:场景发生变化(物体,光源增减,物体位置变化),立方体纹理就得重新生产。1.1 立方体纹理创建方式直接使用带特殊布局的纹理。然后设置TextureTpye = Cubemap即可。Unity官方推荐使用 创建一个Cubemap,然后提供前后左右上下六张贴图。 调用Camera.R...

2019-04-21 21:19:53 351

原创 Chapter9_光照

渲染路径(Rendering Path)渲染路径决定了光照如何应用到Shader中,决定了把光源信息和处理后的光照信息放到那些数据中。全局渲染路径设置(Edit->ProjectSetting->Graphics)单个摄像机设置渲染路径四种渲染路径设置:Deferred(延迟渲染) Forward(前向渲染) Legacy Vertex Lit(遗留顶点照明渲染) ...

2019-04-09 22:32:56 303

原创 Shader8-透明效果

Z缓冲区(Z-Buffer)算法当要渲染一个片元时候,需要把它的深度值和已经存在于z缓冲器中的深度值进行比较(如果开启了深度测试),如果该片元值较小,该片元的z值应该覆盖掉对应单元颜色缓冲区中的颜色值。并将该片元深度值写入z缓冲器中。如果该片元深度值和z缓冲器中对应单元已有的值比较,值较大。表明有物体遮住了它,该片元不被渲染。参考:https://www.cnblogs....

2019-04-04 23:28:17 330

原创 UGUI-Unity2017生成图集,加载图集

Unity2017及以上版本生成图集加载图集public class UnitySingleton<T> : MonoBehaviour where T:Component { private static T _instance; public static T GetInstance() { if(_insta...

2019-03-30 23:36:33 2128

原创 Shader7-基础纹理

1.纹理映射(texture mapping)将纹理空间中的纹理元素映射到屏幕空间中的像素的过程。(表象就是把图像映射到模型三角形表面)ex:左边是两个三角面,右边是一个贴图,把一张图片映射到2个三角形上。在纹理映射过程中,我们使用纹理坐标的方式(或称u、v坐标),把纹理进行划分。UV(纹理映射坐标)它定义了图片上每个点的位置的信息,将图像上每一个点精确对应到模型表面。无论模型贴图...

2019-03-20 22:38:18 508

原创 Shader6-基础光照

光学概念简单介绍1.辐射照度量化光的单位(W/m²)2.光线与物体相交,要么被散射要么被吸收1.散射:(改变光线方向,不改变光线密度和颜色) 散射到物体内部,称为折射或透射。折射到物体内部的光线,有些还会重新发射出物体表面。 另一种散射到物体外部,称为反射。2.吸收:(改变光线密度和颜色,不改变光线方向)光照模型1.标准光照模型(Blinn Phon...

2019-03-11 23:24:50 231

原创 Shader5-简单的Shader & Unity内置文件和变量 & CG语义

最简单的Shader:Shader "Chan/Shader_5_All" {Properties{//面板定义属性_Color("Color Tint",Color) = (1,1,1,1)}SubShader{Pass{CGPROGRAM...

2019-03-03 23:51:31 278

原创 Shader3-Unity中的基本着色器

Unity中的Shader模板Standard Surface Shader 包含了标准光照模型的表面着色器 Unlit Shader 不包含光照(包含雾效)的基本顶点/片元着色器 Image Effect Shader 屏幕后处理特效模板 Compute Shader 利用GPU并行性,处理与常规渲染无关计算 Shader Variant Collection 减少Shader变体,...

2019-03-03 15:47:26 235

转载 Git 使用指南

https://www.cnblogs.com/mjbin/p/5820942.htmlGit简介:Git是分布式的,这意味着它并不依赖于中心服务器来保存你文件的旧版本。任何一台机器都可以有一个本地版本的控制系统,其实就是一个硬盘上的文件,我们称之为仓库(repository)。如果是多人协作的话,你还需要一个线上仓库,用来同步代码等信息。1.安装Git2.配置Git(记录操作谁干...

2019-03-01 18:13:57 269

原创 Unity AssetBundle加载和内存管理

AssetBundle资源加载一个AssetBundle中包含两部分:数据头和数据段。通过AssetBundle加载游戏资源,分为三步: 加载AssetBundle对象。 通过AssetBundle对象加载需要的资源。 对于非引用类型的资源,还需通过GameObject.Instantiate()创建clone。1.加载AssetBundle对象方式Asset...

2019-01-16 17:29:51 3490

原创 Unity AssetBundle打包

1.方式1-设置AssetBundleName打包设置AssetBundleName 调用打包函数。Unity会将AssetBundle相同名字的资源打包到一个AssetBundle中。AssetBundle设置Name由两种方式:1.编辑器编辑,如上图。2.代码修改(一般都是代码修改,AssetBundleName有斜杆,会斜杆前会创建文件夹,例如chen/logo,会在...

2019-01-15 15:33:09 896

原创 Unity AssetBundle介绍

1.什么是AssetBundle?AssetBundle是一种资源压缩包。资源打包AssetBundle有两个好处:减小安装包的大小,资源可以在进入游戏时候,网络下载。 热更资源,方便修复线上资源问题引起的Bug,或新增加游戏内容。AssetBundle分为两种类型:场景AssetBundle & 非场景AssetBundle。2.AssetBundle结构2.1 As...

2019-01-13 23:33:05 2012

转载 【基本算法-1】二分法排序,查找

二分法排序: void Start() { int[] tempArrayList = new int[11]{3,4,7,3,2,1,11,9,6,1,121}; HalfSort(tempArrayList); for(int i = 0;i &lt; tempArrayList.Length;i ++) ...

2018-12-14 11:57:58 190

转载 【设计模式-10】迭代器模式

Iterator(迭代器) 负责定义访问和遍历元素的接口 ConcreteIteraror(具体迭代器) 实现迭代器接口,并需要记录遍历中的当前位置 Aggregate(聚合角色) 定义获得迭代器角色的接口 ConcreteAggregate(具体聚合角色) 具体聚合角色实现聚合角色接口 定义:迭代器模式提供了一种方法顺序访问一个聚合对象(理解为集合对象...

2018-12-11 23:08:08 92

原创 【设计模式-9】观察者模式

参与者:Subject(抽象主题) 把所有观察者对象的引导保存到一个聚集里,每个抽象主题里边可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。 ConcreteSubject(具体主题) 实现抽象主题接口,当状态发生变化时,发送消息通知给聚集里观察者 Observer(抽象观察者) 为所有具体观察者定义一个接口,在得到主题通知时,更新自己。一...

2018-12-11 18:25:41 795

原创 【设计模式-8】适配器模式

适配器结构图:Target(目标接口) 可以是接口或抽象类,由于c#不支持多类继承,因此把Target定义为接口 Adaptee(需要适配的类接口) 不满足当前条件,需要转化的类 Adapter(适配器) 负责Adaptee的接口与Target接口进行适配 优点:通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单、更直接、更紧凑。...

2018-12-04 23:32:36 91

原创 【设计模式-7】代理模式

在代理模式中,由于Proxy与RealSubject继承同一接口,所以Client调用RealSubject可以转化为Client调用Proxy再调用RealSubject,类Proxy为中间代理。优点:职责清晰:真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件事务,编程简洁清晰; 高扩展性:具体主题角色是随时都会发生变化的,只要它实现了接口,甭管...

2018-12-03 22:45:57 83

原创 【网络协议-3】Socket

1.Socket(套接字):Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),Socket只是为了更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,提供给我们一些最基本的函数接口。流式套接字(SOCK_STREAM):流式套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流式套...

2018-11-29 10:50:19 143

原创 【设计模式-6】策略模式

策略模式策略模式是对算法的封装,把一系列算法封装到对应的类中。并且这些类实现相同的接口,相互之间可以替换。它把算法的责任和算法本身分割开,委派给不同的对象管理。优点策略模式的优点策略模式提供了对“开闭原则”的完美支持,用户可以在不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法或行为。 策略模式提供了管理相关的算法族的办法。 策略模式提供了可以替换继承关系的...

2018-11-29 10:49:47 89

原创 【设计模式-5】模板方法模式

模板方法模式     优点:提高代码复用性  将相同部分的代码放在抽象的父类中 提高了拓展性  将不同的代码放入不同的子类中,通过对子类的扩展增加新的行为 实现了反向控制  通过一个父类调用其子类的操作,通过对子类的扩展增加新的行为,实现了反向控制 &amp; 符合“开闭原则”     缺点:     每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大...

2018-11-29 10:49:11 91

原创 【设计模式-4】工厂模式(简单工厂,工厂方法,抽象工厂)

简单工厂模式(Simple Factory) 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。创建在一个类中,客户无需知道具体产品的名称,只需要知道产品类所对应的参...

2018-11-29 10:48:52 139

转载 【设计模式】设计模式6大原则

原贴:http://www.manew.com/thread-22531-1-1.html单一职责原则例如:class Animal{    public void breathe(string animal)    {        Debug.Log(animal+"呼吸空气");     }}public class Client{    Animal ani...

2018-11-29 10:47:53 140

转载 【设计模式-2】单例模式

优点:内存在系统运行过程中只有一个实例,减少内存开销。 允许可变数目的实例 其他类通过唯一的全局实例,可以方便访问单例中的方法和变量。 单例可在第一次使用时候,进行实例化,不必在系统刚启动就初始化。一定程度上可以控制自己实例化进程。缺点:过多的其他类中通过单例访问全局方法和变量,可能跟其他类造成过度耦合。 没有接口扩展困难 过多的单例,造成性能问题适用场景: 资源共享的情...

2018-11-29 10:47:42 158

转载 【网络协议-3】TCP/UDP协议

TCP报头格式:一共20个字节;源、目标端口号字段:各占2个字节,18比特。TCP协议通过使用”端口”来标识源端和目标端的应用进程。端口号可以使用0到65535之间的任何数字。在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。在服务器端,每种服务在"众所周知"的端口”(Well-Know Port)为用户提供服务。 Sequence number(顺序号码) Acknow...

2018-11-29 10:47:20 241

原创 【Untiy3d-编辑器相关4】ScriptableObject,EditorWindow,ScriptableWizard

继承关系:(基类)Object -&gt; ScriptableObject -&gt; EditorWindow -&gt; ScriptableWizardScriptableObject:将数据存储在资源文件中,运行时修改退出也会保存。一般编辑器使用较多。类似通过Serializable + Class + Prefab实现存储数据时候,就可以考虑下能不能用ScriptableO...

2018-11-23 22:55:53 644

空空如也

空空如也

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

TA关注的人

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