编辑器下的Time

在编辑器下如果你要使用时间相关的操作,当你使用在EditorWindowUpdate中使用Time.delta,会发现好像非常的不准确,时快时慢的。

就像下面:

1
2
3
4
5
6
7
8
9
10
private void Update()  
{
//...
OneFrameTimer -= Time.deltaTime;
if (OneFrameTimer <= 0)
{
OneFrameTimer = 1f / FPS;
CurrentFrameID += 1;
}
}

我们可以使用编辑器下的协程:EditorCoroutineUtility,和DateTime来配合获取一个准确的时间。

Read More

ScriptableObject深拷贝

深拷贝ScriptableObject可以使用Object.Instantiate

1
2
3
4
5
6
7
public static StandardClip CopyClip(AETimelineAsset asset, int trackIndex, int clipIndex)  
{
StandardClip clip, newClip;
var tempAsset = Object.Instantiate(asset);
newClip = tempAsset.Tracks[trackIndex].Clips[clipIndex];
return newClip;
}

但是不知道这样会不会造成内存泄漏?

答案是会,在这种情况下,如果父对象的引用没有被持有,但是它的成员对象的引用被持有了,会导致父对象无法被垃圾回收,从而可能造成内存泄漏。示例中,即使 tempAsset 是一个临时变量,在函数返回后会被销毁,但是 newClip 对象仍然保留了对 tempAsset 的引用,因为它是从 tempAsset 中获取的。

Read More

博客改造计划

为什么要改造?

1.界面(之前的)太花哨了

2.这个主题(之前的)在归档中寻找文章不方便
博客的归档,每次点进去一个文章,返回之后,左边的分类树就刷新了,像看同级分类下的其他文章很不

3.想要将博客清理归纳一下
将转载放到一起,自己写的放到一起,目前这个主题暂时无法做到

4.需要强大的多级分类和Tag功能

框架选择

Hexo

使用Ejs编写

Read More

1035. 不相交的线

Problem: 1035. 不相交的线

就是 53. 最大子数组和

Code

[]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
//就是 53. 最大子数组和
//使用二维动态规划
//dp[i][j] 表示text1[0...i]与text2[0...j]的最长公共子序列
int m = nums1.size(), n = nums2.size();
vector<vector<int>> dp(m + 1, vector<int>(n + 1));
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (nums1[i-1] == nums2[j-1]) {
//如果相同那么最长公共子序列+1
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
//如果不同取 两个数组 最长公共子序列最长的那个
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[m][n];

}
};

Read More

674. 最长连续递增序列

自认为这个解法是比代码随想录中哪个i-1要容易理解的。

42.最长连续递增序列

给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。

连续递增的子序列 可以由两个下标 l 和 rl < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。

所以本题目和上面题目的唯一区别是:本题要求子序列是连续递增序列

Read More