- 博客(29)
- 资源 (1)
- 收藏
- 关注
原创 数组
首先简单说明一下数组的相关概念: 数组是值的有序集合,每个值叫一个元素,每个元素在数组中都有一个位置,以数字表示,称为索引。JavaScript的数组有以下特点:无类型:数组元素可以是任意类型,每个元素也可以是不同类型索引是基于0的32数值:最小的索引为0,==最大可能的索引为2^32-2==动态的:会根据需要自动增长或缩减可能是稀疏的:索引不一定连续length属性:非稀疏数组,它
2017-03-26 11:17:49
513
原创 对象
对象除了字符串、数字、true、false、null和undefined之外,JavaScript中的值都是对象。尽管字符串、数字和布尔值不是对象,但它们的行为和不可变对象非常类似。 对象最常见的用法是创建(create)、设置(set)、查找(query)、删除(delete)、检测(test)和枚举(enumerate)它的属性。 属性名可以是包含空字符串在内的任意字符串,但对象中不能存在两
2017-03-22 08:35:01
324
转载 A星寻路算法介绍
A星寻路算法介绍你是否在做一款游戏的时候想创造一些怪兽或者游戏主角,让它们移动到特定的位置,避开墙壁和障碍物呢? 如果是的话,请看这篇教程,我们会展示如何使用A星寻路算法来实现它! 在网上已经有很多篇关于A星寻路算法的文章,但是大部分都是提供给已经了解基本原理的高级开发者的。 本篇教程将从最基本的原理讲起。我们会一步步讲解A星寻路算法,幷配有很多图解和例子。 不管你使用的是什么编程语言或者操
2016-12-17 20:09:13
558
原创 C#日积月累之类型转换
一、显式转换 在对数值变量进行显式转换时,可能出现溢出的情况,使用checked关键字可以对溢出进行检查:int num = 123456;short num2 = checked((short)num);Console.WriteLine("num = {0}\nnum2 = {1}", num, num2);执行代码会出现下面的情况:除了使用checked外,也
2016-12-09 07:35:46
320
原创 关于动态加载Actor的总结
笔者最近在用UE4模仿经典的魔塔游戏,作为一个刚接触UE4不久的人,到目前为止的开发过程并不顺利,笔者完全是在摸索中进行的。 比如这两天遇到的动态加载Actor的问题,笔者已经制作好一个TileMap,想要在上面放置各种道具、装备、怪物等,却不知道怎么通过代码加载。这个问题困扰了笔者两三天,在各种Google、百度却找不到解决办法之后,只找到了一些相关的信息,笔者平心静气,想到了官方文档中有相关的
2016-11-30 00:27:45
4691
原创 Cannot Open Source PaperFlipbookComponent.h
Paper 2D C++: Cannot Open Source PaperFlipbookComponent.h今天在实现地图生成功能时,用到了UPaperFlipbookComponent类,当时直接添加了PaperFlipbookCompoennt.h头文件,但是编译时报错:#include "PaperFlipbookCompoennt.h" error: Cannot Open Sou
2016-11-27 00:20:42
1166
原创 语句
语句JavaScript语句以分号结束,但书写代码时却可以省略分号,因为JavaScript引擎会自动补上分号。在C++中,语句必须以分号结尾。 分号将语句隔开,可以省略,会自动补上分号,但并不是在所有换行处都填补:只有在少了分号就无法正确解析代码的时候,才会填补分号。 通常,一条语句以[,(,/,+,-开始,那么它极有可能与前一条语句合在一直解析。 如果当前语句和下一行语句无法合并解析,则在
2016-11-07 23:53:18
587
原创 其他运算符
表达式计算eval():解释运行由JavaScript源代码组成的字符串,并产生一个值。eval("3+2"); // => 5书中讲动态判断源代码中的字符串是一种强大的语言特性,几乎没有必要在实际中应用。我同意这种看法。 eval()只有一个参数,使用调用它的变量作用域环境。 全局eval 当通过别名调用eval()时,eval()会将其字符串当成顶层的全局代码来执行。 真正使用ev
2016-11-06 11:31:44
476
原创 赋值表达式
赋值表达式JavaScript使用“=”运算符来给变量或属性赋值。i = 0; // 将变量i赋值为0o.x = 1; // 将对象o的属性x赋值为1“=”希望它的左操作数是一个左值,右操作数可以是任意值。 赋值表达式的值就是右操作数的值。 “=”具有非常低的优先级,通常需要补充圆括号以保证正确的去处顺序。 “=”的结合性是从右至左。i = j = k = 0; //给三个
2016-11-05 23:13:11
1097
原创 逻辑表达式
逻辑表达式逻辑运算符&&、||和!是对操作进行布尔运算,经常和关系运算符一直配合使用。逻辑运算将多个关系表达式组合起来组成一个更复杂的表达式。逻辑与(&&)最简单的理解是对两个布尔值做布尔与(AND)操作。 &&常用来连接两个关系表达式。关系运算符的优先级比&&和||高。 假值是false、null、undefined、0、-0、NaN和”“,所有其他的值都是真值。 并不总是返回true和fa
2016-11-05 22:48:22
1175
原创 关系表达式
关系表达式关系表达式总是返回一个布尔值。 相等和不等运算符相等运算符(== 和 === )用于比较两个值是否相等。允许任何类型的操作数。 对象的比较是引用的比较,而不是值的比较。一个对象只和其本身是相等的,和其他任何对象都不相等。 严格相等运算符“===”(也叫恒等运算符)首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换:如果类型不同,则不相等。如果都是null或都是und
2016-11-05 21:56:46
3045
原创 不可变的原始值和可变的对象引用
原始值(undefined, null, 布尔值,数字和字符串)与对象(包括数组和函数)有着根本的区别。 原始值是不可更改的:任何方法都无法更改一个原始值。原始值的比较是值的比较。 对象是可变的,它们的值是可修改的。对象的比较并非值的比较:即使两个对象包含同样的属性及相同的值,它们也是不相等的。各个索引元素完全相等的两个数组也不相等。 通常将对象称为引用类型(reference type),以
2016-11-05 21:49:35
322
原创 null和undefined
null是关键字,表示一个特殊值,常用来描述“空值”。对null执行typeof去处,结果返回字符串“object”,所以可以将null认为是一个特殊的对象值,含义是“非对象”。但实际上,通常认为它是自有类型的唯一一个成员,它可以表示数字、字符串和对象是“无值”的。 undefined是预定义的全局变量,不是关键字。使用typeof去处符得到字符串“undefined”,表明这个值是这个类型的唯一
2016-11-05 21:48:49
327
原创 文本
字符串是一组由16值组成的不可变的有序序列,每个字符通常来自于Unicode字符集。字符串的长度是其所含16位值的个数;索引从零开始;空字符串的长度为0。 JavaScript采用 UTF-16编码的Unicode字符集,最常用的Unicode字符都是通过16位的内码表示,并代表字符串中的单个字符,那些不能表示为16位的字符则遵循UTF-16编码规则——用两个16位值组成的一个序列表示。这意味着
2016-11-05 21:47:30
234
原创 数字
数字当一个数字直接出现在JavaScript中,则称之为数字直接量。 算术运算算术运算在溢出、下溢或被零整除时不会报错。 当数字运算结果超过了JavaScript所能表示的数字上限(溢出),结果为一个特殊的无穷大值,在JavaScript中以Infinity表示。同样,当负数的值超过了负数范围,结果为负无穷大,以-Infinity表示。基于无穷大值的运算结果还是大值(保留符号)。 下溢(und
2016-11-05 21:46:42
240
原创 算术表达式
二元加运算符具体内容在笔记《二元“+”运算符》中。一元运算符一元运算符(+、-、++ 和–)具有很高的优先级,而且都是右结合(right-associative)。必要时,它们会将操作数转换为数字。 “+”和“-”既是一元运算符,也是二元运算符。 一元加法(+)一元加法运算符将非数字操作数操作数转换为数字(或者NaN),并返回转换后的结果。console.log(+null); // 0
2016-11-05 19:15:49
392
原创 二元“+”运算符
二元“+”运算符二元加法运算符可以对两个数字做加法,也可以做字符串连接操作:1 + 2 // 3"hello" + " " + "there" // "hello there""1" + "2" // "12""1" + 2 // 121 + "2" // 12二元“+”运算符的转换规则优先考虑字符串连接:如果其中一个操作数是字符串或者转换为字符串的
2016-11-05 16:49:36
920
原创 Number
Number类型采用IEEE754格式来表示整数和浮点数。整数最常用的是十进制,也可以通过八进制和十六进制来表示整数。 八进制字面值第一位必须是0,然后是八进制数字序列(0~7)。如果字面值中的数值超过了范围,那么前导零将会被忽略,后面的数值将会被当作十进制解析。var num1 = 012; // 八进制的10var num2 = 019; // 无效的八进制数值,解析为19八
2016-11-05 16:40:43
304
原创 类型转换
JavaScript根据需要自行转换类型。 == 在判断两个值是否相等时做了类型转换,而=== 在判断相等时并未做任何类型转换。但==从不试图将其操作数转换为布尔值。 除了null或undefined之外的任何值都具有toString()方法,这个方法的执行结果通常和String()方法的返回结果一致。 某些运算符会做隐式的类型转换,有时用于类型转换。如果+的一个操作数是字符串,它将会
2016-11-05 16:39:06
333
原创 C#日积月累之选择结构
一、if语句if (逻辑表达式)基本上和C++的if语句一样,不同的是if括号中的表达式必须是逻辑表达式,否则就报错:int i = 0;//if (i) // 报错:无法将int转换为bool//if (1) // 报错:常量值1无法转换为bool二、switch语句switch 语句中的测试量可以是一个变量,也可以是一个表达式。测试量
2015-05-21 20:54:24
527
原创 海伦公式
已知一个三角形的三边长分别是a、b、c,则它的面积S为: 看书的时候,书中提到了这个公式,但是书中说的名字是“海伦—秦九韶公式”,百度了一下,原来是海伦公式,因为这个公式最早出现在海伦的著作《测地术》中,所以被称为海伦公式。中国秦九韶也得出了类似的公式,称三斜求积术。然后笔者就明白了书中那么说的原因了。float a = 3.0f;float b = 4.0f;floa
2015-05-21 20:20:58
1374
原创 华氏温度转摄氏温度
华氏温度和摄氏温度的转换公式为:摄氏温度 = (华氏温度 - 32)× 5/9。 // 华氏温度转换为摄氏温度public static float FahrenheitToCelsius(float fahrenheit){ float celsius = (fahrenheit - 32) * 5 / 9; return celsius;}运行结果为:
2015-05-20 21:28:41
1828
原创 基姆拉尔森公式(Kim Larson)
这是笔者无意中看到一个公式,觉得挺有意思就记录下来,它用来计算某一天是星期几,公式如下:week = (d + 2*m + 3*(m + 1)/5 + y + y/4 - y/100 + y/400 + 1) % 7;其中y代表年,m代表月,d代表日。 另外,在公式中有个与其他公式不同的地方:把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2
2015-05-20 21:08:49
1084
原创 C#日积月累之几个基本类型
对于C#,笔者没有系统地学习过,而是在工作中边学边用,这样虽然学得挺快,但终究有些细节的基本很少涉及到,所以我决心在工作之余补补基础,然后把自己觉得需要做笔记的东西写到博客里。今天笔者要记录的是几个基本类型,byte、sbyte、float、decimal。 byte:占用1个字节,取值范围0~255,无符号。 一般认为不加u的就是有符号的,可是这个byte却是无符
2015-05-18 21:44:21
594
原创 C#日积月累之@控制符
在笔者的《C#日积月累之标识符》中,@可用于标识符的首字符,但@还有另外一个用法,那就是C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待,例如:string str = @"C:\Windows"; 等价于:string str = "C:\\Windows";
2015-05-16 12:21:26
356
原创 C#日积月累之标识符
让我们看一个可以打印出 "Hello World" 的简单的代码:using System;namespace HelloWorldApplication{ class HelloWorld { static void Main(string[] args) { // My first C# program Consol
2015-05-16 11:16:47
343
原创 禁用、启用组件
我们知道在编辑器通过取消或勾选组件名称前面的复选框就可以禁用或者启用这个组件: 那么如何通过代码禁用或者启用一个组件呢?很easey,获取到组件后,修改enabled的值即可禁用或者取消该组件。例如有一个游戏物体叫gmObj,要禁用它的Image组件,可以这么做:gmObj.GetComponent().enabled = false; 执行结果如图:
2015-05-07 12:06:26
656
原创 UGUI之动态设置某个节点在其兄弟节点中的位置
最近的工作任务是实现模态对话框,模态对话框弹出后要显示在最前面,为了实现这个效果,我从网上找到了解决办法:通过SetSiblingIndex 和 GetSiblingIndex设置与获取 gameObject在兄弟节点中的位置。 我觉得GetSiblingIndex返回就是兄弟节点对应的编号,这个编号从0开始,只要修改这个编号就可以改变这个节点在所有兄弟节点中的位置。
2015-04-27 12:46:24
8943
原创 UGUI之实现拖拽功能
最近几天在跟着一个视频教程学习,其中用到了拖拽功能,我想到了官方的DEMO中有相应的例子,就去看了一下,很简单,把官方的代码拿过来,稍微做些修改就实现了拖动功能。先上代码:using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;using System.Collections;public class
2015-04-26 10:59:13
2624
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人