Bob Blog

If you want knowledge,you must toil for it.

荒野大镖客2画面分析

画面抓帧

使用renderdoc对《荒野大镖客2》Pc版本画面抓帧分析。 [光] 1、spot light,point light,directional light [场景] 1、建筑物件,地形,植被,水体,云,天气雨雪,雾 2、马,角色 [脚印] Parallax Occlusion Mapping 参考资料: the Atmospheric World gta

阅读UGUI源码

事件机制

[Selectable] Button/Dropdown/InputField/Scrollbar/Slider/Toggle都是继承Selectable实现,Transition实现状态间切换。 public class Selectable : UIBehaviour, IMoveHandler, IPointerDow...

阅读UGUI源码

关于顶点数据

了解UGUI源码更方便为游戏性能调优和扩展项目所需特制组件,UGUI源码Git地址。 [顶点辅助类] 存储Mesh所需的数据:顶点,顶点色,UV,法线,切线,和三角面顶点索引,数据都用ObjectPool构成的ListPool来维护【游戏设计模式:对象池模式】,这样可反复使用节约内存。如果是自定义特制形状UI组件就需要借助VertexHelper来组织数据。数据最终通过CanvasRen...

阅读UGUI源码

Graphic

[GraphicRegistry] GraphicRegistry管理所有Graphic,内部通过IndexedSet维护数据 public class GraphicRegistry { private readonly Dictionary<Canvas, IndexedSet<Graphic>> m_Graphics = ne...

Unity AssetBundle

文件格式解析

Unity 生产资源内部文件格式说明: Asset Bundle Internal Structure 文件类型 序列化文件(serializedFile) 序列化文件是AssetBundle的重要组成,本质上是对象和元数据的集合. 文件头(header) 文件以0x14字节开头. 文件头中数据都是以big-endian(大端模式:数据的低位保存在内存的高地址中,而数据...

数据结构与算法

链表

学习数据结构与算法资源 《算法导论》- Cormen,T.H. 算法可视化项目 算法可视化项目 算法可视化项目 topcoder leetcode coursera 以下题目均来自leetcode 翻转链表 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1...

数据结构与算法

递归、回溯、分治

以下题目均来自leetcode、poj 回溯法又称为试探法,但当探索到某一步时,发现选择达不到目标,就回退一步重新选择。 子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3],   [1],   [2],   [1,2,3],   [1,3],   ...

数据结构与算法

贪心

以下题目均来自leetcode、poj 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,...

数据结构与算法

栈、队列、堆

以下题目均来自leetcode、poj 实现栈-先进后出 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意: 你只能使用队列的基本操作– 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 ...

数据结构与算法

搜索

以下题目均来自leetcode、poj 岛屿数量 给定一个由 ’1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出: 1 示例 2: 输入: 11000 11000 00100 00011 ...