Unity3D
文章平均质量分 81
番茄猿
爱吃番茄的程序猿一枚
展开
-
Unity SRP自定义渲染管线学习2.2: 合批(Batching) SRP Batcher
合批是合并Draw Call的过程,减少CPU和GPU之间的通信量。在自定义管线中最简单的实现方法就是直接开启SRP Batcher,SRP Batcher实际上并不是直接减少Draw Call的数量,而是简化了流程,它将材质属性存储在GPU,所以不用每一次Draw Call都发送数据,这样子既能减少CPU和GPU之间的通信,也能减少CPU每一次Draw Call所要做的数据准备工作。这样也相当于减少了Draw Call的数量。原创 2023-02-11 21:52:52 · 2055 阅读 · 1 评论 -
Unity SRP自定义渲染管线学习2.1: DrawCalls 编写无光物体Shader
要绘制出物体,CPU必须告诉GPU绘制什么,怎么绘制?通常Mesh控制了绘制什么,Shader则控制怎么绘制,会给GPU一系列的设置。除了Mesh外,Shader需要额外的信息,包括物体的空间信息矩阵,材质属性等。Unity的通用渲染管线和高清渲染管线中,可以通过Shader Graph插件来编辑Shader,但是如果是我们自己定义的渲染管线,我们必须自己写Shader代码,自己写的话,我们能够完全控制并且理解好Shader所要做的工作。原创 2023-02-04 09:54:13 · 862 阅读 · 0 评论 -
Unity SRP自定义渲染管线学习1.2:初步绘制
绘制物体,包括不透明的物体,透明物体,再加上之前的天空盒Camera没有对绘制排序前排序后将不透明物体和透明物体分开渲染先用默认Shader渲染不支持的Shader用内置的错误材质在编辑器下绘制分部代码,让代码更清晰,且可以让Editor代码不会出现打包错误。原创 2023-01-14 20:19:19 · 1010 阅读 · 0 评论 -
Unity SRP自定义渲染管线学习1.1:初步搭建
因为我们是自定义渲染管线,所以不要选Unity的渲染管线,选择3D打开设置,将色彩空间切换为线性空间然后我们像下面随便创建一些物体,使用不同的材质,Unlit/Color,Standard(Mode设置Transparent),Unlit/Transparent。原创 2022-10-23 19:59:58 · 2303 阅读 · 0 评论 -
Timeline和Playable导致Unity崩溃问题记录
使用Timeline和Playable出现了Unity崩溃的问题使用Playable制作的自定义动画播放组件,以取代unity的controller(但是还是需要animator,因为使用的是AnimationClipPlayable,这个还是需要用Animator去播放动画的,主要的好处是我们可以更自由的定制动画的相关功能,不再需要创建AinamtorController的素材,但由于依然使用了Animator驱动,因此性能上并不会有多少优化,甚至写的不好还可能出现性能问题)然后我们在Timeline原创 2022-07-09 22:30:53 · 1196 阅读 · 0 评论 -
Unity 阴影——阴影平坠(Shadow pancaking)
为了减少阴影暗斑(Shadow acne)Unity采取了一种叫做阴影平坠(Shadow pancaking)的技术,它的思路就是减少沿光照方向渲染阴影贴图时使用的光照空间范围,这样子可以提高阴影贴图的精度,减少阴影暗斑(Shadow acne)如下图所示,主要就是取灯光照射方向和视锥体之间的交集淡蓝色圆圈表示产生阴影投射的物体深蓝色矩形框表示原来的灯光空间绿色线表示经过优化后的近平面,把所有不在视锥体也就是看不见的阴影投射物体都排除了这样子,等于我们将阴影投射的物体截断在优化后的灯光近裁剪平面之原创 2022-06-26 19:53:37 · 1127 阅读 · 0 评论 -
Unity自定义播放控制(二)——Playables示例
Playables的示例,简单播放一个动画,混合动画,混合Clip和Controller,多种输出,,控制播放状态,控制播放时间,动画播放队列原创 2022-04-05 11:24:15 · 5435 阅读 · 2 评论 -
Unity自定义播放控制(一)——Playables API
Playables API可以支持让我们在一种类似树状结构的方式(Playable Graph)中通过组织、分析计算数据来制作工具、效果或者其它的游戏机制。它支持对动画、声音和脚本的处理,还能够控制动画系统、声音系统。另外它是通用的API,未来会支持视频和其它系统的处理。它可以混合、融合和修改多种类型的数据,并且能通过一个输出来播放它们。原创 2022-03-06 12:08:58 · 6289 阅读 · 0 评论 -
Unity性能优化合集
Unity性能优化合集系列,不断更新性能优化相关文章原创 2022-02-26 18:57:00 · 3852 阅读 · 0 评论 -
Unity的Frame Debugger
Frame Debuger 帧调试器Frame Debugger可以让我们单独的观察一帧的渲染过程,观察到每一个DrawCall的渲染情况,它会把DrawCall一个一个按顺序列出来,通过点击每一个DrawCall,可以看到执行到该DrawCall时的渲染图,一步一步的点就可以看到整个场景渲染非常详细的构建过程。基础使用Window-Analysis-Frame Debugger打开窗口开启分析后,左侧会显示DrawCall层级列表(包括了其它一些事件,比如Clear事件),右侧的面板会显示更多的原创 2022-02-20 11:43:07 · 9128 阅读 · 1 评论 -
Unity渲染性能优化总纲
概述本篇是Unity渲染性能优化官方文档中的渲染性能优化总纲,主要是让我们知道从哪些方面着手优化,都有哪些优化手段。在优化之前要先定位出问题所在在我们进行优化之前,要先分析出我们的应用的性能问题出在哪里。如果我们没有找出真正问题所在之前,就直接进行优化,很可能这部分优化工作是无效的,并且甚至可能会让问题更糟。而且,渲染性能问题可能是由CPU或者GPU引起的,对于不同原因引起的性能问题,处理方式也是不一样的,所以在我们进行优化之前一定要找出性能问题的真正原因。减少CPU在渲染方面的消耗一般原创 2022-01-16 11:20:03 · 5247 阅读 · 0 评论 -
Unity的渲染统计窗口(Rendering statistics window)
在Game视图的右上角可以点开一个渲染统计窗口(Stats按钮),可以查看当前的实时渲染信息。这些统计信息可以用于性能优化的分析,当然不同的目标平台统计信息会有所不同。原创 2022-01-08 20:59:35 · 4226 阅读 · 0 评论 -
Unity的绘制调用批处理(Draw call batching)
要在屏幕上绘制一个物体,引擎必须发送一个绘制命令(Draw Call)给图形的API,比如OpenGL或者Direct3D的接口。由于每次Draw Call,CPU要准备大量的数据,往往会引起较大的CPU的性能消耗。因此我们需要想办法减少Draw Call的数量。一般情况下,Unity有两种比较方便使用的减少Draw Call的方法:动态批处理和静态批处理。动态批处理:适用于面数比较小的物体,Unity会动态的将这些小物体的网格合并在一起,然后一次性绘制静态批处理:将静态的物体的网格合并成一个大网格原创 2021-12-31 21:22:19 · 2825 阅读 · 2 评论 -
重新认识LODGroup
之前用Unity的LOD Group一直都是简单用了一下,今天才发现有好几个认知都是错误的,需要重新认识下LODGroupLODGroup百分比并不是简单的距离百分比之前以为LOD就是根据距离的远近然后切换的,LODGroup上面的百分比是距离的百分比,因此也一直很疑惑,这个距离的基准是多少,在哪里设置也没有找到。而事实上,这个百分比是边界(Bounds)占屏幕的大小比,与距离有一定关系,但距离只是其中一个计算因子。其实,我们仔细想想,就会发现如果用距离作为标准的话,每一个物体几乎都得设置自己的L原创 2021-11-28 22:14:19 · 3569 阅读 · 0 评论 -
Unity编辑器拓展PropertyDrawer——Editor绘制偷懒神器
写在前面我们在使用UnityEditor自定义属性面板时,大多的时候都是直接使用继承Editor的方式实现,一个脚本类写一个Editor类,但是有很多非MonoBehaviour的类,会需要在不同的脚本上使用,这个时候需求就来了,每一个都要重复写那也太麻烦了,这个时候就可以用PropertyDrawer了。我使用的Unity版本:Unity 2020.3.10总结PropertyDrawer的两大主要作用:1. 用于自定义绘制可序列化的类或结构体有需要自定义显示的又会可能在多个脚本中使用到的类原创 2021-10-06 18:00:42 · 3260 阅读 · 1 评论 -
那些年我踩的坑(1)——Unity编辑器SerializedProperty.enumValueIndex
这个是我自己的坑,自己挖的坑,然后自己跳了下去首先上结论,以后别再犯同样的错误:SerializedProperty.enumValueIndex得到的是当前枚举值在所有值中的排序索引,不是枚举值!!!是enumValueIndex,是Index!!!不是enumValue!错误的写法:public enum EventType{ None = 0, Test = 2, Attack = 1, Test3 = 3, Damage = 4,}[Syst原创 2021-09-17 21:19:57 · 1606 阅读 · 0 评论 -
简单AStar寻路2D示例
A*寻路牢记A*寻路的核心F(n) = G(n) + H(n)G(n): 从起始位置到n位置所需的实际消耗H(n): 从n位置到目标位置的预计消耗所以F(n)就是从起始位置经过n位置到目标位置的路径总消耗A*寻路的过程就是不断找最小F(n)的过程A*寻路流程1.加入“开启列表”先将起点作为当前检查点加入“开启列表”,“开启列表”是一个等待检查方格的列表,起点格子是最开始的检查点2.检查周围将当前检查点周围可到达的点加入“开启列表”,并设置它们的"父节点"为当前的检查点,并且计算出这些原创 2021-08-01 23:04:02 · 663 阅读 · 1 评论 -
Unity3D数学基础之3D坐标系(一)
一般而言3D软件都是采用笛卡尔坐标系来描述物体的坐标信息。左手坐标系:Y轴指向上方,X轴指向右方,Z轴指向前方。伸出左手,大拇指指向X轴,食指指向Y轴,中指能指向的方向就是Z轴右手坐标系:X轴和Y轴同左手坐标系,Z轴相反 Unity中使用的是左手坐标系 全局坐标系全局坐标系是用于描述游戏场景内所有物体位置和方向的基准,也称为世界坐标系。在Unity场景中原创 2017-03-30 12:47:19 · 1507 阅读 · 0 评论 -
Unity3D中实现按资源名称自动化命名打包AssetBundle
1. 概述一般当需要打包成AssetBundle的资源不多时,可以自己通过AssetLabels窗口手动命名,然后再打包,但是当需要打包的资源过多时,一个一个的去手动编辑就特别的麻烦,因此如果能按资源名称自动命名打包AssetBundle,这样子就会方便很多。实现功能:只需点击一下“AutoBuildAll”,即可将指定目录的资源全部自动生成按文件名称命名的AssetBundle,原创 2017-07-14 19:09:39 · 5723 阅读 · 0 评论 -
Unity中打开文件窗口(OpenFileDialog)的几种方法对比
1 概述用Unity以来,一直都没怎么关注过打开对话框去选取本地文件,最近需要用到这个功能,在网上搜索了一下,在搜索的资料的基础上,对比下Unity运行时打开文件对话框的两种方法,以及编辑时的打开文件Windows对话框方法。有些地方不太懂,先放着,以后懂了再回过头补充。本文工程文件2 运行时打开文件对话框2.1 引用System.Windows.Forms.dll原创 2017-08-09 15:29:23 · 16926 阅读 · 20 评论 -
An asset is marked with HideFlags.DontSave but is included in the build 解决方法
1 错误描述版本: Unity 2017.1.0f3 平台:PC,x86_x64 错误描述: Unity打包时报错,总共有三个错,如下:An asset is marked with HideFlags.DontSave but is included in the build: Asset: ‘Library/unity editor resources’ Asset name: Def原创 2017-09-06 09:26:09 · 5455 阅读 · 8 评论 -
SmoothDamp与Lerp函数使用问题误区浅析
1. Lerp使用误区不管是Mathf.Lerp,还是Vector的Lerp函数,我发现都有不少人(当然也有我一份)都犯了一个很严重的错误,把线性移动用成了弹性移动(关键是自己还不知道,还奇怪,咦,不是说好的线性移动吗?怎么有点弹性的赶脚。。。。。。),最常见的错误写法如下:transform.position = Vector3.Lerp(transform.position, target.po原创 2017-09-07 19:30:34 · 5002 阅读 · 0 评论 -
Unity2017.2错误集合
Unity2017.2错误集合1 一般错误1.1 运行即报错:Unsupported texture format 0x13错误描述 开启了XR Settings中的Virtual Reality Supported之后,一运行就报错:Unsupported texture format 0x13解决方法 该问题为Unity Bug,详见bug追踪:https://issuetracker.un原创 2017-11-29 10:12:15 · 5997 阅读 · 1 评论 -
Unity莫名问题大集合
本文链接: https://smallteamlab.com/post/5a4397ff8880f568c5d8cfa1在Unity引擎的使用过程中,可能会遇到这样那样的莫名其妙的问题,但其实很多问题还是因为我们自己对Unity的不熟悉导致的,下面列举一些比较容易踩坑的问题,大家一起进步。1 代码修改后Unity中运行没有任何改变 1.1 问题描述 代码修改了之后,回到Unity,右下角没有显示转载 2017-12-27 20:57:44 · 2082 阅读 · 2 评论 -
Unity中的物体遮挡关系(一)——基础认知
写在前面之前只对UI内部的层级关系有运用,对于各类物体(3D物体、UI、粒子特效等)之间的层级关系没怎么了解过。最近为了解决UI与特效的层级关系,特意学习了一下,现在总结一下自己的认知。测试版本:Unity5.6.6f2我的结论先上我的总结:• 不透明物体之间的遮挡关系按照前后关系(相对摄像机)相互遮挡• 不透明物体与透明物体之间的遮挡关系也是按照按照前后关系(相对摄像机)相互遮挡•...原创 2019-05-29 22:42:23 · 14480 阅读 · 0 评论 -
Unity中通过射线躲避障碍物寻路的一些初步探索
在简单的射线寻路方法上增加了一些条件判断,避免进入死胡同,可以解决一些简单的死胡同场景,但更复杂的场景还需要进一步探索原创 2016-10-01 10:45:20 · 8181 阅读 · 0 评论