Unity贝塞尔曲线的落地应用-驱动飞行特效 ObjectTemplate是一个用于在运行时创建对象的模板。它可以定义对象的属性和方法,以及对象与其他对象的关系。其实就是用来存特效的句柄,然后把特效存为GO飞出去。
Unity字符串性能问题 每次动态创建一个string,C#都会在堆内存分配一个内存用来分配字符串,因为C#没有对字符串的缓存机制,会导致每次连接、切割、组合的时候都会申请新的内存,并且抛弃原来的内存,等待GC,而GC又会消耗很多CPU空间,例如对于a = "ax"; c = "b" + a + "c",会造成一定程度的性能浪费。因为这里的+操作符是在运行时进行的,而不是在编译时。所以,每次+操作都会创建一个新的字符串对象,而不是改变原来的对象。这样就会产生两个无用的中间对象,"bax"和"baxc",占用内存空间,如果不注意的话就
力扣-复制带随机指针的链表 给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的。深拷贝应该正好由n个节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。。例如,如果原链表中有X和Y两个节点,其中。那么在复制链表中对应的两个节点x和y,同样有。返回复制链表的头节点。用一个由n个节点组成的链表来表示输入/输出中的链表。
力扣-哈希-最长连续序列 给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。**输入:**nums = [100,4,200,1,3,2]**输出:**4**解释:**最长数字连续序列是**输入:**nums = [0,3,7,2,5,8,4,6,0,1]**输出:**9。
力扣-数组-缺失的第一个正整数 给你一个未排序的整数数组nums,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为O(n)并且只使用常数级别额外空间的解决方案。**输入:**nums = [1,2,0]**输出:**3**输入:**nums = [3,4,-1,1]**输出:**2**输入:**nums = [7,8,9,11,12]**输出:**1。
力扣-全排列 给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以返回答案。**输入:**nums = [1,2,3]**输入:**nums = [0,1]**输入:**nums = [1][[1]]
力扣-正则表达式匹配 给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。'.''*'所谓匹配,是要涵盖字符串s的,而不是部分字符串。**输入:**s = “aa”, p = “a”**输出:**false“a” 无法匹配 “aa” 整个字符串。**输入:***输出:**true**解释:**因为 ‘*’ 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 ‘a’。因此,字符串 “aa” 可被视为 ‘a’ 重复了一次。**输入:**s = “ab”, p = “.
AssetBundle基础 什么是AB包:类似于压缩包,除了C#代码其他u3d常见的基本上都能打包进去相比于resource.load的好处resource都是一大块的没法修改,AB包则可以任意方式压缩且放在其他位置作用:实现资源/代码的热更,通过资源对比实现更新并且减少初始包体的大小,可以后续在下载AB包。
Billboard效果shader实现 一种使得粒子效果、远处作为背景的树、都始终朝向摄像机用面片加透明贴图的方式来节省资源需要始终朝向相机BillBoard的两种类型:1.旋转范围为球体,水平和垂直都能转,类型为Spherical2.旋转范围为圆柱体,只能水平转,垂直方向固定实现逻辑两种方式:脚本控制:LookAt更改面片朝向Shader:修改顶点坐标使顶点偏移最终使面片都整体朝向相机基于Shader的顶点偏移原理是计算出新的坐标系下的单位向量 将原xyz值分别乘给单位向量计算出新的顶点位置关键:计算新的单位向量用摄像
UnityShader学习 知识补充Subshader可以在subshader下定义多个Tags和State定义对所有Pass都生效如果需要可以单独对逐个Pass进行生效Tags可以定义n个标签 用键值对的形式来实现Queue队列标签用队列标签来确定物体的渲染顺序Background最先进行渲染Skybox或者背景,队列号1000Geometry,渲染非透明的几何体所采用的队列,没有声明渲染队列的时候,unity默认使用此队列,队列号2000AlphaTest,Alpha测试的几何体使用的队列,在所有几何体
GEA 4.5比较各种旋转表达方式 欧拉角优点:直观,容易视觉化,围绕单轴得旋转容易插值缺点:绕任意方向得旋转轴不能轻易插值,并且会遇到万向节死锁的问题万向节死锁:想象2042里面的飞机,三个欧拉角一个旋转了90度之后其他两个轴就会完全对齐而导致失去一个自由度旋转的先后顺序会影响旋转结果3X3矩阵优点:独一无二的表示旋转缺点:不容易插值并且不够直观轴角优点:直观且占用内存空间少缺点:不能简单地插值而且不能直接作用于点或者矢量还得转成矢量或者四元数四元数优点:可以随便插值 并且存储空间少优于矩阵 可以直接把旋转作用于点和
GEA 4.1234 矩阵 矢量 点 四元数 第四章讲解一些数学知识,很多非常简单和基础,只挑难点做一些笔记。四元数没有接触过会全部笔记。点和矢量坐标系选择根据实际问题选择合适的坐标系常见坐标系有笛卡尔坐标圆柱坐标(例子是制作一个旋转的物体绕着角色转动)球坐标赝矢量pseuvector百度百科:轴矢量是指在镜面对称变换下法分量不变而切分量改变的矢量(宇称为正的矢量),它是相对于极矢量而言的概念。矢量作为有方向的量,在坐标转动时,分量随坐标作相应变化。极矢量在宇称变换(空间完全反演)下,大小不变,方向变得相反。轴矢量在宇称变换下方向
GEA 3.4 流水线、缓存及优化 软实时系统:即不会因为帧率而死亡,优化通常是指提升帧率3.4.1 并行范式转移之前CPU慢而降低CPU处理强度而提高内存处理强度现在由于CPU具有并行能力普遍做法要使得CPU做更多的工作而避免访问内存!3.4.2 内存缓存处理器内含有内存缓存相较于主内存材料更贵并且更靠近核心速度更快 但也受限于大小和材料容量小很多内存缓存中通常保存最常使用的数据块 若CPU请求的数据已经存在于内存中称为缓存命中否则称为命中失败 命中失败会带来更高的消耗3.4.2.1 缓存线为了降低命中失败所带来的后果通常读