自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (3)
  • 收藏
  • 关注

原创 Unity Shader编程】之FallBack

回退到Unity标准PBR Shader,适用于希望保持物理渲染效果但主Shader失效的情况(需兼容Built-in管线)。在不同渲染管线(如Built-in、URP、HDRP)中,某些Shader可能失效。支持漫反射+高光反射(Blinn-Phong模型),适用于金属、塑料等需镜面反射的材质。支持透明度测试(Alpha Test),适用于树叶、镂空贴图等需硬边缘裁剪的物体。针对移动端优化的漫反射Shader,去除非必要计算(如动态阴影)。仅支持漫反射光照,适用于无高光需求的材质(如布料、纸张)。

2025-03-27 21:33:05 523

原创 Unity Shader编程】之复杂光照

在Unity Shader的LightMode标签中,除了前向渲染和延迟渲染外,还支持多种渲染模式设置。以下是主要分类及用途:一、核心渲染路径模式前向渲染相关ForwardAdd延迟渲染相关Deferred二、辅助功能模式3. 阴影处理三、特殊用途模式5. 无条件渲染AlwaysVertexVertexLM四、选择建议DeferredForwardAdd。

2025-03-24 20:56:17 836

原创 【Unity Shader编程】之透明物体渲染

unity shader的透明物体渲染,主要是要控制好渲染队列以及是否开启深度写入,当遇到透明渲染队列需要关闭深度写入,以防半透明或者透明物体写入的时候,导致后面的不透明物体因为深度写入的判断杯丢弃,并且半透明或者透明物体,需要在不透明物体之后渲染,而半透明物体渲染,需要渲染前后两面,因而,需要两个pass,一个先渲染背面,另外一个再渲染正面,达到双面渲染的状态。第一个 Pass 的深度写入为第二个 Pass 提供了逐像素的深度基准,而第二个 Pass 仅依赖此基准进行混合(不修改深度缓冲)。

2025-03-24 01:38:58 427

原创 Unity Shader 的编程流程和结构

渲染顺序:在不透明物体之后渲染(光照模式:处理主光源和环境光(投影器影响:不受 Projector 影响(渲染类型:标记为透明物体(这种组合非常适合需要透明效果的 Shader,例如玻璃、粒子或水面。Unity Shader Tags 是控制渲染行为的核心工具。通过合理设置 Tags,你可以调整物体的渲染顺序、光照处理方式以及其他特性。希望这个回答能帮到你!如果有更具体的问题,请告诉我,我会进一步解答。Pass:每个 Pass 定义一次渲染过程,包含顶点着色器和片段着色器。

2025-03-21 23:56:04 1143

原创 Unity Shader编程】之透明物体渲染

查看 Pass:通过 Shader 代码或 Frame Debugger 分析。多个 Pass 影响:增加 Draw Call 和复杂性,需优化。Pass 含义:一次渲染操作,可实现多阶段效果。渲染流程:初始化 → 剔除 → 排序 → 渲染 → 输出。多物体处理:通过 Tags 和 Queue 控制顺序,结合 Alpha 混合/裁剪优化效果。

2025-03-21 23:51:31 1015

原创 Unity Shader编程】之渲染流程之深度及pass详解

手动不通过深度测试的方式可以通过禁用深度测试、控制深度写入、在片段着色器中使用discard,或者手动修改深度值等方法来实现。你可以根据具体需要选择其中一种或多种方式来控制渲染的行为。你有什么具体的应用场景或效果需要实现吗?我可以帮你提供更详细的实现建议。在物体通过测试之后才会进行深度写入玻璃在墙前面时,通过深度测试的像素会被绘制。绘制时,玻璃的颜色与背景颜色通过混合,而不是简单相加。混合公式是加权和,权重由玻璃的 Alpha 值决定,确保透明效果自然且符合视觉预期。

2025-03-19 16:26:45 849

原创 Unity Shader编程】之基础纹理

‌切线空间特性‌:切线空间由顶点‌切线(T)‌、‌副切线(B)‌、‌法线(N)‌构成,法线贴图存储的是该空间下的法线偏移‌。在此空间下,法线方向‌无需依赖模型姿态‌,仅需将光照方向、视角方向等外部向量转换到切线空间,即可直接参与计算‌13。

2025-03-08 01:09:49 948

原创 【Unity Shader编程】之常见函数及变量总结

以上列表涵盖了 Unity Shader 中最常用的函数和变量,以及基础运算函数。这些工具广泛应用于光照计算(如dotreflect)、纹理采样(如tex2D)、矩阵变换(如mul)和动画效果(如_Time掌握这些函数和变量,可以帮助你高效实现各种视觉效果。

2025-03-06 13:43:37 831

原创 向量详细解释

向量意义表示方向,例如从A指向B,得到方法,从B的坐标减去A,就得到了A指向B的向量表示长度。

2025-03-05 00:29:33 637

原创 【Unity Shader编程】之光照模型

高光反射,主要是利用,摄像机和反射角的夹角来判断,但夹角越小,说明名高光反射越强,所以利用点乘来计算,假设一下,你看着镜子,反射光直照射你的眼睛,是不是代表着反射强度越大,所以第一种phone模型一种是先求出光线反射角,然后计算光线反射角与摄像机视角的点积,但可能因夹角超过 90° 导致高光断层。漫反射光强 = S_diff * m_diff * max(dot(n, l), 0)基于菲涅尔效应:rim=pow(1.0-dot(N,V),_RimPower)S_diff:光源漫反射颜色(含强度)3。

2025-03-04 22:16:41 868

原创 【Unity Shader编程】之图元装配与光栅化

示例:gl.drawArrays(gl.TRIANGLES, 0, 3)自动生成三角形。会自动自动裁剪超出屏幕范围(NDC空间外)的三角形,仅保留可见部分。顶点坐标存入装配区 → 按绘制模式连接顶点 → 生成完整几何图元。

2025-02-18 17:00:20 239

原创 【Unity Shader编程】之顶点着色器

在shader编程中,定义的结构体,有些是会被自动赋值,有些是必须要手动赋值的,这就涉及到了例如结构体里面定义的两个变量 vertex和uv,后面加了POSITION和TEXCORD0两个语义,就赋予了他们不同的特殊功能,他们会被自动赋值,而vertex2就是一个普通的变量了。下面是语义表**

2025-02-13 18:21:51 361

原创 【Unity Shader编程】之GPU编程前言

之前一直不懂,为什么写一个shader代码,然后整个模型就会动,因为之前都是cpu编程思路,比如说cpu控制一个人物行走,就是控制一个人物,要控制10个人物,就要循环10次,分别控制他们,但是在gpu不一样,因为gpu编程是并行性,你写完gpu的编程,写完shader,是直接挂在单一物体上,这个时候,我们控制的是这个物体,但是控制的是这个物体的什么呢?1,顶点。

2025-02-13 17:27:07 317

原创 《大规模动画优化(一):GPU 顶点动画的生成》

步骤代码操作作用获取角色网格选择要烘焙的角色启动动画模式让 Unity 进入动画编辑模式逐帧采样动画让角色停留在特定动画帧获取顶点数据采集当前帧的蒙皮网格数据存储到纹理SetPixel()将动画帧存入 Texture2D保存文件导出动画数据纹理✅ 烘焙后的动画纹理可以直接用于 GPU 渲染,实现海量动画角色的高效渲染!附上完整代码/// GPU 顶点动画烘焙窗口public class 角色动画烘焙窗口类 : EditorWindow。

2025-02-07 16:01:31 913

原创 (框架搭建一)之代码和主工程分离

框架搭建

2025-01-12 01:34:55 721

原创 查找项目中丢失脚本的物体

可以一键查找出来丢失的脚本物体列表,也可以一键清除脚本物体列表。"工具/丢失脚本的物体列表"

2024-08-09 14:09:04 224

原创 写个进度条

unity的slider用的一言难尽,各种变形。

2024-05-15 11:09:07 419

原创 Unity之Image图片挖洞

UGUI图片进行挖洞

2024-05-15 09:57:12 704

原创 Unity导出Android studio项目遇到的aar无法打包问题

传递依赖也会有问题,例如 a.aar->module A->module B,就算module B依赖了module A,module A依赖了a.aar,这时候依旧会出问题正确的办法是要a.aar->module B 且 a.aar->module A,即无论moduleA moduleB都依赖a.aar。解决方法:将引入的aar包变成一个module,让其他需要的模块可以随时引用,这样的好处在于,不需要将aar包复制来复制去,每个module都copy一份到libs中。也不会出现重复依赖的问题。

2024-02-19 10:05:31 866

原创 【Unity嵌入Android原生工程】

工作需要嵌入原生工程,并实现热更,记录一下工具,Unity2023.3.14,Android Studio 2022.3.1 patch3Unity嵌入Andorid原理就是把Unity导出的Andorid项目当成一个module导入原生工程里面,从而实现嵌入。前面有不少教程,但是总有漏掉那么一两部,要么作者没写,要么没有明确标注,踩了两天坑,发了这个想对自己看的懂的教程,自己踩的坑,记录一下。

2024-01-02 10:36:20 2000

原创 Unity自动添加添加tag,layer

【代码】Unity自动添加添加tag,layer。

2022-10-12 11:29:36 840

原创 Unity粒子动态更改层级

简单直接,使用这个就行了,获取到Renderer。

2022-08-11 17:55:16 1458

原创 Unity之更新资源(手动造轮子)

1,我们首先要知道我们需要是否第一次安装,如果是那则直接从服务器下载配置文件和本地配置文件对比,进行资源更新。第一次安装本地是没有配置文件的,所以就相当于把服务器所列出的所有资源全部下载。2,对比配置文件并保存需要下载的文件列表,启动下载器,下载全部完成再更新配置文件,不要提前更新配置文件,避免文件更新完缺导致我们要下载的东西没下载完。"QFramework/生成配置文件,位于StreamingAssets"下载需要自己搭建个本地服务器,ip地址自己改下。下载下来之后就可以加载了。这是一个下载的管理器。..

2022-08-11 17:39:15 756

原创 Unity路径点相关,会持续更新

1.在windows pc上可以使用www直接读取streamingAssetsPath路径下的文件。也可以使用File直接读取。2.android上www可以读取streamingAssetsPath,但是使用file是读取不到的。3.mac上使用www读取不到streamingAssetsPath,可以使用file读取。4.ios上使用www读取不到streamingAssetsPath,可以使用file读取。1,streamingAssetsPath 可读不可写。2. IOS中读取目录下的ab包。..

2022-08-09 18:01:56 1139

原创 Unity 之UGUI Text组件坚排显示(改进)

复制了不知道谁的代码进行了改进,现在为居中显示居中对齐模式。pos来控制,可视化的配置改进后续会贴出。更改对齐模式主要由以下代码控制。"字和字之间的距离"

2022-07-20 15:12:39 765

原创 Android studio 导入AAR文件,并打包AAR文件

首先创建一个android工程,之后新建文件夹,和app平级任意取名,我这边随便取了个ss把要导入的aar文件拖入,并在ss文件夹内新建build.gradle文件build.gradle文件输入以下内容configurations.maybeCreate("default")artifacts.add("default",file('sharelibrary_v2.0.0.aar'))点击导入完成,导出和普通aar导出一样,导出的时候新导出的aar文件会包含该aar文件...

2022-01-17 19:27:44 2930 1

原创 使用android studio打包和导入aar

1,使用android studio新建项目之后,新建一个moudel。File - new -new module,选择android library,取名为myapplication在myapplication下的目录,src/main/java 下新建Java文件StringUtilspackage com.example.myapplication;public class StringUtils { private static StringUtils instance = nu

2022-01-12 14:07:01 1645 1

原创 Unity之移动设备之IOS调整输入框位置

1,需求:当玩家点击输入框的,会弹出虚拟键盘,如果我们的输入框靠下,那么便会被挡住,这个时候如果想要调整输入框位置。2,思路:这边上移移动的是所有UI的父物体(偷懒了),如果想要移动较小的物体,则可以自行代码调整,就需要判断一下当前输入框所在位置,会不会被虚拟键盘挡住,如果会,则需要上移,上移高度应该上移多少。3,实现:3.1 实现的辅佐工具:1,DOTween插件;2,事件管理器(自行封装)。3.2 虚拟键盘各类信息using UnityEngine;using UnityEngine.Eve

2022-01-11 14:55:42 5123

原创 Unity打包遇到的一些问题,从今天开始记录

1,提示源路径为空解决方法是因为打包的时候,手贱勾选了

2021-12-25 09:23:59 4781 1

原创 Git教程

https://www.liaoxuefeng.com/wiki/896043488029600/896827951938304

2021-09-12 21:27:48 87

原创 关于Unity接入IOS端微信SDK(一)

接入前需要了解的一些常识首先明确一点,Unity接入IOS并不能像Android那样,打包一个AAR或者其他包给Unity使用,然后直接在Unity打包Android包,Unity打包的IOS包必须再次放到XCode(苹果编辑器)里面再次进行打包,才能打包成IOS包,这个也是我踩过坑点之一。其二在 Unity 项目中的 Plugins->IOS 中编写的代码会在打包的时候一同带入 Xcode 项目中的 Libraries->Plugins->IOS 文件夹下,因而所有要编写的代码都应该

2021-09-08 20:49:04 603

原创 Unity之使用IAP接入苹果商店

使用版本 Unity 2019.4.7IAP版本 2.3.0前言 做好笔记,避免学了忘了忘了学Unity官方文档链接 UnityIAP官方文档首先是需要去苹果开发者中心注册这方面是参考官方文档做的 苹果开发者中心配置教程接着要在Unity里面导入IAP可以直接点击如图的按钮,也可以点击Windows->General->Services来打开,选择好自己的组织之后点击Create按钮。然后选中线面的In-App Purchasing。安装IAP装好之后可以参考官方教程进行设置就行

2021-09-08 20:46:55 969

原创 UGUI之公告栏自适应内容

做游戏公告的时候,有时候更新内容过多,这个时候就需要一个拖动框了,而拖动框里面拖动内容的长短如何去做到自适应呢?

2021-08-27 20:27:17 136

原创 解析复杂的json数据

在做项目的时候,从服务端获取到一段神奇的数据,类型是1,2,3之类的数据,或者变量是1,2,3之类的数据,这些是没办法通过反序列化,因为类中的定义你完全没有办法定义类型是1,2,3,类型。而且变量的名称你也没办法定义为纯数字,这个时候就用到了litJson的Jsondata功能。 JsonData jsonData = JsonMapper.ToObject(data); //List<string> keys = new List<stri

2021-08-27 20:21:10 729

原创 捕鱼达人的一些技术点

最近正在开发一款联网的捕鱼达人,因为之前一直是开发3D项目,相机不会使用正交视角,所以发现正交视角的开发和视椎体的开发还是有一些不同的。世界坐标和屏幕坐标之类的转换不同,在视椎体状态下获取世界坐标相对于屏幕坐标的方法不适用于正交视角,只需要采用把其Z轴设为0,或者放在摄像机面前,其实就是他在屏幕中的位置,可以这么理解,正交视角下,世界坐标和屏幕坐标是一样的,区别只是UI永远显示在物体前面(本人理解,有错欢迎指出)...

2021-08-23 15:24:20 719

原创 使用Unity的JsonUtility的坑

1,反序列的话要添加[System.Serializable]特性2,用字段不要用属性3,有用到List,字典的时候,记得使用using System.Collections.Generic;而不是using Boo.Lang;(这是巨坑,容易忽略)

2021-07-29 11:01:57 234

原创 使用AssetBundle Browser进行资源打包

1,首先通过github搜索AssetBundle Browser,找到资源之后,通过包管理器导入项目2,项目资源中设置好AssetBundle,然后直接使用Windows底下的AssetBundle Browser在此页面可以看到所有的AssetBundle。点击build...

2021-06-22 15:22:10 433

原创 AssetBundle详解

AssetBundle是一个资源捆绑包,可以包含多个类型文件,可以包含模型,贴图场景,预制体,声音等。

2021-06-21 15:41:25 129 1

原创 C#之常复习

1,命名空间的作用命名空间可以用于分类管理,规范代码2,命名空间的别名using Alias = AirName;,这样可以使用Alias来替代AirName命名空间使用3,C#预处理器指令3.1 #define和#undef#define 定义一个符号#undef 删除一个符号符号不是实际代码中的一部分,而只在编译器编译代码时存在3.2 #if,#elif,#else和#endifVoid Test(){if DEBUGConsole.WriteLine("执行");

2021-06-18 11:47:51 119

原创 Autofac框架(依赖注入)

留条尾巴

2021-06-16 17:59:28 263

testtt.json

复杂的json数据复杂的json数据复杂的json数据

2021-08-27

7000汉字加所有特殊符号.txt

日常常用7000汉字加所有特殊符号,加上自己补缺的几个汉字,日常基本没有错漏了。 日常常用7000汉字加所有特殊符号,加上自己补缺的几个汉字,日常基本没有错漏了。 日常常用7000汉字加所有特殊符号,加上自己补缺的几个汉字,日常基本没有错漏了。 日常常用7000汉字加所有特殊符号,加上自己补缺的几个汉字,日常基本没有错漏了。

2019-12-30

UVAnimation.zip

UV动画的例子,

2019-12-12

空空如也

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

TA关注的人

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