- 博客(366)
- 资源 (13)
- 收藏
- 关注
原创 MarkdownEditor 配置以及使用
注意:原本也不建议使用本地图片,因为 MarkdownEditor 编辑时插入本地图片确实是方便了,但是当需要把 .md 分享给别人的时候,就是灾难了,这个编辑器不会把图片打包一起存储,所以 转发的 .md 文件是不包含图片资源的,分享给别人也看不到图片。有分享解决说是 需要与 .md 文件夹的相对路径,感觉需要使用安装版本的 MarkdownEditor,我没有测试。MarkdownEditor有两个版本,都是国人开发的,都是开源免费的。如下:缺点:不美观,因为图片的base64编码很长很长。
2024-09-07 21:40:29 911
原创 Xml,Json,Protobuffer等序列化的区别。如何选型
XML 被设计用来传输和存储数据。XML 指可扩展标记语言(eXtensible Markup Language)。可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。以文本结构进行存储。它可以用来标记数据、定义数据类型,提供统一的方法来描述和交换,而且独立于程序语言或供应商的结构化数据。xml有丰富的编码工具,比如DOM、SAX等。
2024-07-31 21:26:04 761
原创 Unity 协同程序
每当Unity启动协程时,协程中的所有初始代码,从协程方法开始直到第一个yield语句,都会出现在跟踪中。Unity回调生成的协程(比如返回IEnumerator的Start回调)首先出现在它们各自的Unity回调中。Unity中的大多数脚本代码出现在单个位置的性能跟踪中,在特定的回调调用之下。在大多数情况下,当您调用一个方法时,它会运行到完成,然后将控制权返回给调用方法,以及任何可选的返回值。在Unity中,协程是一种可以暂停执行并将控制权返回给Unity的方法,但随后在它离开的地方继续执行。
2024-07-31 01:14:33 1154
原创 B树(B-tree)
如果 number > keyList[index], index++,如果 index >= childList.Count,查找失败,返回,否则继续循环执行 2 ,比较下一个 关键字 keyList[index]我在查询操作逻辑中隐含保留了一个 hot 节点,这个 hot 节点是最接近 number 的节点,如果查询成功,则 hot 不再起作用,如果查询失败,在 插入操作中 是有用处的。如果 number = keyList[index],则 在关键字中找到 了number,查询完成,返回节点。
2024-04-17 21:02:55 1107
原创 双向链表也叫双链表
双向链表中任意一个节点,都可以通过通过它的前驱节点和后继节点,访问其他节点。每个节点都有两个指针,分别指向 直接前驱节点、直接后继节点。
2024-04-17 15:04:07 568
原创 红黑树(Red Black Tree)
红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是严格意义上的平衡二叉树(AVL),在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,但对之进行平衡的代价较低,其平均统计性能要强于 AVL。红黑树是继承自 二叉搜索树的,上面代码没有 查询函数的实现,因为红黑树的查询跟 二叉搜索树是一样的,所以直接继承子 二叉搜索树,相关代码请到我关于二叉搜索树的篇章寻找。红黑树的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它查找,插入和删除的时间复杂度为O(logN)
2024-04-16 17:05:02 351
原创 伸展树-搜索树
/ 因为根节点被删除了,搜索会将右子树中节点值最接近查找数值的节点返回,这个节点就是右子树中最小的节点,然后右子树中最小节点必伸展至根,且(因无类同节点)其左子树必空。// 根节点 = 其右子树,也就是原本的根节点已经被删除了。在这种情况中,X有一个父节点P和祖父节点G(P的父节点)。// 令 新的根节点左子树 = 上面存储的左子树。存在,此时有一个隐含信息,因为搜索到了该节点,那么这个节点此时已经被伸展到树根了。关于查询操作中,将节点伸展至根节点的操作,应用伸展(splaying)技术。
2024-04-16 16:04:15 870
原创 平衡二叉树(AVL)
2:平衡二叉树中所有节点的左右子树的高度差 小于等于1(称之为平衡因子)在非理想状态下,二叉搜索树的时间复杂度将会降低为 O(N),数组级别。二叉搜索树的 查询、插入、删除 时间复杂度都为 O(logN)LL 型:也称作左左型,在破坏节点的左边的左边插入而导致失衡。LR 型:也称 左右型,在破坏节点的左边的右边插入而导致失衡。RL 型:也称右左型,在破坏节点的右边的左边插入而导致失衡。RR 型:也称右右型,在破坏节点的右边的右边插入而导致失衡。假如我一组数据顺序为:1、2、3、4、5、6。
2024-04-15 21:01:17 402
原创 二叉搜索树
第 (2.1) 种:Node 只有右子树,Node可以直接删除(直接使用Node右子树替换Node),跳转到第 3 步(Node,Node右子树)第 (2.2) 种:Node 只有左子树,Node可以直接删除(直接使用Node左子树替换Node),跳转到第 3 步(Node,Node左子树)如果 nextNode 是 Node 左子树最大的节点,则 nextNode 没有右子树了(因为右子树比它的值更大,右子树应该是最大的节点)第 (2.3.1) 获取 Node 左子树中最大的节点 也叫直接后继节点。
2024-04-15 17:12:18 749
原创 二叉树-数据结构
*树的层次:**从根节点开始,假设根节点是第一层,根节点的子节点为第二层,一次类推,如果某一个节点位于第L层,则其子节点位于第 L+1层。**树的深度:**也成树的高度,树中所有节点的层次最大值称为树的深度。**叶子节点:**也称为终端节点,没有子树的节点或者 度为零的节点。**分支节点:**也成非终端节点,有子树的节点或者 度不为零的节点。**节点的度:**一个节点拥有子树的数量称为节点的度。**节点的高度:**从节点到其子树叶子节点最长的路径。**节点的深度:**从根节点到节点的路径长度。
2024-04-12 21:09:34 384
原创 JPS+(Jump point search plus)寻路算法
JPS+ 是在 Jps 的基础上对地图进行了预处理,将数据记录在节点上JPS 是运行时计算节点在某个方向上的跳点JPS+ 预处理则是将 每个节点每个方向上的跳点、障碍信息记录,在运行时,不需要经过计算,直接获取某个方向上的跳点,节省大量时间和空间,提升计算速度JPS+ 地图预处理前提条件1:地图必须是静态的,预处理时和运行时地图必须是一样的,不对在运行时添加、删除、修改节点状态2:预处理需要每个节点存储一些数据,对内存占用较大3:预处理需要时间较长,地图内每个节点都要进行数据处理,时间复杂
2024-03-19 17:37:53 1001
原创 D-Star 寻路算法
D*算法:D* 算法”的名称源自 Dynamic A Star,最初由Anthony Stentz于“Optimal and Efficient Path Planning for Partially-Known Environments”中介绍。它是一种启发式的路径搜索算法, 适合面对周围环境未知或者周围环境存在动态变化的场景。
2024-03-14 14:51:08 1125
原创 N 皇后问题
B. 然后递归到下一行(M+1行),当我们递归到某行(S行)发现没有位置可以放置皇后了,我们就要回溯 执行如上 (5),返回到上一行(S-1 行)没有放置皇后的时候,然后在上一行(S-1 行)换一个可以放置皇后的位置,来放置皇后。A.使用递归函数来实现,按照每次递归一行棋牌来考虑,每一行 (M行) 只要有一个位置满足如上 (3) 条件,就可以放置皇后到该位置,我们记录放置皇后的位置,然后执行 如上 (4),(4).在一个位置放置一个皇后,记录皇后位置,并将其所在同一行、同一列、同一斜线上的格子数值 +1。
2023-09-26 22:35:35 509
原创 前缀树-Trie树
前缀树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高
2023-09-26 16:14:04 332
原创 Unity Timeline使用
/ 自定义的信号 public class CustomSignal : SignalEmitter {// 自定义参数 public string eventName;创建一个 Signal Track 轨道,然后在右侧右键,如下可以看到新建的信号发射器创建一个接收信号的GameObject我命名为,添加脚本,并拖拽到信号轨道先看效果,下图中 TimeTest->Image Track 是自定义的轨道绑定的对象类型为 UGUI->Image。
2023-05-06 20:48:58 5733 1
原创 Unity Batching 批处理
了解的应该都知道 (4.1)的操作要比(4.2)慢很多,因为每复制一个文件,要分配内存,创建操作句柄等额外工作,如果复制文件很多,会造成很大的性能开销。顶点属性不能超过 900 个(不是Mesh 的顶点数,而是Shader使用的 顶点坐标、法线、UV坐标等属性总和不能超过 900,如果同时使用了顶点坐标、法线、UV坐标属性,则顶点数不能超过 900 除以 3 = 300个)必须使用相同的材质(材质相同的物体,不同的只有顶点数据,可以将顶点数据合并在一起,再发送给GPU)
2023-04-15 23:39:01 1408
原创 Unity LOD 技术
LOD Bias: LOD 偏离,LOD 级别基于物体在屏幕上的大小,当物体大小在两个LOD级别之间时,可以选择使用低细节模型或高细节模型,数值范围 [0, 1],数值越接近0,越偏向于显示低细节模型。预览:左右拖拽 LODGroup 组件下方显示的 摄像机图标,可以在编辑器下实时预览摄像机距离模型不同位置时显示的模型,同一时刻只会显示 立方体、球体 、胶囊体 中的某一个。其中 0、1 、2 就是级别,0 为最高级(使用精度最高的模型),2 为最低级(使用精度最低的模型)当物体距离摄像机距离较近时显示。
2023-04-15 13:18:11 1491
原创 Unity 打包代码到 DLL
Unity 打包代码到 DLL使用Unity API PlayerBuildInterface.CompilePlayerScripts 将项目中的代码生成为 DLL 程序集
2023-03-05 16:29:06 3780
原创 UGUI 使用 UIParticle 实现 UI 上显示 Particle System 以及 层级遮挡 和 Mask
UGUI 上使用 Particle System 支持 Sorting Layer 排序渲染
2023-03-04 11:55:13 6465 2
原创 Git 回滚 checkout、reset、revert
Git 回滚 reset、checkout、revert首先看一下 Git 的工作流程checkout 是检出的意思,作用是将某次 commit 的状态检出到工作区,它的过程是先将 HEAD 指向某个分支的最后一次 commit,然后从 commit 恢复 index,最后从 index 恢复工作区。通常用于切换分支,创建新分支,即HEAD 从一个分支切换到另一个分支,或创建并切换到新分支。(1)放弃工作区中的全部修改命令:git checkout .(2)放弃工作区中某个文件的修改命令:g
2022-05-07 19:29:17 3823
原创 Git stash 保存进度
Git stash 保存进度git stash 用来保存当前的工作目录和暂存区状态,并返回到干净的干工作空间,什么意思呢?举个例子假如当你正在某一个分支上忘我的书写你优美的代码时,有小伙伴让你帮忙看一下其他分支上的某个问题,而你的代码才写了一半又不想上传到远端,又不能丢弃,那就可以选择将当前所有修改暂存起来。如下我在工作区添加了文件 A6.txt首先执行:git add . 将所有修改添加然后执行: git stash save “A6.txt” 命令中的 “A6.txt” 是注释,方便以
2022-05-07 15:19:46 362
原创 Git 添加、提交、推送、合并分支、删除分支等
Git 添加、提交、推送、合并分支、删除分支等添加一个文件(1) 查看本地修改信息执行命令:git status(2) 添加修改执行命令:git add "文件名或目录"添加具体的文件或者文件夹如果想一次性添加所有修改执行命令:git add .再次执行 git statusA/A1.txt 已经添加成功(3) 提交修改执行命令 git commit -a -m "注释"(4) 将修改推送到远端执行命令: git push(5) 撤销 add,执行了 git add 后又
2022-05-07 12:42:24 696
原创 Git 检出、查看分支、切换分支、新建分支等简单命令
Git 检出、查看分支、切换分支、新建分支等简单命令首先需要安装 Git 并且配置 Git 环境变量在需要检出工程的目录鼠标右键打开命令窗口首先拿到 Git 仓库 SSH 地址或者 https 地址(1) 执行 clone 命令,下面使用的是 SSH 地址git clone git@github.com:XXXXXXXX/TestGitCommand.git然后进入到 .git 文件夹所在目录,就在 clone 出来的项目文件夹根目录注意: .git 是隐藏文件,需要自行设置显示隐藏的文
2022-05-07 12:06:03 18292
GOAP AI 实现
2018-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人