游戏DrawCall分析利器-SpectorJS使用入门
1、什么是DrawCall 一个DrawCall就是CPU向GPU发送一次绘制命令,例如:某个场景的DrawCall是80,代表该场景每个渲染帧内GPU需要绘制80次。每一次DrawCall都需要传输纹理、顶点数据以及渲染上下文切换,是非常消耗性能的操作,DarwCall过高会直接影响游戏的整体性能… 阅读更多 »游戏DrawCall分析利器-SpectorJS使用入门
1、什么是DrawCall 一个DrawCall就是CPU向GPU发送一次绘制命令,例如:某个场景的DrawCall是80,代表该场景每个渲染帧内GPU需要绘制80次。每一次DrawCall都需要传输纹理、顶点数据以及渲染上下文切换,是非常消耗性能的操作,DarwCall过高会直接影响游戏的整体性能… 阅读更多 »游戏DrawCall分析利器-SpectorJS使用入门
AssetCleanerForCocosCreator 简介:一个基于Node.js的CocosCreator项目资源清理工具,自动化统计有哪些资源未使用,以及各类型资源的占比情况,从而帮助减小包体。 开源代码地址:https://github.com/foupwang/AssetCleanerFo… 阅读更多 »CocosCreator项目资源优化工具-AssetCleaner教程
在Creator游戏开发中,一般是这样创建对象: for (let i = 0; i < 10; i++) { let node = cc.instantiate(prefab); ... } 上面代码本身没有问题,就是连续实例化10个对象。但在大量UI、动画同时出现时,却极有可能引起卡顿,因为实例… 阅读更多 »CocosCreator中使用分帧创建对象
使用 gulp build 命令编译CocosCreator 2.0.9版本的engine源码,报“JavaScript heap out of memory”的错误,如下: 原因是源码文件数量太多,导致内存不足。 解决方法是编译命令加上参数,加大V8引擎的内存上限,例如改为8G,可如下: gulp… 阅读更多 »编译CocosCreator定制引擎失败的解决
浏览器将某项请求发送到服务器,要求显示某个网页,服务器将会返回 HTTP 状态码响应请求。 一些常见的状态码为: – 200 服务器成功返回网页 – 304 未修改 – 404 请求的网页不存在 – 503 服务器超时 2xx(成功) 200(成功) 服务器已成功处理了请求。通常,这表示服务器提供了… 阅读更多 »HTTP常见状态码
使用Jenkins构建过程中,需要把文件传输到远程主机,可以用pscp等工具实现,也可以通过Jenkins自身的插件Publish over SSH来完成这项任务,传输单个文件或多个目录都支持。 安装插件 Jenkins -> 系统管理 -> 管理插件 -> 安装 Publish Over SSH … 阅读更多 »Jenkins自动化插件之Publish over SSH
1. Set 基本用法 ES6新增了Set,它类似于数组,但是成员的值不会重复,都是唯一的。 const s = new Set(); [1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x)); for (let i of s) { console.log(i); }… 阅读更多 »ES6入门教程笔记(10)-Set和Map
在Windows平台上做项目的自动化构建时,会不可避免的用到批处理文件,本文记录一些常用方法。 echo echo start copy 在控制台输出字符串:start copy @ 在命令行前面加上@,表示仅执行,而不显示本命令。 @start test.exe 上面语句表示仅执行test.exe… 阅读更多 »Windows批处理的用法笔记
含义 convertToNodeSpace 将一个点转换到节点 (局部) 坐标系,并加上锚点的坐标。 也就是说返回的坐标是相对于节点包围盒左下角的坐标。 convertToNodeSpaceAR 将一个点转换到节点 (局部) 空间坐标系,这个坐标系以锚点为原点。 也就是说返回的坐标是相对于节点原点的… 阅读更多 »CocosCreator开发笔记(22)-使用convertToNodeSpace和convertToWorldSpace
ES6对对象的扩展非常多,本文只介绍自己感兴趣的若干,需要完整的请阅读文末原文。 属性的简洁表示法 ES6允许直接写入变量和方法,作为对象的属性和方法。这种写法更加简洁。 let x = 1; let name = ‘root’; // ES5 let obj = { x:x, name:name … 阅读更多 »ES6入门教程笔记(9)-对象的扩展
ES6对数组的扩展非常多,本文只介绍自己感兴趣的若干,需要完整的请阅读文末的原文。 flat() 数组的成员可能还是数组,Array.prototype.flat()可以将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新的数组。 [1, 2, [3, 4]].flat() // [1, 2, 3… 阅读更多 »ES6入门教程笔记(8)-数组的扩展
VSCode是微软推出的一款开源免费的代码编辑器,不但好用而且功能强大,能直接调试Node.js代码,步骤如下。 1、首先把Node.js代码放在一个目录下,然后用VSCode打开这个文件夹; 注意:如果用VSCode直接打开代码文件,则后面点击“调试”按钮将会弹出错误提示:Please first… 阅读更多 »用VSCode断点调试Node.js代码
假设服务器A上安装了GitLab,但GitLab管理员密码丢失,可按如下步骤重置: 1. 登录服务器A,在终端输入以下命令,进入GitLab数据库。 gitlab-rails console production 定位到超级管理员(id=1)的用户。 > user = User.where(id: … 阅读更多 »GitLab重置管理员密码
基本用法 ES6允许使用“箭头”(=>)定义函数。 // 箭头函数 let f = () => 5; // ES5 let f = function() { return 5; }; 箭头函数用圆括号代表参数部分,如果代码部分多于一条语句,就用大括号括起来。 // 箭头函数 let sum = (n… 阅读更多 »ES6入门教程笔记(7)-箭头函数
1 函数参数的默认值 基本用法 ES6之前,函数参数不能指定默认值,只能用变通的方法。 function print(x, y) { y = y || ‘World’; console.log(x, y); } print(‘Hello’) // “Hello World” print(‘Hello… 阅读更多 »ES6入门教程笔记(6)-函数的扩展
Number.parseInt(), Number.parseFloat() ES6将全局方法parseInt()和parseFloat(),移植到Number对象上面,用法保持不变。 // ES5的写法 parseInt(‘12.34’) // 12 parseFloat(‘123.45#’) /… 阅读更多 »ES6入门教程笔记(5)-数值的扩展
字符串的遍历器接口 ES6为字符串添加了遍历器接口,使字符串可以被for…of循环遍历。 for (let c of ‘foo’) { console.log(c); } // “f” // “o” // “o” 这个遍历器最大的优点是可以识别大于0xFFFF的Unicode码点,而传统的for… 阅读更多 »ES6入门教程笔记(4)-字符串的扩展
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 1 数组的解构赋值 基本用法 以前,为变量赋值,只能直接指定值。 let a = 1; let b = 2; let c = 3; 现在,ES6可以这样写: let [a, b, c] = [… 阅读更多 »ES6入门教程笔记(3)-变量的解构赋值
1 let命令 ES6新增了let命令,用来声明变量。它的用法和var类似,但有以下几点区别: – let声明的变量,只在所在的代码块内有效。 – let声明的变量,一定要在声明后才能使用,否则报错。 – 不允许在相同作用域内,重复声明同一个变量。 2 块级作用域 ES5只有全局作用域和函数作用域,… 阅读更多 »ES6入门教程笔记(2)-let、const和var的区别
ECMAScript 6.0(简称ES6)是JavaScript语言的下一代标准,于2015年6月正式发布。它的目标,是使JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 1 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者… 阅读更多 »ES6入门教程笔记(1)-ECMAScript6简介