自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 NGUI源码分析(二)之 自定义 UIScrollView 01版本

本篇文章基于NGUI (3.12.0)版本源码下的代码分析,如果代码和大家自己的不同,可能是版本不同。如果文章中分析有误希望大神看见指点迷津,大家好,我就是一个勤勤恳恳爱开发的码农,希望和大家一起学习研究。

2021-07-11 17:32:36 428

原创 NGUI源码分析(一)之 UIScrollView

Scrollview文章说明二级目录三级目录文章说明本篇文章基于NGUI (3.12.0)版本源码下的代码分析,如果代码和大家自己的不同,可能是版本不同。如果文章中分析有误希望大神看见指点迷津,大家好,我就是一个勤勤恳恳爱开发的码农,希望和大家一起学习研究。二级目录三级目录...

2021-07-11 17:32:04 1191

原创 Unity NGUI 之 UIScrollView 基本用法

UIScrollView 功能基本组成实践操作1.创建 UIScrollView 父节点2.创建 item root 节点3.创建N个item节点结果表现功能基本组成首先,要想实现一个 UIScrollView 必须要具有以下几个基本组件:UIPanel:主要通过裁剪 SoftClip 用来设置 scrollview 的显示区域。UIScrollView :实现 UIScrollView 中的重要功能,比如滚动的方式,是否需要设置滚动条,垂直滚动还是水平滚动等等。UIGrid / UITabl

2021-07-04 22:11:02 1288 4

原创 NGUI源码解析之UIPanel(二)自定义Panel

自定义Panel文章说明自定义Panel功能目标代码实际效果文章说明本篇文章基于NGUI (3.12.0)版本源码下的代码分析,如果代码和大家自己的不同,可能是版本不同。如果文章中分析有误希望大神看见指点迷津,大家好,我就是一个勤勤恳恳爱偷懒的码农,希望和大家一起学习研究。自定义Panel看这篇文章之前希望你把之前文章看过了,今天这一篇文章就是来做个实践操作把,把之前关于 Panel 裁剪 的部分我自己来实现一个 demo,加深下对其的理解。功能目标我们实现的功能非常简单,就只实现 UIPane

2021-07-04 19:09:18 426 2

原创 Unity 之 NGUI UIRoot 的屏幕适配问题

UIRoot 屏幕适配文章说明屏幕适配UIRoot文章说明屏幕适配UIRootUIRoot 中有一个 “Scaling Style” 属性,含有三个基本的选项,如下:FlexibleConstrainedConstrainedOnMobiles

2021-07-02 00:32:47 1013 4

原创 NGUI源码解析之UIPanel(一)UIDrawcall 调用

本篇文章基于NGUI (3.12.0)版本源码下的代码分析,如果代码和大家自己的不同,可能是版本不同。如果文章中分析有误希望大神看见指点迷津,大家好,我就是一个勤勤恳恳爱开发的码农,希望和大家一起学习研究。

2021-06-26 19:29:04 649 1

原创 Unity 生命周期

大家好,我是一个偶尔勤勤恳恳,总是喜欢懒惰,热爱开发的码农,希望和大家一起学习研究,如果有不同意见欢迎一起讨论,不喜勿喷。

2021-06-23 23:39:44 12582 2

原创 NGUI源码解析之 UIDrawCall(二)UIPanel 裁剪

本篇文章基于NGUI (3.12.0)版本源码下的代码分析,如果代码和大家自己的不同,可能是版本不同。如果文章中分析有误希望大神看见指点迷津,大家好,我就是一个勤勤恳恳爱开发的码农,希望和大家一起学习研究。

2021-06-23 23:38:08 745 2

原创 NGUI源码解析之 UIDrawCall(一)

本篇文章基于NGUI (3.12.0)版本源码下的代码分析,如果代码和大家自己的不同,可能是版本不同。如果文章中分析有误希望大神看见指点迷津,大家好,我就是一个勤勤恳恳爱开发的码农,希望和大家一起学习研究。

2021-06-23 23:37:21 524 1

原创 Unity 之坐标系

备注:希望和大家一起交流学习,如果有不同的观点欢迎一起讨论学习,不喜勿喷,谢谢。坐标系坐标系2D 笛卡尔坐标系3D坐标系左手坐标系右手坐标系总结:unity Vector世界坐标系坐标系2D 笛卡尔坐标系这个没什么好说的,非常简单,就是简单的 X - Y 坐标,我们的屏幕坐标就是标准的 2D 坐标系,只是采用的不是 x-y 表示,而是使用 width - height 表示。但是屏幕坐标系的方向不是一定的,比如 unity 屏幕坐标如下,使用左下角作为原点,有些地方会使用左上角作为原点。3D

2021-06-14 17:25:45 976 4

原创 Unity 之图形渲染(二)Mesh

备注:希望和大家一起交流学习,如果有不同的观点欢迎一起讨论学习,不喜勿喷,谢谢。图形渲染Mesh基本属性三角形顺序实战操作渲染一个三角形面片1.绘制目标2.代码3.渲染结果渲染一个正方形面片1.绘制目标2.代码3.绘制结果渲染一个含有UV信息的正方形面片1.绘制目标2.代码3.绘制结果绘制一个含有法线信息的正方形面片1.绘制目标2.代码3.绘制结果拓展训练Mesh基本属性前面文章中介绍了 Mesh 一些基本信息,本篇文章我们详细学习下 mesh 编程,已知 Mesh 中主要包含以下内容:顶点数组

2021-06-14 17:18:58 799 3

原创 Unity 之图形渲染(一)

备注:希望和大家一起交流学习,如果有不同的观点欢迎一起讨论学习,不喜勿喷,谢谢。unity图形渲染前提MeshMesh FilterMesh Renderer基本属性Skinned Mesh Renderer基本属性前提unity 中图形渲染组件主要有三种:网格过滤器(Mesh Filter)网格渲染器(Mesh Renderer)蒙皮网格渲染器 (Skinned Mesh Renderer)但是再学习前面三个组件之前,必须要了解 Mesh 组件。MeshMesh (网格)也是Unit

2021-06-14 17:18:21 4383 5

原创 gitee仓库创建和项目上传以及报错处理

参考博客链接下载git建议大家创建一个自己的 gitee 账号,可以帮助我们管理我们自己的项目。首先登陆 gitee 官网:gitee链接创建一个账户这里就不讲了,然后进去后首先了解下gitee基本使用信息:gitte帮助文档先了解下这些信息,然后去下载一个 git 软件:这里介绍两个git,选择一个下载就好,我们这里选择第一个:git bash下载链接tortoiseGit git 下载链接建议下载到一个你知道的文件夹,最后安装的时候在创建一个桌面快捷入口,当然如果你忘记创建了也

2021-04-04 21:41:33 3365

原创 STL之空间配置器源码解析

配置器(allocator)配置器:负责空间配置与管理,从实现的角度来看,配置器是一个实现了动态空间配置、空间管理、空间释放的模板类。空间配置器意义:整个 STL 的操作对象(包含的所有数值)都存放在容器之内,空间配置器就是用来帮助这些容器管理(动态开辟,回收)内存空间,使其可以动态存放内容。SGI STL 空间配置器的结构SGI STL 的配置器,其名称是 alloc 而不是 allocator,而且不接受任何参数。allocator 只是基层内存配置/释放行为(::operator::new 和

2021-03-24 12:43:01 202

原创 C++之inline,friend,仿函数总结

inline 函数 意义:将一些简单,代码量少,调用频繁的函数设置为inline函数会更高效 这里有篇文章可以了解下,文章链接1.inline和函数定义放在一起才有意义,和声明放在一起无意义;2.inline函数最好放在头文件中定义3.inline函数应该要简单常用,不要出现循环递归等情况;4.函数设置为inline函数,避免频繁调用该函数,造成重复开辟桟内存所带来的消耗5.构造和析构函数可以设置成inline函数,但是要慎用,最好不用,如果构造和析构函数内部做一些隐藏行为会带来更大的消耗,

2021-03-16 21:00:46 376

原创 C++知识进阶之初始化

在使用任意对象之前,我们都需要保证其已经被初始化,否则也许会发生不可预见性错误,比如,我们在比较一个变量的时候,它只是被声明出来但是没有被初始化,那么就会发生报错。C++内置类型以外的其他任意自定义对象,初始化的重任就落在构造函数的身上,所以构造函数里面需要对,对象的每一个成员变量初始化,但是要严格区分初始化和赋值的区别。这里介绍一个我们理想认为的初始化的构造函数,但实际却不是初始化,是赋值!!!这里的构造函数函数,调用过程是,首先调用了默认的构造函数,为每一个成员变量设置了初始值,然后再给这些成员变量

2021-03-16 20:55:45 142

原创 C语言重点散知识整理(三)

指针动态内存分配mallocfree智能指针

2021-03-14 22:46:55 137

原创 C语言重点散知识整理(二)

大小端问题联合体 union结构体 struct大小端详解1大小端详解2枚举 enum指针

2021-03-14 21:01:32 122

原创 C语言重点散知识整理(一)

计算长度:“\0"表示字符串输出结束的标志,不计入字符串长度中,但是其必然会出现在字符数组的最后一个位置;(strlen 计算字符串长度时,不包括”\0";但是 sizeof 计算 字节数 包含"\0")单位转化:bit(比特) —> byte(字节) —> kb —> mb —> gb1byte == 8bit (比特位) (1个字节等于8个比特位)1kb == 1024 byte (字节)1mb == 1024kb1gb == 1024mb关键字:1

2021-03-11 00:50:19 132

原创 C++知识进阶之#defines使用优化

在介绍#defines使用优化之前,要首先简单介绍一下编译原理:比如以C语言为例:1.预处理阶段工作内容:a.宏替换;b.头文件展开;c.去注释;d.条件编译语言转换:C语言 ---------> C语言**2.编译阶段 **工作内容:检查语法错误语言转换:C语言 ---------> 汇编语言3.汇编语言转换:汇编语言 ---------> 二进制4.链接以上只是简单介绍了一下编译大概过程,详细工作原理还要去查找资料,这里不做过多说明。#defi

2020-05-31 20:05:12 990

原创 最短路径之Dijkstra算法--简单易懂

最短路径:任意A点到B点所经历的最短距离。主要算法有:Dijkstra算法(迪杰斯特拉算法),Floyd算法(弗洛伊德算法),A*算法等。今天开始逐步介绍下他们的算法思想核心:1.Dijkstra算法(迪杰斯特拉算法)这个算法的思想我觉得和Prim算法相似,但是Prim算法是求最小生成树,求的一个图中连接所有点的最小权值,但是Dijkstra算法是求的图中任意两点的最短路径,所以二者在保存最小权值数据的方式不同,Prim主要获取的是邻接点的最小权值(两点必须是相邻的),Dijkstra获取的是点到

2020-05-30 12:54:03 508 1

原创 最小生成树图之-Prim算法和Kruskal算法

最小生成树算法:结合上一章学习了解了图的基本概念,接下来了解一下最小生成树的两种算法。Prim算法(普里姆算法):思想:找到所有最短的权值连接的顶点集合,所组成的树是最小生成树。从某一顶点为起点,逐步找各个顶点上的最小权值的边来构建最小生成树。首先,从根节点A开始,我们发现A到对所有顶点的权值信息如下:找到最小权值,权值必须有意义,我们这里的有意义暂定为:权值要大于0,且不能为无穷大。找到第一个最近的顶点B后,同时更新A点到各个顶点的距离,此时B点已经访问过了,我们需要标识它防止下一次它再

2020-05-25 01:51:45 1400

原创 数据结构--图

图的定义:图是有顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中G表示一个图,V是图中顶点的集合,E是图中边的集合。图的分类:无向图:任意两个顶点之间的边都是无向边,组成的图叫无向图。无向边:顶点到顶点之间的边没有方向,则称这条边为无向边。有向图:任意两个顶点之间的边是有向边,组成的图叫有向图。有向边:顶点到顶点之间的边有方向,则称这条边为有向边。无向完全图:在无向图中,如果任意两个顶点之间都存在边,则称改图为无向完全图。含有N个顶点的无向完全图,肯定有(N*(N -

2020-05-20 23:14:16 306

原创 对队列的简单介绍

1.队列

2020-05-17 00:19:53 341

原创 栈的分析和详解

2020-05-13 01:21:14 686

原创 设计模式之单例模式C#代码合集

单例模式顾名思义,就是一个类只有一个实例,应用广泛,写法较多,下来做一下简单的总结说明:(一)单线程写法,主要根据项目开发类型选择,如果是单线程项目,推荐指数–》“+++++”C#写法:public class Singleton1{ private Singleton1(){} private static Singleton1 m_instance = null; public static Singleton1 Instance{ get{ if (m_instance ==

2020-05-10 17:13:04 524

原创 设计模式(二)之观察者模式

今天我们来研究一个新的设计模式,观察者模式,这个模式应用非常广泛,在小编参与的游戏项目中很多地方都用到了这个模式,而且它也非常好用。今天还是以"Head First"设计模式中的例子开始:文章主要以一个“气象监测应用”的项目为例子,接下来大概描述下例子背景:你的团队收到了一个项目合作,合作内容主要是,需要你的公司设计一款应用,当天气数据发生改变的时候,需要在你的应用上分别显示出来,目前合作方...

2020-05-05 17:01:52 1032

原创 搜索二叉树

概念:搜索二叉树是一种特殊有序的二叉树,如果一棵树不为空,并且如果它的根节点左子树不为空,那么它左子树上面的所有节点的值都小于它的根节点的值,如果它的右子树不为空,那么它右子树任意节点的值都大于他的根节点的值,它的左右子树也是二叉搜索树。由此可见,如果对二叉搜索树进行中序排列(左中右),那么会得到一个从小到大的序列。上图中序排列(左中右)后的顺序应该是:5,6,8,9,10,15,16,1...

2020-05-05 00:24:00 4252

原创 设计模式(一)设计模式入门之策略模式

最近在看“Head First 设计模式”这本书,有很多心得想写下来供自己以后阅读,也想分享给有兴趣的读者,大家可以一起来思考交流,学无止尽,希望我们共同努力。这本书主要是依据Java来讲的,如果你们没有学过Java也不要紧,这本书和语言无关,最主要的是思想。其实之前也学习了解过很多设计模式,比如最常用的单例模式,享元模式,观察者模式等等,但是都没有认真的静下心来分享自己的心得,现在感觉非常懊恼...

2020-05-04 17:45:27 216

原创 面试题(二)

注:不喜勿喷//21.合并两个排序的链表//输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增的,例如,链表1和//链表2,则合并之后的升序链表如链表3所示,节点定义如下:struct ListNode{ int _value; ListNode* _next;};ListNode* merge(ListNode* phead1,ListNode* phea

2017-09-07 11:37:07 262

原创 面试题(一)

注:不喜勿喷。//1.输入一个链表的头结点,从尾到头反过来打印出每个结点的值;(单向链表)struct ListNode{ int key; ListNode* next;};//利用栈的先进后出的性质void printReverList(ListNode* root){ assert(root); //创建一个栈 stack<ListNode

2017-09-07 11:30:11 348

原创 图--最小生成树之解

**Graph:** (应用:地图,社交关系等) 图是一种非线性结构,由顶点集合以及顶点间的关系集合组成的一种数据结构; 1) 完全图:如果一个N个顶点组成的无向图中有N*(N-1)/2条边,则为无向完全图(即任意两个顶点间都有边相连) 2) 权重:边具有与之相关的数值,则称为权重; 3) 临接顶点:if(u,v)是图中的一条边,则u和v互为临接顶点; 4) 度:与顶点相关联的边

2017-08-13 18:34:10 337

原创 排序算法汇总

排序:以下排序都是按从小到大的顺序编写的;1)直接插入排序: 时间复杂度O(n*n)//从小到大//直接插入排序:取出一个比,比完再插入void InsertSort(int* arr, size_t n){ assert(arr); for(size_t i = 0 ; i < n-1; i++) { int temp = arr[i+1];

2017-08-13 00:43:12 336

原创 磁盘查找树------B,B+,B*树集合

**B-树:**常用于文件系统,数据库 外查找,是一种平衡的多叉树;(或者是空树) 性质: ① 根节点至少有两个孩子; ② 每个非根节点有[M/2,M]个孩子; ③ 每个非根节点有[M/2-1,M-1]个关键字,并且以升序排列; ④ Key[i]和key[i+1]之间的孩子节点的值介于key[i],key[i+1]之间; ⑤ 所有的叶子节点都在同一层; 图例如下:M = 3插入75时

2017-08-10 03:02:30 312

原创 HashTable,位图,BloomFilter分析(简单粗暴)

**HashTable:(散列表/哈希表)** 是根据关键字key而直接访问在内存存储位置的数据结构;它通过一个关键值的函数将所需的数据映射到表中的位置来访问数据,这个映射函数叫做散列函数,存放记录的数组叫做散列表; 构造哈希表的几种方法: 1)直接定址法:取关键字的某个线性函数为散列地址;(但数值之间相差较大,该方法不可用) 2)除留余数法:取关键值被某个不大于散列表长m的数p除后的所得的

2017-08-09 00:46:15 671

原创 探索红黑树中的秘密

**红黑树:** 二叉搜索树,它在每个节点中增加了一个颜色位,通过对任何一条从根到叶子节点的简单路径上的颜色来约束,红黑树保证最长路径不超过最短路径的两倍,因而近似于平衡;(不是绝对的平衡)性质: ①每个节点不是红色就是黑色的; ②根节点是黑色的; ③如果一个结点是红色的,则它左右两个子节点是黑色的(没有连续的红色结点); ④对于每个节点,从该节点到其后所有后代结点的简单路径上,均包含相同

2017-08-09 00:25:50 266

原创 AVL树---升级版的二叉搜索树

AVL树:是一棵高度平衡的二叉搜索树;(搜索树+平衡因子 ) 性质: 1)左子树和右子树的高度之差的绝对值不超过1; 2)树中的每个左子树和右子树都是AVL树; 3)每个节点都有一个平衡因子,任一节点的平衡因子是-1,0,1;(每个节点的平衡因子=右子树高度-左子树高度) 时间复杂度是:log以2为底N的对数节点类型: 平衡因子发生改变的三种情况:(分别举一个例子来分析) ① 插入结点

2017-07-30 16:26:04 324

原创 搜索二叉树---之狸猫换太子的删除方法

搜索二叉树:性质: 1) 每个节点都有一个作为搜索依据的关键码(Key),所有节点的关键码都不同; 2) 左子树上所有节点的关键码(Key)都小于根节点的关键码(Key); 3) 右子树上所有节点的关键码(Key)都大于根节点的关键码(Key); 4) 左右子树都是二叉搜索树; 特点:搜索二叉树进行中序遍历(左根右)的时候是一组升序的数列;应用: 字典;公司发水果给员工等问题;代

2017-07-29 13:41:12 315

原创 Huffman树---之文件压缩项目

HuffmanTree哈夫曼树:又称最优二叉树,是加权路径长度最短的二叉树; 如何建树,思想如下:以此类推最终将其构建成以下的样子:代码如下:#include"heap_review.h"//自己实现的堆模板类,见上篇堆文章#include<queue>template <class T>struct HuffmanTreeNode{ T _data; HuffmanTre

2017-07-29 01:43:51 340

原创

堆:堆数据结构是一种数组对象,它可以被视为一颗完全二叉树结构; 堆排序————————————————–》选择排序 堆结构的二叉存储: 最大堆:所有的父节点都比左右孩子大; 最小堆:所有的父节点都比左右孩子小;向上调整:不用关心父节点比当前子节点小的问题;(适用于已经把堆建好,插入新节点时调整使用) 向下调整:需要关心父节点比当前子节点小的问题;(使用于任何情况,可以用来创建大堆、小堆,或

2017-07-26 22:16:15 235

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除