- 博客(118)
- 收藏
- 关注
原创 将lua版的配置表转换成ts版配置表
形如下边的配置表language["instrument_txt_open"] = "#level#级\n解锁神兵"language["camp_race_look_single_race_tip"] = "阵营竞技下周一开启,请主公积极报名参加"language["FUNC_CAMP_RACE"] = { { title = "阵营竞技", list = { "系统根据每位玩家战力最高的阵容,把报名参赛的玩家分配入不同阵营;", "经过预赛和决赛两个阶段,决出每个阵营的【霸主】。",}
2020-09-23 11:08:09
677
原创 webgl两种绘制方法drawElements,drawArrays
基础介绍CPU准备数据:顶点,索引,UV,法线, 切线,空间坐标系转换矩阵(pvm)等其实这部分准备数据中,都是围绕顶点的,每一个顶点都会包含以下几个信息:位置,索引,UV,法线,切线,当然对于空间坐标系的矩阵,这个是对于一个显示节点而言的,不能说一个顶点对应一个空间坐标系转换矩阵,应该说一个模型上的所有顶点共用同样一组空间坐标系的转换矩阵准备完以后:会在GPU端创建一系列buffer,每一个buffer创建完以后,会返回一个GLID,你可以理解为这就是这个buffer的地址,我们可以在CPU端通过
2020-09-20 17:28:52
2644
1
原创 Cocos Creator遇到的一些错误
出现这种错误,多是资源从不同的文件夹移到其他文件夹,导致预制体打不开解决方案:删除 工程目录下 libary,temp local 这三个文件夹啊,重新打开工程即可
2020-09-17 11:37:10
4343
原创 webgl shader 输出字符串格式
<html><head> <title>www.caoyaohero.com</title> <meta charset='utf-8' /> <meta name='renderer' content='webkit' /> <meta name='viewport' content='width=device-width,initial-scale=1.0,minimum-s
2020-09-15 05:58:33
584
原创 sourceTree 变基
master:主分支self_dev:自己的分支假设我们整个团队在master分支上开发1:首先拉取master分支到本地,再利用本地的master分支新建一个self_dev分支,自己的开发就在这个分支上2:当需要上传到master时,首先将本地修改提交到本地,注意不要推送到远端3:然后切换到master分支获取最新代码4:再然后切换到自己的self_dev分支,选中master分支,右键,选“将当前变更衍合到matser”...
2020-09-08 15:17:58
4456
原创 h5小游戏的index.html解析
每一个h5小游戏都有一个启动文件htmlindex.html<html><head> <title>www.caoyaohero.com</title> <meta charset='utf-8' /> <meta name='renderer' content='webkit' /> <meta name='viewport' content='width=device-w
2020-09-08 09:07:55
3319
1
原创 lua代码动态编译详解
lua字节码:提高加载速度,lua源码加载到内存中,要先编译成字节码,然后才去生成机器指令,而lua字节码直接就可以拿去生成机器指令程序运行通常有两种方式:静态编译和动态解释,即时编译混合了二者。即时编译是动态编译的一种形式,是一种优化虚拟机运行的技术。静态编译:如C++和c,必须先编译为机器指令,然后才可以执行,但是载入内存就可以直接执行,速度快动态编译:如lua,载入内存可以一段一段解释编译,再执行,因为要解释成机器指令,所以执行速度慢即时编译:如luajit,运行动态编译,考虑到性能,可以考
2020-09-07 18:52:11
1763
原创 webgl图片在CPU和GPU中的内存管理
第一步加载到一张图片到内存var img = new Image();img.onload = function(img){ //加载完成回调 //此处的img就是你加载到内存的图像数据HTMLImageElement //使用这个img可以发到GPU, }.bind(this,img) //设置你的图片路径 img.src = arr[j];第二步从内存中将图像数据发往GPU,这个时候会在显存中重新生成一份GPU可以识别的纹理信息,注意我这里说的是重新生成,考
2020-09-01 10:19:12
2078
原创 web将内容拷贝到剪切板
var webCopyString = function(str){ console.log('复制'); var input = str + ''; const el = document.createElement('textarea'); el.value = input; el.setAttribute('reado
2020-08-27 18:44:01
532
原创 c++中的虚函数理解
函数到底是啥?函数有函数名:这块内存的首地址函数有函数参数:调用这个函数的时候,外界的传值函数有内容:这个内容是指当前函数的上下文环境,即所有局部变量,也可以理解为一个小的闭包环境当函数被调用的时候,系统会在栈上为函数开辟空间,首先栈底会放这个函数的首地址,然后依次是函数的参数,至于函数的内容,也是在这个时候才在栈上分配空间的...
2020-08-25 10:10:41
213
1
原创 layabox2.0命令行在vscode中编译打包
检查node的版本和gulp版本,最好使用nvm来管理node版本,本人遇到这两种版本匹配的时候会造成layaair2-cmd命令编译报错的问题形如下面的报错primordials is not defined我使用的正确的一组版本匹配PS E:\study\project\laya\layaTestApp> nvm list 12.16.2 * 10.4.0 (Currently using 64-bit executable)PS E:\study\project\lay
2020-08-24 07:13:28
750
原创 使用npm中的commander的创建一套自定义命令行工具
介绍国际上一流的脚本自动化构建工具使用mkdir projectcd ./projectnpm init //初始化生成一个package.jsonnpm install commander //加一个命令行库package.json{ "name": "sygame", "bin": { "ZM": "./bin/version.js" }, "version": "1.0.0", "description": "写一款自己的命令行工具", "main"
2020-08-23 11:08:28
1223
原创 ts在vscode编辑器开发的环境搭建
tsconfig.json 也可以tsc --init{ "compilerOptions": { "module": "commonjs", "target": "es5", "noEmitHelpers": true, "sourceMap": true }, "exclude": [ "node_modules" ], "include": [ "./src/**/*.ts" ]}注意launch和tasks的配合,
2020-08-21 15:49:12
593
原创 js版四叉树的算法解析和使用
算法介绍四叉树首先是一棵树,树上有很多节点,每个节点有四个孩子,从根节点散发出来;对于这个节点的信息其中比较重要的就是它所占领的区域(x,y,width,height)以及一个存放在这片区域里的目标物体数组,这一些目标物体就是一个个包围盒,每个包围盒都有有位置和宽高(x,y,width,height),对区域里的目标个数是有限制的max_object,当超过最大限制,就又开始拆分4个区域,并且将当前区域里的目标对象重新分到四个孩子区域里,这个拆分区域的深度也是有限制的max_levels成员属性 bo
2020-08-20 22:25:47
1007
原创 vscode中使用.d.ts对js进行智能提示
1项目根目录加入jsconfig.json,告诉编辑器这个是js项目{ // See https://go.microsoft.com/fwlink/?LinkId=759670 // for the documentation about the jsconfig.json format "compilerOptions": { "target": "es5", "module": "commonjs", "allowSyntheticDefaultImp
2020-08-20 14:29:11
2562
原创 nodejs使用递归对一个文件夹里所有文件进行合并
合并脚本如下var fs=require('fs');var path = require('path');var searchFileFolder="./src";//搜索的文件夹var searchFileNameIncludeString = ".d.ts";//搜索的文件名包含的字符串var searchFileNameExcludeString = "";//搜索的文件名不包含的字符var outputPlace = "./out/three.d.ts";var fileList
2020-08-20 14:15:45
783
原创 creator 加载预制体失败 creator Load text file failed
上代码cc.loader.loadRes('prefab/common/CommonHeroAvatar',cc.Prefab ,(err,res)=> { var heroAvatar = (cc.instantiate(res) as cc.Node).getComponent(CommonHeroAvatar); this.node.addChild(heroAvatar.node); heroAvatar.playAni
2020-08-19 18:33:24
1242
原创 vscode简单使用
1:更改语言在vscode界面上 按(ctrl+shift+p),输入config,选择config display language到了下面这一步就可以正式设置语言了,如果发现没有你要的语言,可以选择其它语言,回车安装其它语言选择一个安装完以后,回到先回到第一步操作,然后再重新到第二步即可设置...
2020-08-19 09:17:53
229
原创 解决关于cocosCreator uuid collision
我的操作:我把creator原工程中的资源考到另一个考到工程下面,手残的把复制选为剪切,结果原工程的资源全没了,然后我又全部重新拷贝了回来,最后打开原工程creator项目,发现编辑器的控制台提示我出错,uuid collision:xxx 资源的uuid(xxx) creator is already used. A new uuid(xxx) will be assigned,出现这个神奇的bug以后,我的sourcetree也是提示我关于这几个资源的uuid的改动,我一顿操作以后,发现这个神奇的bu
2020-08-19 08:39:40
1263
原创 pako的简单的使用
var fs = require("fs");var pako = require('pako');var path = require('path')var encodeJson = function(sourceFile='res/all.json',targetFile='res/all.bin'){ let contents = fs.readFileSync(sourceFile, {encoding: 'utf8'}); let buffer = Buff.
2020-08-18 22:35:49
5500
原创 excel转json工具
脚本compile.jslet XLSX = require('./xlsx.core.min');const fs = require('fs');//操作路径const path = require('path');function doExport(file) { let fileData = fs.readFileSync(file); let wb = XLSX.read(fileData, { type: "buffer" }); let sheetName
2020-08-18 09:52:18
266
原创 ANSI,ASCII,Unicode,UTF-8,GB2312编码
ANSI编码:这个是windows系统自带的可以由地区来动态决定的编码,可在系统中设定,你把系统区域设置为美国那就是ASCII,把系统区域设置为中国大陆那就是GB2312简体中文等ASCII编码:占一个字节,最高位是0,后面7位用来表示字符,一共是128个字符,下图只有94个,除外还有32个不能打印出来的控制符号GB2312编码:编码范围:A1A1-FEFE,其中汉字编码范围:B0A1-F7FEGB2312编码:1981年5月1日发布的简体中文汉字编码国家标准。GB2312对汉字采用双字节编码,收
2020-08-14 16:15:17
785
原创 我理解的js中的构造函数,异步执行
执行下面一段代码function Person(name,age,sex){ this.name=name; this.age=age; this.sex=sex; this.getMoney = function(){ console.log("获取10000美元"); } console.log("执行Person构造函数-----",name); } Person.pr
2020-08-13 17:19:38
1106
原创 c语言中union嵌套struct
union { /*定义一个联合*/ char i[60]; int x; struct { /*在联合中定义一个结构*/ char first; char second; char third; char fourth; char five; }str; }number; strcpy(number.i, "abcde"); printf("%s\n",number.i)
2020-08-13 09:26:02
6037
2
原创 cocos2dx LuaJavaBridge解析
#include "CCLuaJavaBridge.h"#include "platform/android/jni/JniHelper.h"#include <android/log.h>#include "base/ccUTF8.h"#define LOG_TAG "luajc"#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)extern "C" {#inc.
2020-08-12 18:15:26
432
原创 我理解中js的原型链
//---------------------start/*下面解释函数中的this*/var example_this = function(){ var zm = { name:"zm", age:17, height:171 } var hzj = { name:"hzj", age:18, height:173 } var zm_bind = { name:"zm_bind", age:17, height:172 } var obj.
2020-08-11 19:19:02
187
原创 cocosCreator中使用节点树
第一步寻找index.jade第二步在index.jade里操作第三步:ccc-devtools第四步:启动游戏,效果如下大功告成:
2020-08-11 11:56:17
1026
原创 cocos2dx lua和java互调
lua端:在一个可以被调用的地方,声明下面这个函数,比如按钮的回调function MainScene:callJavaLogin() local callbackLua = function ( ... ) print("与java端连接成功"); self:readyLogin(); end local className = "org/cocos2dx/lua/AppActivity" --java端对应的静态函数名
2020-08-10 17:47:29
894
原创 指针的基础理解
内存C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址,下图是一个 4GB 的内存,可以存放 2^32 个字节的数据。左侧的连续的十六进制编号就是内存地址,每个内存地址对应一个字节的内存空间。而指针变量保存的就是这个编号,也即内存地址指针指针的大小非常固定,它和操作系统的位数有关,如果是32位的,那指针的大小就是32位的,如果是64位的,那指针大小就是64位的,对于系统自己定义的类型和我们程序员自己定义的类型去声明指针时,这个时候类型就决定了当前首地址指向的数
2020-08-09 20:58:44
213
1
原创 lua虚拟机的机器指令
/*** grep "ORDER OP" if you change these enums*/typedef enum {/*----------------------------------------------------------------------name args description------------------------------------------------------------------------*/OP_MOVE,/* A B R(A
2020-08-09 10:47:36
224
原创 lua虚拟机中注册一个c的静态类
案例一:在lua的虚拟机写一个静态类给lua中调用static struct StudentTag{ char *strName; // 学生姓名 char *strNum; // 学号 int iSex; // 学生性别 int iAge; // 学生年龄};//lua 中通过调用这个接口来得到 pStudent指针static int Student(lua_State *L){ size_t iBytes = sizeof(struct StudentTag); struct
2020-08-09 09:32:34
191
原创 creator中矩阵究竟是如何参与坐标运算的
2d部分显示节点CCNode,内部有一个变量,叫_trs,注意这个很重要,它主要存储了以下几个数据,我们在外部修改节点下面这些数据的时候,数据会优先存储到这个数组里,然后标记矩阵为脏,表示变换矩阵需要更新,那么在渲染的时候,就会依据flag对矩阵进行更新,进而对节点进行更新,这部分数据,只有位置,旋转,缩放/*trs[0] = 0; // position.xtrs[1] = 0; // position.ytrs[2] = 0; // position.ztrs[3] = 0; // rota
2020-08-07 09:53:51
1215
原创 破解微信包工具之vscode
项目描述:破解了一个微信小游戏的代码,并且把破解流程放到了vscode中,下面是我自定义的任务,我破解的小游戏是分包的,他又六个包,所以我把它分成六个task破解完以后,需要自己来组合,六个包中有一个主包,按照主包中的game.json文件的配置,将其他五个包放到主包文件夹指定位置中,最后使用微信的web工具打开即可{ "version": "2.0.0", "tasks": [ { "type": "typescript", "tsconfig": "tsconfig.json
2020-08-06 16:23:17
707
原创 unity基础学习之基础语义
unity为了解决渲染顺序的问题提供了渲染队列,索引越小越先被渲染render queue:Background:1000Geometry:2000 不透明的物体AlphaTest:2450Transparent:3000 透明物体Overlay:4000在shader中使用SubShader{Tags = {“Queue”="AlphaTest}Pass{…}}...
2020-08-05 21:05:06
418
原创 unity基础学习之法线贴图
原理和概念用一张纹理来存储法线的值,法线的xyz方向取值是【-1,1】,而rgb的取值是【0,1】,所以这里有一个转换rgb = (normal+1)/2=0.5*normal+0.5资源在unity中引入两个cube,为其分别制作一个材质,一个材质有法线贴图,一个没有,用作对比资源1:将图片导入unity,设置类型为normalmap资源2:shader 如下:法线贴图shaderShader "Custom/normalMapNormal" { Properties { _
2020-08-05 16:09:46
2545
原创 unity基础学习之光照
一些常用术语直接光:光线直接或者经过一次反射进入我们的视野间接光:光线经过多次反射进入我们的视野TypedirectionalLight:平行光,模仿世界中的太阳光spotLight:聚光灯,由一个点发出一个光,形成一个椎体pointLight:点光,由一个点发出的光,形成一个球体Range这里指的是聚光灯椎体的高度或者点光组成的球体半径,此值越大,说明光的照射范围越大spot angle这个指的是聚光灯的椎体张开的角度,此角度越大,表明椎体的张开范围就越大color指的是光发出的颜
2020-08-04 15:42:42
844
原创 unity基础学习之camera
认识一下基础配置:ClearFlags:在摄像机进行渲染前,对颜色缓冲及深度缓冲,进行不同控制操作,每个相机在渲染时会存储颜色和深度信息。屏幕的未绘制部分是空的,默认情况下会显示天空盒。当你使用多个相机时,每一个都将自己的颜色和深度信息存储在缓冲区中,还将积累大量的每个相机的渲染数据。当场景中的任何特定相机进行渲染时,你可以设定清除标记以清除缓冲区信息的不同集合。可以通过下面四个选项之一来完成:Skybox :清除颜色缓冲和深度缓冲,没有物体遮挡的背景,用天空盒子填充。Solid Color :清除
2020-08-03 18:25:40
710
原创 矩阵的一些基础运算
向量:1.1 点乘两个n维向量点乘:二维向量的点乘:向量的模长相乘再乘以夹角余弦值。点乘的结果是一个数值(标量)。几何意义:b向量再a向量上的投影长度。1.2 叉乘结果:是一个向量(矢量)。几何意义:向量a和向量b叉乘的得到的向量是同时垂直于向量a和向量b的向量。矩阵的乘法:一个A(m×a)的矩阵和一个B(a×n)的矩阵的相乘,最后的结果是C(m×n)的矩阵两个矩阵能够相乘,前一个矩阵的列一定要等于后一个矩阵的列,否则相乘没有意义对于C(m×n)矩阵来说,它的每一个元素Ci×j,都是
2020-07-31 11:14:06
5710
原创 shader之模型选中效果
unity://两个pass//pass1:将物体放大,用指定颜色(你要求的边缘颜色)渲染//pass2:物体正常渲染//后边渲染的会遮挡住前面渲染的,最后就出现边缘选中的效果了Shader "Unlit/outLineEffect"{ Properties{ _MainTex("Albedo (RGB)", 2D) = "white" {} //主要的目标纹理变量 _OutLineWidth("width", float) = 1.2//定义一个变量 } SubShader{
2020-07-30 16:29:23
490
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅