随笔分类 - Unity成神之路
1
这里是我在学习和工作中累计到的经验。
ShaderGraph普通水面
摘要:效果:正常水面波动,水下折射。 主要思路是在法线贴图基础上修改uv插值形成波动效果,根据噪音得到场景颜色与场景深度节点等运算进行lerp混合得到折射效果 git地址https://gitee.com/salmol/shader-graph-exp.git
阅读全文
ShaderGraph溶解
摘要:思路 首先给片元着色器添加alpha clip,片元着色器会出现一个Alpha Clip Threshold节点,这个节点能够设置透明度剪裁阈值, 要添加一个噪声节点,Simple Noise输出到Aplha, 现在需要一个根据时间自动隐现的溶解,添加Time节点,输出到数学函数Remap In,结
阅读全文
ShaderGraph轮廓光
摘要:思路 先给纹理,法线,金属贴图, 再创建一个自发光贴图和一个菲涅尔效应,将菲涅尔效应与一个颜色属性相乘,得到的结果再与自发光贴图相加,再将结果输出到发光点。 git地址https://gitee.com/salmol/shader-graph-exp.git
阅读全文
ShaderGraph之基础光照
摘要:在ShaderGraph中如果想要自定义一个纹理输入,需要添加Sample Texture2D节点,输出到片元着色器的Base Color节点。 还需要自定义一个Texture2D属性,用于外部修改纹理。 新建材质,指定ShaderGraph就能看到刚刚创建的效果了。 此时如果想要添加颜色修改,需要
阅读全文
UI异形适配
摘要:CanvasHelper resizes a RectTransform to iPhone X's safe area - Unity Forum UI适配可以拿手机的安全区域对Canvas进行等比修改 using System.Collections; using System.Collecti
阅读全文
象棋AI算法记录
摘要:象棋AI算法: https://blog.csdn.net/u012723995/article/details/47133693 最大最小搜索:https://www.zhihu.com/question/27221568 Alpha-Beta 剪枝算法详解:https://www.xqbase.
阅读全文
ShaderGraph入门
摘要:ShaderGraph是Unity提供的图形化Shader,相比与代码写的Shader方式,个人觉得ShaderGraph还是对新手比较友好,有一种在玩连连看的感觉, 也有可能是因为我个人偏向于美术一类吧。 由上图可以看到,新建一个基础的ShaderGraph,得到一个提示,顶点信息和片段信息,同时
阅读全文
Unity的DrawCall优化
摘要:附上大佬文章 (10条消息) Unity优化之Drawcall_皮皮哥专注游戏开发的博客-CSDN博客_unity查看drawcall Unity Draw call优化 - 简书 (jianshu.com) DrawCall是CPU显卡向GPU图形处理器发送的一条数据信息,然后把信息绘制出来。 游
阅读全文
Unity特殊文件夹路径
摘要:Standard Assets:这个文件夹中的脚本语言会被最先编译,这个文件夹下面的会导出到一些Assembly里面。 Editor:编辑器拓展的脚本要放入这个文件夹下面。 Plugins:通常放入插件。 Resources:这个文件夹下面的资源在打包的时候会全部打包出去。 Editor Defau
阅读全文
初识Shader
摘要:附上一个学习Shader的好网站 统一渲染教程 (catlikecoding.com) OpenGL渲染管线 在OpenGL中,任何事物都在3D空间中,但是屏幕和窗口都是2D像素数组,所以大部分都是将3D坐标转化为适应屏幕的2D像素。 首先是要进行顶点着色器,计算顶点颜色将游戏物体的坐标转换成相机坐
阅读全文
Unity打包安卓以及交互
摘要:1.配置工程 这里我使用的Unity版本是2021.3.4,Android Studio是2021.2。 其实打包的我认为最主要的问题就是版本兼容,因为不同的版本有不同的迭代更新,使用最新版本进行打包的时候我基本会多多少少遇到一些报错,但其实就是一些简单的文件或者语句的增删,这些错误在以前的打包坑中
阅读全文
算法的时间复杂度与空间复杂度
摘要:先附上个人认为还不错的文章 算法的时间与空间复杂度(一看就懂) - 知乎 (zhihu.com) 时间复杂度 个人认为所谓时间复杂度就是代码所执行的次数,次数越少就性能越好 推算时间复杂度有一个方法叫推导大O阶方法 这玩意有三种方式 1.用常数1取代运行时间中的所有加法常数 2.在修改后的运行次数函
阅读全文
Lua的table.insert具体插入位置与#的原理
摘要:先看两段代码 有人多人都说#是取表的长度,遇到nil就停止了,但是从这里发现,其实并不是这样的。 高人指导说其实#的底层是一个二分查找,因为一个alimit的字段,产生了两种不同的算法, 导致这两个表的长度取的都不一样。 而table.insert插入的默认位置是#tab+1的位置,这也就是为什么这
阅读全文
Lua中的.与:
摘要:在Lua里面有这么两个标识符.和: 可以理解为静态和非静态的调用。 .默认是不会传入参数的,而:会默认传入第一个参数self. 最近在写lua的时候,发现调用Unity组件的非静态方法要使用: 突发奇想我们调用Unity的:和Lua本身的:是不是一个东西呢,之后就问过了几位大佬,得到的答案说是一样的
阅读全文
初识Lua虚拟机
摘要:这里先附上几个个人觉得还不错的博客。 Lua 源码解析 (gohalo.me) 如何实现Lua虚拟机 - 知乎 (zhihu.com) Lua虚拟机深入 - 简书 (jianshu.com) 这里我自己总结了一下,Lua虚拟机其实是有c语言实现的, 然后的话,它里面执行的代码其实不是执行本身的lua
阅读全文
C#分治算法
摘要:什么是分治算法 分治算法就是一个规模为n的问题,拆分成k个比n规模小的小问题,利用递归的方式进行解决,最后再将所有的小问题合并返回到原问题的解。 分治算法可以解决哪些问题 1.二分查找,2.大整数乘法,3.Strassen矩阵乘法,4.棋盘覆盖,5.合并排序,6.快速排序,7.线性时间选择,8.最接
阅读全文
C#内存堆和内存栈的区别
摘要:栈上存储的是临时的变量,一旦这个变量失去了作用域,就会被C#自己的GC回收机制回收。 比如值类型,没有实例化的引用类型等。 堆上存储的这个对象所开辟的内存空间里面所有的东西,一些持久化的东西,这里面的东西是不能被GC自己回收的,需要我们基于资源管理器,根据引用管理,查看这个类或者对象是否还有引用,如
阅读全文
C#值类型和引用类型的区别
摘要:从概念上来讲值类型是存储其值的本身,引用类型存储的是对其值的引用。 从内存上来讲值类型是存储在其内存的栈中,引用类型是存储在其内存的堆中。 也有个别情况值类型存储在堆中,引用类型在栈中。 比如值类型在引用类型中,当这个引用类型实例化的时候,值类型就是在内存堆中了。 当引用类型被声明的时候,但是没有被
阅读全文
C#结构体和类的区别
摘要:1.结构体是值类型,类是引用类型。 2.结构体不能有默认构造函数,类有默认构造函数。 3.结构体可以自己添加有参构造函数,但是构造函数内必须声明所有变量,类没有限制。 4.结构体中不允许初始化字段,类可以。 5.结构体可以不使用new字段进行初始化,类不可以。 6.结构体没有析构函数,类有。 7.结
阅读全文
1