- 博客(127)
- 资源 (1)
- 收藏
- 关注
原创 Toon Shader失效常见问题
Toon Shader=依赖光照 + URP 后处理 + Scene Volume。Shader 内部自带 Toon 阴影(无需 URP 的 Shadow Ramp)导入任何场景永远不会像你的 Anime Toon Shader 那样突然变灰/失效。如果人物失去了二次元的效果 一般是没有光照或者是没有场景的后处理造成的。而Toony Colors Pro(TCP 2)的优点在于。即使不开 URP 也能跑(也有 Built-in 版本)换场景也不容易破坏 Toon 效果。不依赖 Volume。
2025-11-28 23:47:35
213
原创 Unity场景(Scene)的注意事项和易错点
1.Persp / Iso 切换1.Persp / Iso 切换Persp(透视) 你应该一直用这个Iso(正交) 场景会看起来“永远靠不近”,超坑人一旦点击了Persp 就会从透视变为正交Unity 的 Scene 面板默认是近大远小视角可以靠近物体和游戏实际效果一致但只要你不小心。
2025-11-24 03:11:13
840
原创 FinalIK手册之AimIK
AimIK常用的功能:看某物让武器指向目标上半身自然转向交互动作时上半身微调怪物/人类NPC跟踪玩家举例:鸟飞过来 → 角色头自然转向手电筒 / 枪口跟随目标怪物“注意到你”射击游戏 → 瞄准与 Interaction System 联动脚贴地”设计的 IK 系统 Animator+FullBodyBipedIK+GrounderAimIK 要朝向的目标。没有 Target 会直接失效。玩家射击 → 枪口对齐目标NPC 盯着玩家怪物脖子转向玩家。
2025-11-11 09:25:17
663
原创 FinalIK手册之代码编写适用
输入/移动(FixedUpdate) → Animator(FixedUpdate) → FinalIK(LateUpdate)输入/移动(Update) → Animator(Update) → FinalIK(LateUpdate)角色(如 CharacterController、KCC/运动学控制),镜头、UI。这里的CCP全名为characterControllerPro。的时间(暂停/子弹时间里动画继续走)不受 timeScale 影响。物理角色、布娃娃、物理互动。CC和CCP适用模式相同。
2025-11-11 00:04:44
214
原创 FinalIK手册之FullBodyBipedIK
Main Relative Position 会得到对应的另一个对应的身体部位的动作是否强烈 即相对位置 比如一只胳膊和另一只胳膊的相对位置。BendGoal 用于肢体向物体弯曲 可以写一个空对象 然后将其弯曲 然后还需要调整BendGoal Weight的权重 来看到效果。小知识:机械体膝盖为侧向方向 反关节机器人是后弯 人类的膝盖方向是向前的。└── Bend Goal(一个小的 transform)而下面的Use Thighs会使臀部更容易跟随人物。Body Weight 可以获取到全身的动作。
2025-11-11 00:01:43
268
原创 LintCode第533题-两数和的最接近值
通过题目 我们可以了解到求两个最小插值 即最值问题优先想到是否可以用动态规划 但动态规划的思想是逐步递推,但显然题目是前一个数组值对当前的所求数组差值没有任何影响,即放弃动态规划.//dp[i]//当前数值与target的差值 前一个不依赖与后一个 即不是递推关系。又因为是两数和 首先想到双指针 在进行数组排序后 遍历一次即可得到两数和最接近的值。方法2:(优先对数组进行排序 然后进行一次遍历即可)以O(nlogn)时间复杂度进行操作。,从中找到两个数字使得他们和最接近。
2025-09-12 11:12:45
419
原创 LintCode第513题-完美平方
dp[11]:候选 = dp[10]+1 (=3), dp[7]+1 (=5), dp[2]+1 (=3) ⇒。dp[10]:候选 = dp[9]+1 (=2), dp[6]+1 (=4), dp[1]+1 (=2) ⇒。dp[9]:候选 = dp[8]+1 (=3), dp[5]+1 (=3), dp[0]+1 (=1) ⇒。dp[5]:候选 = dp[4]+1 (=2), dp[1]+1 (=2) ⇒。dp[3]:候选 = dp[2]+1 = 3 ⇒ dp[3]=3(1+1+1)
2025-09-08 12:45:46
631
原创 LintCode第486题-合并k个排序数组
只拷贝本次合并的区间,而不是整个数组 并且要包含end 因为数组的边界是 0,sortList.size()-1 而这里取值范围的下标值一定在范围内。// write your code here 典型的合并排序 或者直接都放在一起 直接用Arrays.sort排序。// write your code here 典型的合并排序 或者直接都放在一起 直接用Arrays.sort排序。思路:该题是典型的归并排序思想 或者使用现成的Collections.sort进行排序。//temp的默认数组下标指针。
2025-09-07 11:36:38
546
原创 LintCode第443题-两数之和 II
/ O(n log n) 其中内部实现Arrays.sort(int[]) 用的是双轴快速排序 即底层是快速排序法。// 对固定的 j,i..j-1 全部与 j 配对均满足 > target。给一组整数,问能找出多少对整数,他们的和大于一个给定的目标值。O(1) 额外空间以及 O(nlogn) 时间复杂度。思路:使用双指针法来解决两数之和的问题。代码2:时间复杂度为O(n log n)代码1:时间复杂度为O(n²)
2025-09-05 10:56:52
368
原创 LintCode第431题-找无向图的连通块
思路:很明显这是一个关于图的遍历的问题 ,有两种主要思想 一种是宽度优先搜索,一种是深度优先搜索,我们采用深度优先搜索来遍历整个图(注意该图是无向图)//自动将重复的点去除。(一个无向图的连通块是一个子图,其中任意两个顶点通过路径相连,且不与整个图中的其它顶点相连。有向图:要么是弱连通分量(忽略方向),要么是强连通分量(双向可达)。图中的每个节点包含一个label属性和一个邻接点的列表。//计算所有的节点的数量。无向图:连通块 = 普通连通分量。无向图与有向图相比的区别在于。找出无向图中所有的连通块。
2025-09-04 12:02:49
870
原创 LintCode404题-子数组求和 II
/ 归并:把两个有序段 prefixSums[left..mid) 和 prefixSums[mid..right) 合并为有序的 prefixSums[left..right)* 原地归并辅助:将 prefixSums[left..mid) 与 prefixSums[mid..right) 合并为有序的 prefixSums[left..right)// 对于每个 prefixSums[r],在左半查找落在 [prefixSums[r]-end, prefixSums[r]-start] 的个数。
2025-09-02 13:44:28
574
原创 LintCode第401题-排序矩阵中的从小到大第k个数
/ 计数器:表示当前弹出的元素个数。// 最后返回的结果。需要每次都从当前候选里挑出最小的那个再扩展,而不是先随便收集一些数再统一排序。// 遍历其右边的第一个元素和下面的第一个元素。// 依次弹出k次,第k次弹出的就是答案。// 先进入一个节点 即0,0位置节点。// 小顶堆:每次取出全局最小的元素。排序矩阵的定义为:每一行递增,每一列也递增。// 把 (0,0) 放进堆。是矩阵的宽度和高度的最大值。思路:小顶堆(k 路归并法)
2025-09-01 13:04:49
371
原创 lintCode第391题-数飞机
描述给出飞机的起飞和降落时间的列表,用序列interval表示. 请计算出天上同时最多有多少架飞机如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权。样例难点1:举例:比如把区间拆成两个数组,排序后再双指针,会不会“乱配对”,导致原本(1,10)的组合关系丢失。其实不用担心,因为 我们不需要知道哪架飞机对应哪架,只需要知道在时间线上“有多少飞机起飞过、多少飞机降落过”即任意时刻,有多少个区间覆盖了它任意时刻,有多少个区间覆盖了它。
2025-08-27 17:00:32
472
原创 lintCode第363题-接雨水
/rightIndex 从 n-1 开始。//雨水公式为Max(LeftHeight[i],RightHeight[j])-heights[k],另一侧即使未来如何起伏,都不会让这格的上界更低于当前已知的那一侧上界(真的更低的话,本轮就会选到那一侧去处理了),就处理左侧这一格;否则处理右侧这一格。//统计的所有面积之和。的海拔图, 计算这个海拔图最多能接住多少(面积)雨水。该代码时间复杂度为 O(n) , 空间复杂度为O(1)O(n) 时间, O(n) 空间也可以接受。O(n) 时间, O(1) 空间。
2025-08-26 13:02:17
868
原创 LintCode第200题-最长回文子串
while(LeftIndex>=0&&rigthIndex<n&& s.charAt(LeftIndex)==s.charAt(rigthIndex))//比较所有当前区间的元素。while(LeftIndex>=0&&rigthIndex<n&&s.charAt(LeftIndex)==s.charAt(rigthIndex))//比较所有当前区间的元素。i是每个中心 然后中心向左右两边扩展 自然就不会遗漏 注意这里的i表示的是回文中心 并不是表示的是当前截取的字符串长度。每个回文都有唯一中心;
2025-08-25 12:11:45
402
原创 LintCode第194题-寻找单词
思路:该题 既不是求通过的数量和 所以不用动态规划(动态规划不能求具体的值) 只能统计 也不是DFS BFS因为既不是树型结构也不是图结构 该题使用双指针最为合适。//采用双指针法 一个指向每个对象的第一个元素 一个指向字符串的第一个元素 即不能用DFS BFS 也不是动态规划问题。// 内层“双指针”扫描:每次推进 strIndex,遇到相等时 dictStrIndex++// 改:以 j == word.length() 判断完全匹配。,你需要找出字典里的哪些单词是字符串的子序列,返回这些单词。
2025-08-24 11:33:19
278
原创 LintCode第178题-图是否是树
边的列表 (给出每条边的两个顶点), 写一个函数去判断这张`无向`图是否是一棵树。// 无向图两侧都要检查:从 a 到 b。树的遍历方法有且边一定会小于节点数 即等于n-1 而且还需要联通。} // 从 b 到 a。// 树必须:边数 = n-1。// 单节点且无边 ⇒ 是树。//以“访问到所有节点”为准。是同一条边, 因此它们不会出现在列表中.假设列表中没有重复的边。178 · 图是否是树。
2025-08-22 13:23:13
374
原创 LintCode第176题-图中两个点之间的路线
directedGraphNodeSet.contains(neighDirectedGraphNode))//避免重复扫描 Set可以避免重复扫描到相同的元素。if (neighDirectedGraphNode == t)//判断每个节点是否和目标点t一样 有的话说明从s开始//可以进行广度优先搜索拿到目标点。// 同一节点视为可达。思路:本题考察图的遍历问题 可以用宽度优先搜索和广度优先搜索。给出一张有向图,设计一个算法判断两个点。
2025-08-21 12:57:03
309
原创 LintCode第151题-买卖股票
right[i] = max( right[i+1], // 干脆把交易放到更靠右的后缀 maxPriceOn[i+1..n-1] - prices[i] // 今天买、将来以最高价卖 )猜想 如果将两段计算 left[i]和right[i]的数组合并在一起可以吗 可以的 但j需要变为j-1-i动态计算 而不是从右向左开始遍历 即j的起始值从。// 枚举切点 k:左段 [0..k] 做一次交易,右段 [k+1..n-1] 做一次交易。// ---- 反向:更新 right[j](今天买、将来卖)
2025-08-19 14:42:36
912
原创 LintCode第143题-颜色分类 II
public void sortColors2(int[] colors, int k) {//一定有重复的元素 考察排序算法特别是交换算法 常用的有冒泡和快速排序。public void sortColors2(int[] colors, int k) {//一定有重复的元素 考察排序算法特别是交换算法 常用的有冒泡和快速排序。给定一个有n个对象(包括k种不同的颜色,并按照1到k进行编号)的数组,将对象进行分类使相同颜色的对象相邻,并按照1,2,...k的顺序进行排序。而这一种是通过颜色进行分割的。
2025-08-18 12:22:20
866
原创 LintCode第137-克隆图
描述克隆一张无向图. 无向图的每个节点包含一个label和一个列表neighbors. 保证每个节点的label互不相同.你的程序需要返回一个经过深度拷贝的新图. 新图和原图具有同样的结构, 并且对新图的任何改动不会对原图造成任何影响你需要返回与给定节点具有相同 label 的那个节点/*** }* }*/思路:该题的数据结构是考察邻接表的深度拷贝那么问题来了 什么是邻接表的浅拷贝和深度拷贝拷贝时只复制引用,不新建对象。
2025-08-17 13:04:14
919
原创 LintCode第116题-跳跃游戏
/ 扩展最远可达 关键是当前的下标位置+可跳的步数i + a[i] 注意不是累加步数。//状态转移dp[i]=dp[i-1]&&(a[j]>=(j-i));//a[j]的长度指的是跳跃的最大长度i>=1 i代表其实位置 j代表终点的位置。4.边界条件/遍历顺序/答案 i 从小到大,j 在 [0, i-1] dp[n-1];2.状态转移方程dp[i]=dp[j]&&a[j]>=(i-j) 其中 i>=j。if(a==null||a.length==0) //边界条件。
2025-08-16 12:39:54
636
原创 LintCode第107题-单词拆分-新版
/minWordLength:保证不检查比任何词都短的片段 → 可以提前从 i=minWordLength 开跑,//并收紧 j 的终点 剪枝截取片段是从j至i。就是存在某个 j(0 ≤ j < i),使得前缀 s[0..j) 可拆且最后一段 s[j..i) 在字典里,那么 dp[i] 为真。//dp[0]=空串,dp[4]=整串结果 →自然是 n+1 即dp[]数组是状态表示 表示长度为。dp[i] = OR_{j<i}( dp[j] && inDict(s[j..i)) ) OR即逻辑或。
2025-08-15 13:50:26
666
原创 lintCode第1835题-停在原地的方案数1
public int numWays(int steps, int arrLen) {//最终返回的是dp[steps][0]val=val+dp[s-1][p-1];p++)//p表示位置。状态dp[steps][0] 其中状态就是循环的两个条件 用来计算所有的方案数。的操作序列总数最多是 3^15(每步 3 种:左/右/不动)。//初始化 dp[0][0]=1 其余为0。//状态dp[steps][0]
2025-08-13 14:27:34
930
原创 LintCode第1526-N叉树的前序遍历
/清空访问的结果 对于多次调用preorder是必不可少的。// 清空上次的结果。为保证和递归一样的“从左到右”顺序,这里反向入栈 由于栈有先进后出的特性 所以需要反转。// 前序:先访问自己。// 已访问过就跳过。给定一个 N 叉树,返回其节点值的前序遍历。思路:该题使用递归法或者迭代法。这棵树如下所示(左侧的)
2025-08-12 14:33:00
572
原创 LintCode第1181题-二叉树的直径
public void inorderAndUpdate(TreeNode treeNode) { //计算每个点的最长路径的长度 其中只需访问所有的节点 每个节点的高度上一步已经计算好。第二种速度快直观:直接使用后序遍历在遍历的同时 会计算出每一个节点的高度 会一次性的计算出该节点的直径值 即一次遍历即可求出最长的二叉树的直接(因为将第一种方法的两步放在一块了 原因是由于。后序遍历的天然特性 在访问最终根节点前 左右子树的高度都已经被访问 即可以在访问根节点的同时拿到左右子树的高度。
2025-08-11 15:28:56
688
原创 LintCode第604题-滑动窗口内数的和
j++)//双指针法 扩窗累加(右指针 j 往右走)currentSum=currentSum-nums[i];//适当的减少 减去最前面一位 即写完收缩。给你一个大小为n的整型数组和一个大小为k的滑动窗口,将滑动窗口从头移到尾,输出从开始到结束每一个时刻滑动窗口内的数的和。//统计返回数组的长度大小。}else if(j-i+1==k) //窗口满足长度 k 时记录答案。//统计累加和 符合条件就记录 不符合记录进行累加和适当的减少。
2025-08-10 15:23:42
425
原创 unity中如何让原人物动画兼容新人物的动画
Avatar 是绿色有效的(Configure 骨骼映射全绿,姿态为 Unity 认可的 T-Pose),运行时 Animator 组件也要引用正确的 Avatar,这样 Unity 才能把动作映射到新骨骼上。同样 Avatar 绿色有效,这样动画才能转成“抽象人体部位动作”,可跨模型重定向。预览时要在右下角窗口绑定新人物的。
2025-08-10 11:31:19
336
原创 LintCode第547题-两数组的交集
/下面两句时间复杂度为O(m+n)for (Integer v : smallSet) //时间复杂度为O(min(m, n))for (Integer v : smallSet)// 时间复杂度为O(min(m, n))// 【新增】先数一遍真实交集个数(保持你的双循环+break 结构)// 选小集合作为外层,contains 判交集 通过判断可以判断是返回的长度。则最终时间复杂度为Math.max(O(min(m, n)),O(m+n))即O(m+n)为什么会变成这样 因为。
2025-08-09 21:30:22
501
原创 LintCode第433题-岛屿的个数
/因为这里的岛屿不为锯齿状即规则二维数组 所以可以用grid[0].length计算出来所有的列都为这个值。private void dfsSurroundIsland(boolean[][] g, int r, int c)//消灭上下邻接重复的岛屿 这一片岛屿只算1次。g[r][c])//g[r][c]表示 如果是海洋的话就停止了。if(grid[r][c])//首次遇见一个小岛。// 上、下、左、右(顺序固定)
2025-08-08 15:18:16
378
原创 LintCode第397题-最长上升连续子序列
表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。,因为只要连续性断了(不满足递增/递减),我们就自动地从当前元素开始重新统计,就等价于“从新起点开始”思路: 看见子序列 最长 首先想到动态规划 动态规划(DP)通常用来解决。//注意要是连续的 而且可以从左至右 也可以从右至左。//注意要是连续的 而且可以从左至右 也可以从右至左。在 O(n) 的遍历中,
2025-08-07 12:15:31
862
原创 LintCode第45题-最大子数组差
45 · 最大子数组差描述给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值∣SUM(A)−SUM(B)∣最大。返回这个最大的差值。子数组最少包含一个数子数组是数组中的一个,并且固定地保持数组元素的顺序样例6解释:子数组是 [1,2] 和[-3].所以答案是 6.1解释:子数组是 [0] 和 [-1].所以答案是 1.挑战时间复杂度为O(n),空间复杂度为O(n):首先我们判断该题属于哪种类型题题目关键字是子数组-通常是连续的一段数组。
2025-08-05 17:39:21
838
原创 lintCode第65题- 两个排序数组的中位数
B[0], B[1], B[2] 中至少有一个比 A[2] = 5 大(比如 B[2] = 6),而 A[0~2] 全部 ≤ 5。getKth(A, start1=0, end1=2, B, start2=2, end2=2, k=3) 这时候的下标索引是。k等于5等于找第5小的元素 那么A B的k/2个元素 k/2=1 即为A[k/2]=A[1]=4 A[k/2]=B[1]=3。合并后的数组为[1,2,2,3,3,4,4,5,5,6],中位数为(3 + 4) / 2。
2025-08-04 16:11:42
732
原创 LintCode第29题-交叉字符串
描述给出三个字符串s1s2s3,判断s3是否由s1和s2交叉构成。true解释:s3 是由 s1 与 s2 交叉构成。false解释:s3 不是由 s1 与 s2 交叉构成。false解释:s3 不是由 s1 与 s2 交叉构成。思路:核心是s3字符串是否由s1和s2。
2025-08-03 14:18:05
644
原创 LintCode第104题-合并k个排序链表
/通过不停的比较 拿到当前所有list列表的最小值的节点。public ListNode mergeKLists(List<ListNode> allLists)//其中mergeKLists是平台要求必须以其为名。//虚节点 没有任何意思 只是为了操作方便 类似于单链表的头结点 方便数据的操作。将2->6->null、5->null和7->null合并成一个升序的链表。将2->4->null、null和-1->null合并成一个升序的链表。//双链表的插入 由于题目已知每个链表是升序的。
2025-07-16 14:32:36
922
原创 LintCode第102题-带环链表
/即每次第一个节点走两步 如果是环终将追击上第二个节点 因为第二个节点走的慢每次走一步。除了使用快慢指针外 还有一种穷举的方法 因为题目告诉了不超过1000的长度 所以。思路:两种方法 第一种使用快慢指针法 也就是双指针法 第二种是穷举法。//如何判断一轮结束呢 通过计数器1000来判断。给定一个链表,判断它是否有环。链表长度不超过10000。
2025-06-26 16:24:50
346
原创 LintCode第42题-最大子数组 II-使用前缀和优化 + 动态规划法
描述给定一个整数数组,找出两个 不重叠 子数组使得它们的和最大.每个子数组的数字在数组中的位置应该是连续的.返回最大的和子数组最少包含一个数样例 1:输入:输出:解释:最大的子数组为 [1, 3] 和 [2, -1, 2] 或者 [1, 3, -1, 2] 和 [2].样例 2:输入:输出:解释:最大的子数组为 [5] 和 [4].挑战要求时间复杂度为 O(n)上一篇提到:动态累加和 + 最大子数组和这一篇使用前缀和优化 + 动态规划思路:通过不重叠以及如何计算
2025-05-19 14:21:30
627
原创 LintCode第42题-最大子数组 II
最大的子数组为 [1, 3] 和 [2, -1, 2] 或者 [1, 3, -1, 2] 和 [2].前缀和快速计算 左侧最大子数组和 和 右侧最大子数组和,从而找到两个不重叠子数组的最大和。//依次遍历两个左子数组和右子数组 得到其组合的最大值即为最大的返回值。每个子数组的数字在数组中的位置应该是连续的。// 计算最大不重叠子数组和。// 左侧最大子数组和。// 右侧最大子数组和。最大的子数组为 [5] 和 [4].动态累加和 + 最大子数组和。子数组使得它们的和最大。主要分为两种解题方法。
2025-05-12 22:15:38
458
原创 LintCode第4题-丑数 II
/返回的时候要 1 2 3 5才能算是丑数 由于已经把特殊的1包含进去了 所以只需要判断2 3 5即可。//1对应的返回值为0。//更新指针:确保没有重复 注意这里的确保意思为。[1,2,3,4,5,6,8,9,10,....],第9个丑数为10。//第一个丑数是 1。//返回的时候要 1 2 3 5才能算是丑数。确保每次生成的 “下一个丑数” 是 唯一且最小的。//除的时候要是 2 3 5。:表示所有已生成丑数中,下一个乘以。//除的时候要是 2 3 5。
2025-05-11 12:42:23
522
原创 LintCode第807题-回文数II
2.利用左右双指针进行同步检查 如果有不相同的字符则不是回文数 当循环结束后如果都相同则是回文数。1.将n以2进制的求余 得到每一次最低位的二进制数 然后再将其逆序排序 就会得到正确的二进制数。//n起始数字转化为二进制。//左右比较即会问比较。的二进制表示是否为回文数。
2025-05-11 10:42:23
452
eclipse色彩配置
2015-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅