- 博客(49)
- 收藏
- 关注
原创 UGUI学习1-Text
Rect Transform:管理Text坐标、宽高等信息;CharacterFont:字体Font Style:字体显示方式(Normal,正常;Bold,加粗;Italic,斜体);Font Size:字体大小;Line Spacing:行距;Rich Text:富文本 ParagraphAlignment:对齐方式;Horizont
2017-10-20 10:42:27
291
转载 Lua学习笔记10-元表与元方法
原文链接:http://www.jellythink.com/archives/511前言元表对应的英文是metatable,元方法是metamethod。我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了“+”符号,就可以进行类的加法运算。在Lua中也有这个道理,两个table类型的变量,你是无法直接进行“+”操作的,如果你定义了一个指定的函数,就可以进行了。
2017-10-14 17:18:02
650
转载 Lua学习笔记9-函数知识总结
原文链接:http://www.jb51.net/article/55805.htm前言Lua中的函数和C++中的函数的含义是一致的,Lua中的函数格式如下:function MyFunc(param) -- Do somethingend在调用函数时,也需要将对应的参数放在一对圆括号中,即使调用函数时没有参数,也必须写出一对空括号。对于这个规则只有一种特殊的例外情
2017-10-14 17:03:19
311
原创 Lua学习笔记8-迭代器
泛型for迭代器泛型for迭代器会在自己内部保存迭代函数,它会保存三个值:迭代函数、状态常量、控制变量。Lua中默认的迭代函数为ipairs下面我们看看范性for的执行过程:首先,初始化,计算in后面表达式的值,表达式应该返回范性for需要的三个值:迭代函数、状态常量、控制变量;与多值赋值一样,如果表达式返回的结果个数不足三个会自动用nil补足,多出部分会被忽略。第二,将状
2017-10-14 10:53:03
261
原创 Lua学习笔记7-table的长度获取
table中长度获取可以使用#来实现,但如果table中有nil就会出现一些奇怪的现象,例如:local tab ={ 1, nil,}print(#tab)输出结果为:1local tab ={ 1, nil, 2, nil}print(#tab)同样输出1但是继续添加后local tab ={ 1,
2017-10-12 10:36:45
1248
原创 Lua学习笔记6-迭代函数ipairs和pairs
iparis和pairs都是Lua中的迭代函数,用于在循环中的数组迭代。ipairs和pairs之间是有区别的,ipairs在遇到第一个值为nil的元素时就会停止迭代;但是pairs是会一直迭代,直到数组的元素全部被遍历一遍。local tabFiles = { [3] = "test2", [6] = "test3", [4] = "test1" } prin
2017-10-11 16:18:02
463
原创 Lua学习笔记5-循环
1.while循环语法while(condition)do statementsend2.for循环数值for循环for i=exp1,exp2,exp3 do endi从exp1变化到exp2,每次以exp3递增,exp3可以缺省,缺省值为1。泛型for循环类似于Java中的foreach,通过迭代器
2017-10-11 16:09:41
300
原创 Lua学习笔记4-赋值语句
赋值语句“=”是用来改变变量的值和改变表域的最基本的方法。Lua可以同时对多个变量来赋值,x, y = y, x --x,y做交换当变量和值的个数不等时,a.变量个数>值的个数 按变量个数补足nilb.变量个数多值赋值常用来交换变量,或将函数调用返回给变量:a, b = f()f()返回两个值,分别赋值给a,b。
2017-10-11 15:41:49
298
原创 Lua学习笔记3-局部变量
Lua的变量声明默认是全局的,但是经常使用全局的变量会有以下的缺点:1.可能会出现命名的冲突;2.访问全局变量的速度比局部变量的速度慢。所以在Lua中使用更多的是局部变量,使用关键字local。a = 5local b = 5function Add() c = a + 1 local d = b + 1endAdd()print(a, b, c, d)结果为
2017-10-11 15:33:22
479
原创 Lua学习笔记2-数据类型
数据类型描述nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。boolean包含两个值:false和true。number表示双精度类型的实浮点数string字符串由一对双引号或单引号来表示function由 C 或 Lua 编写的函数userdata表示任意
2017-10-11 13:53:35
351
转载 设计模式4-代理模式
原文链接:http://www.runoob.com/design-pattern/proxy-pattern.html代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。介绍意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访
2017-10-09 17:14:46
215
转载 设计模式笔记3-装饰模式
原文链接:http://blog.youkuaiyun.com/zhshulin1、概念 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 但是纯粹的装饰模式很难找到,大多数的装饰模式的实现都是“半透明”的,而不是完全透明的。换言之,允许装饰模式改变接口,增加新的方法。半透明的装饰模式是介于装饰模式和适配
2017-10-08 13:10:11
267
原创 数据结构6-排序算法(直接插入排序、希尔排序、快速排序、归并排序和堆排序)
所有排序中,需要排序的数组array的第0位不存放有效的数字,而是作为哨兵存在。1.直接插入排序 直接插入排序的基本操作是将一个记录插入到已排好序的表中,从而得到一个新的、记录增1的有序表。一个无序的数字array(同时可以把它当做一个长度为1的有序表),从1以后的每个位置都希望找到自己合适的位置插入,第i位(i从2开始)数字要到自己位置插入,那么就需要从前i-1位开始依
2017-10-07 13:46:04
1133
原创 数据结构5-最小生成树Prim算法
Prim算法是建立在贪心算法的基础上的算法,主要思想就是每次都去找已走的顶点连向未走的顶点中最短的路径。算法思路:1.将每条边的出发点存放在v中,每条边的目的点存放在u中,并将已访问过的点存放在t中;2.每次遍历t,找出t中的点到t之外的点的最短边,若能找到就执行1,否则就已生成最小树。/// /// Prim最小生成树算法/// /// 临接矩阵/// 起始点s
2017-10-06 13:21:13
403
原创 数据结构4-深度优先搜索和广度优先搜索
1.深度优先搜索 深度优先搜索类似于树的先序遍历,是树的先序遍历的拓展。从起始点开始沿着一个能访问的相邻点一直搜索下去,直到这条路线的尽头,再返回到上一个分叉的顶点搜索另一条路线。这显然一个递归算法,我们可以使用递归或者栈来解决。2.广度优先搜索 广度优先搜索是从初始顶点开始搜索所有未访问的相邻顶点,然后分别从这些相邻点出发依次访问它们的相邻点。一般
2017-10-05 16:00:12
477
原创 数据结构3-拓扑排序
1.拓扑排序的理解 拓扑排序是用于有向、无环图里,将优先的节点先输出的一种排序方式。有向是指节点与节点之间有一个优先关系,例如想烧一壶水,那么必须先用水壶去接水,再用水壶去烧水,其中接水就是烧水的优先动作,想烧水就必须先接水。无环是指一系列的动作中必须是有一个入口和一个出口的,举一个有环的例子,先有鸡还是先有蛋,鸡要蛋孵,蛋要鸡下(不从科学角度考虑,例子的设定就是这样),这个例子
2017-10-05 14:14:08
255
原创 设计模式笔记2-策略模式
1.问题描述: 有一个人的商场开业,希望能在短期内提升顾客数量,他打算采用多用促销方式,有价格折扣、满300返100,然后过一段时间后再把收银方式调整正常。但是如果之后又遇到节假日,他又会开启一些新的促销方式。 上面这个例子该如何去管理这个商店的收银方式呢。2.思路方向 考虑到代码的封装和多态性,我们需要采用面向对象的方式来解决这一
2017-10-04 17:40:39
301
原创 数据结构2-二叉树的最大深度
获取到二叉树的最大深度主要是使用递归的方式来完成,思路分为下面三步:(1)判断传来的结点是否为空;(2)递归调用来累加该结点的左右子树的深度;(3)返回左右子树深度更大的值。private static int MaxDepth(BiTree root){ if (root == null) return 0; int left = 1; int righ
2017-10-04 13:43:10
171
原创 数据结构1-二叉树的遍历
遍历如图二叉树:1.先序遍历(1)先访问根结点(2)再遍历左子树(2)最后遍历右子树private static void PreOrder(BiTree root, Action visit){ if (root == null) return; visit(root); PreOrder(LeftChild(root), visit);
2017-10-04 12:35:48
191
原创 设计模式笔记1-简单工厂模式
1.复制和复用 已经完成了项目A,还需要完成项目B,并且项目A和项目B所实现的功能有很多想同之处时,如果直接将项目A的代码复制到项目B去是非常不妥的行为,随着工程量的加大,维护时将会成为一场灾难。 正确的做法应该是将项目A的功能分离开来,降低项目A的耦合性,然后可以在项目B中使用一部分项目A中的功能,差异的地方再在项目B中自行完成。2.业务的封装
2017-10-03 17:09:30
454
原创 C#学习笔记19-委托和事件
1.委托关键字:delegate使用delegate可以声明一个委托,delegate void MyDelegate();委托可以将它理解为一个数据类型,以后就可以用MyDelegate来声明具有这种签名的新委托。=可以用来初始化,+=用来添加新的方法,-=用于删除。static void Test1(){ Console.WriteLine("Test1");
2017-10-02 20:56:14
700
原创 C#学习笔记18-匿名方法和Lambda表达式
匿名方法是没有方法名,只有方法体,调用只能通过委托来实现。匿名方法一般用于回调函数。Func plus = delegate(int num1, int num2){ return num1 + num2;};上面为一个匿名方法的定义和实现,实现了两个数字的相加。
2017-10-02 17:15:03
309
原创 C#学习笔记17-Action委托和Func委托
Action委托是系统自带的委托类型,它可以定义一个没有返回值得委托。例如:static void Print(int x, string y, double z){ Console.WriteLine(x + y + z);}static void Main(string[] args){ int x = 40; Action a = Print; a
2017-10-02 16:26:05
226
转载 Unity学习笔记6-进程、线程和协程
说到协程,我们首先回顾以下线程与进程这两个概念。在操作系统(os)级别,有进程(process)和线程(thread)两个我们看不到但又实际存在的“东西”,这两个东西都是用来模拟“并行”的,写操作系统的程序员通过用一定的策略给不同的进程和线程分配CPU计算资源,来让用户“以为”几个不同的事情在“同时”进行“。在单CPU上,是os代码强制把一个进程或者线程挂起,换成另外一个来计算,所以,实际上是串行
2017-10-02 15:46:22
619
原创 正则表达式学习笔记3-练习
输入一个IP地址,通过正则表达式来判断输入的IP地址(A.A.A.A,A是0-255之间,4个A不一定相同)是否符合格式规则。Console.Write("Input: ");string s = Console.ReadLine();string pattern = @"^(((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|(\d))\.){3}((25[0
2017-10-02 15:16:24
173
原创 正则表达式学习笔记2-语法
1.++号前的字符必须出现一次或多次,例如:abc+d可以匹配abcd、abccd、abcccccd等。2.**号前的字符可以不出现,也可以出现多次,例如:abc*d可以匹配abd、abcd、abcccd等。3.??前的字符只能不出现,或者出现一次,例如:abc?d只能匹配abd和abcd。4.$$匹配字符串的结尾,例如:(abc)$匹配abc结尾的字符
2017-10-02 12:25:26
235
原创 正则表达式学习笔记1-功能介绍
正则表达式可以用于搜索、匹配的作用,通过提前的语法约定能够有限制性的匹配到希望匹配的字符串。例如:var str = "123abc";var patt1 = /^[0-9]+abc$/;document.write(str.match(patt1));上面语法可以做到匹配,以任意个数的数字为开头,并以“abc”为结尾的字符串。
2017-10-02 11:44:24
159
转载 Unity笔记5-DrawCall
Unity每次在准备数据并通知GPU渲染的过程称为一次Draw Call。一般情况下,渲染一次拥有一个网格并携带一种材质的物体便会使用一次Draw Call。对于渲染场景中的这些物体,在每一次Draw Call中除了在通知GPU的渲染上比较耗时之外,切换材质与shader也是非常耗时的操作。Draw Call的次数是决定性能比较重要的指标。对于IOS平台上来说,Draw Call应
2017-09-28 18:25:35
202
转载 C#学习笔记16-结构体和类
结构体和类的区别: 在做一个项目时,使用了较多的结构体,并且存在一些结构体的嵌套,即某结构体成员集合包含另一个结构体等,总是出现一些奇怪的错误,才终于下决心好好分析一下到底类和结构体有啥不同,虽然它们很相似,但确实有很大的不同,用不好难免出的问题会比较多,现总结一下:一、结构体和类非常相似:1,定义和使用非常相似,例子如下:public struct Student
2017-09-28 17:21:46
265
转载 Unity学习笔记4-Unity中默认函数调用顺序
Awake:当一个脚本实例被载入时Awake被调用,要先于Start。建议少用,此刻物体可能还没有实例化出来,会影响程序执行顺序。需要注意的是,假设实例化一个物件:GameObject go = newGameObject();go.GetComponent().Test();这个Test()的调用顺序会在Awake()之后,在Start()之前Star
2017-09-28 10:59:04
320
原创 Unity3d笔记3-Move和SimpleMove的区别
1.Move角色不受重力约束(需要自己实现重力效果),返回值是碰撞到的信息总汇。若希望实现重力效果可以自行加上 moveDir.y -= gravity;2.SimpleMoveY轴速度会被忽略。速度单位是m/s。会受到重力的影响,返回值是是否着地。
2017-09-28 10:28:02
5377
原创 Unity3d笔记2-Rigidbody和CharacterController的区别
1.Rigidbody刚体组件,用于模拟真实的物理效果,它除了可以受到重力的效果外,还可以受到其他外力的效果,这个外力可以是直接施加,也可以是其他刚体对它的碰撞。刚体适合用来加给车这一类物体。2.CharacterController角色控制器组件,它自带一个胶囊碰撞器,它能受到重力这一个外力的影响。移动需要调用自带函数Move和SimpleMove两个函数。
2017-09-28 10:21:20
6237
转载 Lua学习笔记1-全局变量
在默认情况下,变量总是认为是全局的。全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。> print(b)nil> b=10> print(b)10> 如果你想删除一个全局变量,只需要将变量赋值为nil。b = nilprint(b) --> nil这样变量b就好像从没被使用过一样
2017-09-27 16:47:48
327
原创 Unity3d笔记1-XML的读取和存储
1.XML读取XML文件: +1 +1 ShipUI/Ship_1 2000 0 +2 +2 ShipUI/Ship_2 3000 1 C#:XmlDocument doc = n
2017-09-27 16:13:06
327
转载 C#学习笔记15-泛型
原文链接:http://www.cnblogs.com/yueyue184/p/5032156.html 我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类型不同。有没有一种办法,在方法中传入通用的数据类型,这样不就可以合并
2017-09-26 17:00:58
356
原创 C#学习笔记14-密封类和密封方法
如果我们希望自己的类或者方法不被继承,我们可以使用sealed来修饰我们的类或者方法。sealed需注意的情况:1.在声明密封类时可以直接声明,其他类就无法继承该类;2.在声明密封方法时,该方法必须是继承父类的虚函数才可以声明,如:public class C1{ public virtual void Hello() { Console.Write
2017-09-25 16:14:51
207
转载 C#学习笔记13-抽象类和接口
一、抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。 二、接口: 接口是引用类型的,类似于类,和抽象类的
2017-09-25 15:58:06
184
转载 C#学习笔记12-GC的工作原理基础和垃圾回收机制
1.GC工作原理:http://www.cnblogs.com/juzzs/p/5308813.html2.GC垃圾回收机制:http://blog.youkuaiyun.com/xmsheji/article/details/5452914
2017-09-25 14:51:47
341
原创 C#学习笔记11-匿名类型var
var是C#中的匿名类型,可以代替任何的类型,编译器会根据上下文来判断var代替的类型。var类似object,但效率比object高。使用var满足以下特点:1.var类型会被编译器根据初始值的类型推断出具体的类型;2.var类型的局部变量必须赋予初始值;3.无法将null赋值给隐式类型的局部变量;4.var类型变量的定义必须是在方法中或者在属性get、set访问器中;
2017-09-25 14:07:59
327
原创 C#学习笔记10-重写、覆盖和重载
1.重写在声明时,父类的方法前面加上virtual关键字,子类的方法前面加上override关键字,且与父类方法同名,表示父类的方法可以被子类进行修改和重新定义。重写可以实现面向对象象编程的多态性。用子类实例化父类,调用的会是子类的方法:class C1{ public virtual void Say(){ Console.WriteLine("My name
2017-09-25 10:08:14
234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人