03 2022 档案
摘要:# HashSet使用散列表实现,其内部实现和Dictionary类似,可以看作是一个只有key没有value的Dictionary 【散列映射】 # 就是通过hashCode获得散列桶(buckets)的索引 # 使用了除留余数法(实现起来简单),以及散列桶数组的长度使用了素数的大小(素数使得索引
阅读全文
摘要:本质还是一颗二叉搜索树,只是在其基础上增加了AddFix和RemoveFix来做平衡性修正,确保不会出现极端不平衡的情况。 【规则】 a) 根节点为黑 b) 红色节点的子节点只能是2个黑 c) 黑色节点的子节点只能是:1个红,2个红,2个黑或没有子节点,不可能出现1个黑(如下图所示) d) 任一结点
阅读全文
摘要:BSTree的全称: Binary Search Tree 【规则】 # 左子节点的值总是小于父节点 # 右子节点的值总是大于父节点 【添加,查找】 # 添加和查找相对简单,按着规则来就可以,比当前值小左边(蓝色),大在右边(黄色) 【删除】 # 首先是要找到要删除的节点,然后再按下面的情况来删除
阅读全文
摘要:# 最简单的就是,直接将anchor先设为center-mid,然后再设置位置大小 public static void SetAnchoredPos(RectTransform rtf, float x, float y) { var v2Mid = Vector2.one * 0.5f; rtf
阅读全文
摘要:#if UNITY_EDITOR using UnityEditor; public class MyToggleMenu { const string PrefsKey_IsAutoReloadXxx = "MyToggleMenu.IsAutoReloadXxx"; static int _is
阅读全文
摘要:【math.random】 math.random() --返回一个[0, 1)之间的浮点数math.random(100) --返回一个[1, 100]间的整数math.random(1, 100) --返回一个[1, 100]间的整数math.random(20, 30) --返回一个[20,
阅读全文
摘要:# 展示最近打开的预制体历史 # 通过左右箭头就能快速打开最近打开过的预制体 public class AssetNavigateEditor : EditorWindow { [MenuItem("Window/MyTools/Prefab Open History", false, 1)] st
阅读全文
摘要:# 需要服务器返回当前页和总页数 local Pager = {} Pager.__index = Pager function Pager.new() local obj = {} setmetatable(obj, Pager) obj:ctor() return obj end functio
阅读全文
摘要:# 效果图 using System; using System.Reflection; using UnityEditor; using UnityEngine; #if UNITY_2019_1_OR_NEWER using UnityEngine.UIElements; #else using
阅读全文
摘要:# 展示TreeView的窗口 class SimpleTreeView2Window : EditorWindow { [MenuItem("TreeView Examples/Simple Tree View Window2")] static void ShowWindow() { var w
阅读全文
摘要:# 展示TreeView的窗口 class SimpleTreeViewWindow : EditorWindow { [MenuItem("TreeView Examples/Simple Tree View Window")] static void ShowWindow() { var win
阅读全文
摘要:自己跟自己排序的时候要返回false, 否则排序会不对 table.sort(arr, function(a, b) if a == b then return false end --其它排序逻辑 end)
阅读全文
摘要:# 展示表格的窗口 class TableViewWindow : EditorWindow { [MenuItem("TreeView Examples/Table View Window")] static void ShowWindow() { var window = GetWindow<T
阅读全文
摘要:# 在table的基础上做了轻量级封装,可以获取到元素数量,如果用table,需要每次遍历所有k,v才行 local map = {} map.__cname = "util.map" local null = {} map.null = null map.__newindex = function
阅读全文
摘要:# LRU: Least recently used,最近最少使用 【一般使用链表+map这两个数据结构来实现】 # 使用map来加快缓存数据的查找 # 使用链表来记录最近的访问情况,最近被访问了(Get和Put都属于是最近访问了),就会被移到链表头 # 当Put进去的数据超过缓存容量时,链表尾部的
阅读全文
摘要:# 归并排序也属于一种分治算法 1 local function _mergeArray(arr, first, mid, last, tempArr) 2 local i = first 3 local i_end = mid 4 5 local j = mid + 1 6 local j_end
阅读全文
摘要:# 从某个顶点出发,访问到其能访问的所有其他顶点,这些顶点是属于一个连通分量的。 # 以此类推,将图的每个顶点都作为出发点一次。 1 local ConnectedComponent = {} 2 ConnectedComponent.__index = ConnectedComponent 3 4
阅读全文
摘要:【前置条件】 # 安装好idea,或jetbrain的其他ide # 安装好emmylua插件 # 安装好lua命令行工具,并添加到环境变量,可以直接在命令行下运行lua文件 【】 # 先要添加一个运行配置 # 我们上面选的Debugger connect IDE,所以这边需要先启动ide的调试器,
阅读全文
摘要:【理论知识可以参考】 数据结构:哈夫曼树和哈夫曼编码 # 哈夫曼编解码过程要依赖一棵最优二叉树,ta具有最小带权路径长度wpl,所以首先需要生成这个最优二叉树 # 这棵最优二叉树也叫哈夫曼树 1 local HuffmanTreeNode = {} 2 HuffmanTreeNode.__index
阅读全文
摘要:【代码】 1 #if UNITY_EDITOR 2 3 using System.Collections.Generic; 4 using System.Reflection; 5 using UnityEngine; 6 using UnityEditor; 7 8 public class GU
阅读全文
摘要:【最小生成树的前提条件】 # 必须是连通图 # 所有边的权重都不能相同 【参考】 代码实现参考这个: Prim算法和Kruskal算法_日积月累,天道酬勤-CSDN博客 理论知识参考这个: 图的最小生成树 - 智者侬哥 - 博客园 (cnblogs.com) 【Kruskal法】 # 先把所有边按权
阅读全文
摘要:# 加权的有向,无向图都可以 # Dijkstra是A* 算法的特例 【理论知识的,可以参考】 漫画:图的最短路径问题_~~ LINUX ~~-CSDN博客 图论算法——最短路径算法_日积月累,天道酬勤-CSDN博客 该算法得到的是单源最短路径,即起点到任意目标点的距离 【lua实现】 1 loca
阅读全文
摘要:【lua实现】 1 local DfsCheckCycle = {} 2 DfsCheckCycle.__index = DfsCheckCycle 3 4 function DfsCheckCycle.new(g) 5 local obj = {} 6 setmetatable(obj, DfsC
阅读全文
摘要:# 无权无向图,无权有向图都可以 # dfs和bfs都可以知道是否可达 # dfs和bfs都可以获取两点之间的路径, 但bfs的路径是最短路径 【深度优先搜索bfs】 1 local Dfs = {} 2 Dfs.__index = Dfs 3 4 function Dfs.new(g) 5 loc
阅读全文
摘要:package.path = package.path .. ";G:/luafiles/?.lua" --lua文件搜索路径 package.cpath = package.cpath .. "G:/dllfiles/?.dll" --dll文件搜索路径
阅读全文
摘要:【主要用途】 # 编写gui代码时,会经常用设置Text的文本,设置Image的图片,注册按钮点击,禁用按钮点击这样的操作。 把这些控件绑定到Behaviour上,便于代码访问;减少硬编码去Find控件,硬编码的方式不好的地方在于,界面结构的一旦变化就需要改对应的Find代码,外一忘记就有问题了。
阅读全文
摘要:1 #if UNITY_EDITOR 2 3 using System.Collections.Generic; 4 using System.Reflection; 5 using UnityEditor; 6 using UnityEngine; 7 8 [CustomEditor(typeof
阅读全文
摘要:【理论知识,可以参考这边】 图论算法——加权有向图的数据结构_日积月累,天道酬勤-CSDN博客_加权有向图 【lua实现】 1 local WeightedDGraph = {} 2 WeightedDGraph.__index = WeightedDGraph 3 4 function Weigh
阅读全文
摘要:【常用操作】 # 合并 # 是否在同一集合 # 所属集合 【lua实现】 1 local UnionFind = {} 2 UnionFind.__index = UnionFind 3 4 function UnionFind.new() 5 local obj = {} 6 setmetatab
阅读全文
摘要:1 local ClassA = {} 2 ClassA.__index = ClassA 3 4 function ClassA.new(a, b) 5 local obj = {} 6 setmetatable(obj, ClassA) 7 8 obj:ctor(a, b) 9 return o
阅读全文