自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

alla_Candy的博客

欢迎收看b站教程 id:哆校长-独立游戏开发

  • 博客(40)
  • 收藏
  • 关注

原创 unity 水面渲染 - Shallow Water

2024-03-07 15:00:29 112

原创 项目优化:Unity Profiler使用

Profiler可直观的看到游戏运行期间整体的数据变化量。

2023-09-27 11:00:55 295

原创 Unity 内存性能分析器 (Memory Profiler)

MemoryProfiler 是一个非常好用的检查内存问题的工具,以下问题都可以通过该工具进行排查查找有问题的游戏资源,例如:Mesh和贴图非常大的美术资源内存泄漏问题游戏对象引用问题。

2023-09-25 14:24:57 2083

原创 unity shader中获得模型中心点 + 中心点详解

参考连接: Unity Shader中获取模型中心点的世界坐标_unity获取物体坐标_VirtualCreator的博客-CSDN博客原点指的是哪里:实际是当前材质球挂接的Renderer的mesh定义的坐标原点,但是有两种情况:1 Renderer是MeshRender原点就是当前mesh的坐标原点.当前body的mesh , 坐标中心就是原点 2 SkinnedMeshRender 是RootBone所指游戏对象的坐标点。 可以自行测试 项目需要我需要验证的是y轴的坐标下面是验证的shad

2023-03-24 15:34:34 1855

原创 urp SpotLight 衰减方式扩展

spots Light 衰减方式添加扩展

2023-02-28 18:57:07 727

原创 ToneMapping - 色调映射

知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于 2011 年 1 月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制以及结构化和易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类、在诸多领域具有关键影响力的知识分享社区和创作者聚集的原创内容平台,建立起了以社区驱动的内容变现商业模式。使用ToneMapping 对颜色进行重新映射。把原始色调映射到目标色调。

2023-02-28 18:36:06 462

原创 Unity 中使用foreach注意

Unity 中使用foreach注意 导致崩溃

2022-07-05 22:03:24 1154 3

原创 unity shader 平台差异化参数处理

unity 定义的深度纹理helper的宏 depth :深度纹理 用于渲染 距离相机的深度 BuildIn urp 备注 UNITY_TRANSFER_DEPTH UNITY_OUTPUT_DEPTH(i) COMPUTE_EYEDEPTH(i) ..

2022-04-06 21:44:22 3797

原创 X-Ray 基于法线的轮廓渲染

结果原理:基于物体表面法线的来判断计算渲染的颜色。物体表面法线的方向和视线方向比较法线方向越接近相机方向,说明越靠近物体中心的位置,反之,说明处于边缘的位置关键代码: v2f vert (appdata_full v){v2f o;o.pos = mul(UNITY_MATRIX_MVP,v.vertex);o.v...

2022-02-14 09:56:16 2015

原创 shader 重建世界坐标

重建世界坐标 一、为什么 : 屏幕后处理得不到准确的世界空间下的物体的坐标, 都会使用深度纹理来重建每个像素在世界空间下的位置 二、怎么做 : 1 利用vp矩阵重建 先得到vp矩阵的逆矩阵 得到ndc的坐标 利用vp逆矩阵,将ndc坐标转化成世界空间下坐标 由于是在片元着色器中进行计算处理, 会比较耗费性能详细原理,可以了解一下,shader中从观察空间到屏幕空间所做的一些列操作2...

2022-01-27 15:06:30 2663

原创 体积光逻辑(1)

——体积光,在物理层面来说是丁达尔效应. 主要实现使用的是RayMarch一、 What is RayMarch?一根ray一步一步向前走(marching),一直到与物体相交。二、RayMarch 元素:每一个采样点计算都要把所有因素的数值进行相乘处理,得到该采样点上的最终结果 因素 公式 代码 备注 1 光强度的衰减计算 //世界坐标转到灯.

2021-12-31 11:10:35 2026

原创 Unity 的阴影实现原理

目前学习到的unity 渲染阴影的两种方式.下面情况默认是 前向渲染路径,场景中平行光开启了阴影 方式 原理 备注 ShadowMap 把相机放到光源的位置,那么场景中该光源的阴影区域就是那些相机看不到的位置 得到的是:场景中距离光源最近的表面位置(深度信息) unity中专门的pass 单独处理阴影映射纹理。 pass的LightMode = ShadowCast

2021-11-27 18:42:22 6034

翻译 URP渲染流程

Setup Culling Parameters 设置参数:确定Culling 如何处理灯光和阴影 可重写 Culling 使用上一步设置的参数,计算可见的 渲染器,灯光和阴影等 Culling参数和相机距离参数影响最终的渲染效果 Build Rendering Data 缓存的信息来之:Culling的结果输出,和UPRAssets , C...

2021-11-26 14:36:53 699

原创 Unity 渲染路径理解

Unity 常用的渲染路径 备注 前向渲染 标签: {"LightMode" = "ForwardBase"} 原理: 每进行一次前向渲染, 都需要渲染该对象的渲染图元,并计算两个缓冲区的信息。深度缓冲区, 颜色缓冲区。 流程: 深度缓冲区判断判断片元是否可见 如果可见:更新颜色缓冲区的颜色值 不可见:说明片元不可见 每个逐像素光源,都要进行上面的一次完整渲染...

2021-11-20 18:14:52 3098

原创 unity shader - 毛发渲染,飘逸的毛发

渲染原理:第一步:分层layer,渲染不同长度的毛发。 层越多,绘制的越细节。因为毛发有长短,所以,在上层,没有毛发的部分alpha设置为0,不显示多个layer,可以使用shader等多个pass进行绘制每一个 Pass 即表示一层。当渲染每一层时,使用法线将顶点位置挤出模型表面第二步:根据噪音贴图, 在随机毛发的长度。控制alpha的值层次不同,毛发的uv位置偏移应该也有所不同,这样制作的才能更自然,否则uv一直不变,那么毛发的方向不变就变成了刺猬毛发..

2021-11-20 14:54:12 8184

原创 unity shdaer - 透明效果[ZWrite , ZTest , Blend , Cull]

Alpha Channel 透明通道Alpha Test 透明度测试Alpha Blending 透明度混合ZWrite 深度写入深度写入· 开启的话,根据深度缓存中的值来判断改元片距离摄像机的距离。渲染的时候,需要和已经存在于深度缓冲中的值进行比较, 如果距离相机更远,则不会渲染· 不开启,根据渲染顺序进行渲染。关闭写入,需要注意渲染顺序 名称 原理 函数 深度检测

2021-11-19 11:59:39 5577

原创 Unity shader的坐标空间转换(图解)

模型空间, 世界空间, 观察空间, 裁剪空间变化图解世界空间到裁剪空间: UNITY_MATRIX_VP, unity_MatrixVP模型空间到观察空间: UNITY_MATRIX_MV , mul(unity_MatrixV, unity_ObjectToWorld)模型空间到裁剪空间的变化 就是所说的MVP变化 UNITY_MATRIX_MVP...

2021-11-06 11:18:33 1921 1

原创 ngui 和 特效 层级调整

需求: 让特效位于 宝箱和 底层背景 的中间。层级关系 ui+特效+ui方法: 设置最上层ui,添加一个uipanel, 设置属性如下

2021-10-15 15:08:17 1204

原创 unity 绘制属性雷达图 - 绘制描边(更改uv)

实现的效果先绘制一个五边形的mesh,然后在给边缘绘制一圈mesh。对uv进行重新赋值,实现描边效果第一步 绘制mesh绘制多边形mesh,首先先绘制一个五边形。mesh绘制要素:顶点,三角形,uv信息顶点信息就是勾勒三角形用的几个顶点。按照五边形来说的画, 五边形是五个边。因为每个边的顶点要做拉伸,所以以中心点为原点,向外扩展画三角形,方便后续操作。顶点顺序可以按照下图顺序。绘制三角形绘制三角形的时候,顶点排列顺序要按照顺时针的方向进行排列才可以绘制出来所以第一个三角形,顶

2021-08-17 10:39:15 1304

原创 lua基础, lua学习

第一章特殊字符and break do else elseif end false for function if in local nil not or repeat return then true until while注释:----[[ something--]]表达式逻辑运算符:and or not (and 优先级高于not)not : !and : &&or : ||连接运算符:.. 把数字转化成字...

2021-07-31 14:25:05 297

原创 面试总结1

设计模式多总结几种1 单例模式主要是为了避免常用类的频繁创建和销毁定一个全局变量的入口,用于访问该类2 工厂模式子类实现接口,父类主要用于接口定义和供外部的调用3 建造者模式多个简单的类,构建成一个复杂的类型。(类比,套餐和单品的关系)4 观察者模式类存在一对多的关系, 当这个类对象被修改的时候, 自动通知所依赖他的类5 mvc , mvp , mvvm类型view ,controller 和model层mvc: 单向链接Mvp :可双向访问mvvm: view和viewm

2021-07-18 10:09:21 232

原创 unity 官方ui优化,记录

1 一个脏的子Canvas不会强制他的父Canvas进行重绘操作,反之亦然。 (那就是父亲重绘时候不会强制子canvas重绘)。除非父canvas的变化导致子Canvas的大小调整时候2 Canvas是可以嵌套的3 Graphic是ui中最基础的类4 layout组件,只依赖于RectTransform,并且只会 影响相关的RectTransfrom属性。 不依赖于Graphic , 可以独立于unityui的图形组件使用5 layout和 graphic都依赖于 CanvasUpd...

2021-06-15 18:07:33 755

原创 力扣 - 盛最多水的容器 c#

给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:height =

2021-04-06 20:44:28 153

原创 Unity TimeLine 动态给Track的clip传参数

找了半天也没找到个详细的,都乱七八糟,还是自己尝试来吧~这个前提是你的 那个Assets已经制作好了在运行的时候,进行传参操作 private PlayableDirector _director; private BuildingSkinChangePlayableAsset _changePlayable; private BuildingSkinPlayableAsset _playPlayable; private void Start() {

2021-02-04 10:57:40 721

原创 投掷骰子得到每个骰子的点数

需求 :已知n个骰子,要投掷出来的点数综合为m,返回一个数组长度为n的数组,结果为每个骰子的点数。骰子的点数范围为1-6。m>=n && m<=n*6思路限制要求,每个骰子的点数必须是大于等于1,小于等于6对于最小的临界的处理方法是,在初始状态下,对应数组的初始数字就设置为1对于最大的临界,就是限制最大的点数6因为总数为m,那么我就遍历m-n次(初始的数字已经添加了1),每次我都随机取一个数组中的index,对数字加1,这个时候要进行...

2020-12-04 14:39:13 978

原创 力扣 - 字符串中的第一个唯一字符 c#

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例s = "leetcode"返回 0s = "loveleetcode"返回 2解题思路:1第一种最开始的思路是逐个字符去做循环遍历,但是这个方案并不是最优的,遍历的次数,是n*n+1次。所以如果遇到字符串很长的话,会有问题 “超出时间限制”public int FirstUniqChar(string s){ for (int n = 0; n < s.Length..

2020-11-04 11:46:08 204

原创 力扣 - 整数反转 c#

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。········································································

2020-11-03 20:52:55 352

原创 力扣 - 有效的数独

题目判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用'.'表示。解题思路:最开始的思路是,遍历三次,分别检测,行,列,以及九个格子的数字是否有重复,但是其实是可以简化成只遍历1次,分别把三种情况的数字存...

2020-10-27 10:16:23 176

原创 力扣 - 移动零 c#

移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解题思路利用双指针,从头开始遍历,找到不为0的数字,依次置换(上图补充 , 同时num[b]赋值为0)依次遍历,最终就可以得到结果了.逻辑可以梳理清楚了c#代码public void MoveZeroes(int[] nums){

2020-10-13 18:27:26 250

原创 力扣 - 加一 c#

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。

2020-10-13 16:57:08 277

原创 LeetCode 重复元素 c#

给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true解题思路:利用双指针的思想 ,一个指针从0开始遍历,另一个指针从length-1开始遍历,当两个序号不相等但是值相等的时候就说明,数字重复了直接返回就可以了public b

2020-09-18 20:15:58 88

翻译 LeetCode 旋转数组 C#

给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释:向右旋转 1 ...

2020-09-13 11:02:30 176

翻译 unity渲染 - Mesh基础 自己创建mesh

English :coordinate : 坐标tangent : 切线normal :法线triangle : 三角形vertice : 顶点mesh 中存储着 三维模型的数据 : vertices (顶点数组Vector3[]) 、triangles (三角形 int[]) 、normals (法线 Vector3 []) 、uv(纹理坐标 ,Vector2 [])tips:uv类似于unity的坐标系下的x,y,是纹理贴图坐标的简称它定义了图片上每个点的位..

2020-09-08 09:46:10 2982

原创 LeetCode 买卖股票问题c#

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6

2020-09-04 10:43:46 156

翻译 删除有序数组里的重复元素

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。使用双指针法, 可以将时间负责度o(n^2)的解法优化为o(n)。这个算法只需要遍历一次就可以得到对应数组的长度图解 : (官方教程)int[] a = new[] {1, 1, 1, 2, 3, 4};public void OutPutArrayLength(int[] a){ int

2020-09-03 10:31:02 437

原创 记录面试不会的题目

TCP/UDP : 长链接TCP:可靠的,需要建立连接的。数据,无差错,不丢失,按序到达。点对点/一对一。效率较低UDP:不可靠的,不需要建立连接。可能不到达。支持一对一,一对多,多对一。效率高,速度快向量的点乘/叉乘:点乘:A到B的投影。点乘又叫向量的内积、数量积,是一个向量和它在另一个向量上的投影的长度的乘积;是标量。点乘反映着两个向量的“相似度”,两个向量越“相似”,它们的点乘越大。叉乘:和A,B垂直的向量即两个向量的叉积得到的还是向量!设计模式:M...

2020-08-18 20:31:09 228 1

原创 Addressable

2020-04-08 19:57:32 190

原创 Addressable -- 有关热更新

Addressable – 有关热更新标题Patch的不同操作Default Build Script:首次资源打包,使用Default Build Script。那么当前的Addressable的一些资源数据会存储到addressable_content_state.bin文件中,这个文件是存在包体中的。如果后续使用new build的时候,使用老包的用户是没有办法获得这些更新数据的,...

2020-04-08 15:43:23 3208 1

原创 unity particle system 粒子特效系统优化

什么是粒子系统官方解释: 粒子系统是在三维空间渲染出来的二维图像,主要用于烟,火,水滴,落叶等效果。一个粒子系统由粒子发射器、粒子动画器和粒子渲染器三个独立的部分组成。unity渲染流程在首先我觉得要想知道如何优化粒子系统以及为什么优化粒子系统,你要先搞懂unity的这个渲染流程在知道在什么地方着手优化。CPU :1、检查场景物体,判断是否被渲染,不被渲染的物体被剔除(culled)–...

2019-12-26 10:24:46 5239

原创 unity中使用wordnik

unity 中使用wordnikwordnik简介准备工作unity使用坑wordnik简介它其实就是一个我们经常使用的词典,更准确来说是一本拥有强大题库的一个英文词典。它的词库很完善,提供了很多的接口,来供开发者使用,并且接入程序中,满足各种不同的需求。(包括 :解释,造句等等)。我使用到的地方,是由于我们公司开发的是一款word游戏,所以会有这个有关解释的入口,所以做了接入。准备工作...

2019-12-22 12:34:04 790

空空如也

空空如也

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

TA关注的人

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