- 博客(219)
- 资源 (10)
- 收藏
- 关注
原创 Lua 的元表
简述元表指的是 Lua 中的 MetaTable,它提供了一种重定义任意一个 Lua 中对象或值默认行为的公开入口,让 Lua 也能像许多面向对象语言一样实现操作符或方法的重载。原理解析在 Lua 中,每种类型的数据都有其默认的操作,如:number 有加减操作,string 的拼接操作,function 的调用操作,这些都是该类型的默认操作,而我们可以通过修改其原来来实现对这些默认操作进行修改。元表(MetaTable)和元方法用来定义对 table 或 userdata ..
2020-07-31 23:52:44
1234
1
原创 Unity Windows 路径长度限制踩坑
错误日志今天在 Windows 上打 PC 包时遇到了这样的报错:Console 输出的详细错误日志:IOException: Failed to Move File / Directory from 'Temp/StagingArea\bunny rummy_Data\StreamingAssets\lua\logic\ui\pnl_activity\first_add_...
2020-04-27 17:21:01
2732
1
原创 UGUI RectTransform 代码修改锚点和轴心
基本规律记住一个对应关系即可 Top => 1 Middle => 0.5 Bottom => 0 Left => 0 Center => 0.5 Right => 1 递增规律:从左到右(x),从下到上(y)无论是锚点还是轴心,当 x 或 y 的取值为: [0, 1] 时,表示点在对象区...
2020-04-24 13:14:48
6864
1
原创 UE4 接入 Protobuf(C++ 层)
引言在网络游戏开发中,我们通常使用 Google Protobuf 作为网络协议定制的格式,那么在 UE4 中如何集成 Protobuf 是我们接下来要做的事情。开源示例 code4game/libprotobuf_ue4 jashking/UE4Protobuf 看过很多篇文章,但这篇是写的最详细的 在UnrealEngine4中使用Google Protobu...
2020-02-28 12:55:07
8410
3
原创 UE4 移动端最小包
引言之前学习 UE4 的时候,常常使用提供的模板来创建项目,结果发现打包成 apk 后包体体积达到几百 M 甚至上 G。而在 Unity 最新的 2019 版本,一个空的 Unity 工程打出的 android 包,包体的大小约为 18 M。那么, UE4 打出的 android 最小包大约为多大呢?创建一个干净的工程1.设置内容包在创建项目时可以选择是否包含初学者内容包,正...
2019-12-27 15:10:07
4738
1
原创 Unity 接入 ILRuntime 热更方案
引言最近看了一下 ET 框架,本来只是研究一下网络模块,后来抽时间看一下热更框架。ET 的热更使用的不是像 tolua 这样基于 Lua 的方案,而是基于 ILRuntime 的纯 C# 热更实现方案。ILRuntime 的实现原理对 Unity 引擎有一定了解的开发者都应该知道: Unity 支持使用 C# 做脚本语言,是依赖 Mono 引擎运行 C# 编译后的 IL 中间语言...
2019-09-27 15:50:09
14285
3
原创 Unity Android Icons 配置
引言由于 Google 规定新上线的 App 的 TargetVersion 必须不低于28 ,而对于 API 级别高于 26(Android 8.0)又要求必须适配新的 Icon 方案,即自适应图标(Adaptive Icons)。因此,Unity 中的图标设置栏也发生了一些变化,在 Unity 的 Android 平台 PlayerSettings 中,Icon 设置由原来的一栏变为三栏...
2019-09-24 15:08:57
9244
1
原创 Hexo 和博客园添加 Live 2D 模型
引言今天在查资料时,在这篇博客 Unity FSM 有限状态机 看到了一个有趣的东西 ,屏幕右下角有一个二次元的模型,而且鼠标移到不同位置,模型会跟着动,点击还会播放音频。通过截图使用 google 的图片搜索,原来这个叫做 Live 2D ,最终找到了添加方式,可以在博客园添加,后来发现原来 hexo 也可以添加。Live2D简介Live2D 是一种应用于电子游戏的绘图渲染技术...
2019-07-06 21:59:10
4472
5
原创 PhysX 物理引擎研究(一)源码编译
前言Unity 3D 中的物理引擎分为 2D 引擎和 3D 引擎两部分,其中 2D 引擎使用的 Erin Catto 写的是 Box2D,而 3D 引擎使用的的 NVIDIA 的 PhysX,在 Unity Editor 中打开 Help — About Unty 可以看到 "Physics powered by PhysX. (c) 2011 NVIDIA Corporation." 的字样...
2019-06-29 16:43:21
11738
4
原创 Windows 下的 OpenGL 开发环境配置(GLFW+GLAD)
引言最近在读 Unity 4.3 的源码,研究到 Unity 集成的物理引擎 PhysX 和 Box2D 部分,接下来还要研究渲染引擎方面的东西,想着直接倒腾一下,自己集成一遍写个小 demo 。当然这都依赖于 OpenGL 这个东西来渲染(因为物理引擎本身都是一些计算,没有可视化的东西,需要借助渲染层将其可视化),这里先搭一个可以在 Windows 下编写 OpenGL 程序的架子,然后再往...
2019-06-28 10:55:06
18475
2
原创 Windows下的 C++ 编译工具(MinGW-w64 + CMake)
引言假如想在 Windows 下进行 C++ 的开发,可以直接使用 Visual Studio 和相应的 C++ 插件来实现,但编译和构建过程是不可见的。为了更彻底地了解 C++ 工程的编译和构建,可以借助另外两个工具在 Windows 环境下实现。MinGW是 Windows 系统下的一个编译环境,包含了 C++ 代码编译所需的三方库、头文件等,用于完成 C++ 源码的编译和链...
2019-06-28 10:52:10
16214
1
原创 编译 Unity 4.3.1 引擎
引言从 2014 年参加实习便开始使用 Unity 3D 开发游戏,当时 Unity 还是完全闭源的,但那时候有些公司财大气粗的会直接跟 Unity 官方购买了引擎源码,似乎后来 Unity 就不卖给中国的企业了。Unity 官方从 Unity 2017.1 版本开始,开源了引擎和编辑器的C#源码(源码地址:UnityCsReference),但核心的 C/C++ 部分源码并未开源。...
2019-05-17 16:15:38
11135
11
原创 JavaScript 中 == 和 === 的区别
1. 引言这是在 JavaScript 中用来进行数值和对象对比时常用的操作符,从定义上来看: == :抽象相等,比较时会先进性类型转换,然后再比较值 === :严格相等,会比较两个值的类型和值 测试例子:console.log('10'==10); // trueconsole.log('10'===10); // false2. ECMA 规范上...
2019-04-28 15:10:30
824
1
原创 Git SSH 方式无法 push 踩坑
引言我们知道使用 git 管理的项目可以通过两种格式的 url 来获取,分别是 HTTP 和 SSH 使用 HTTP 方式操作 git 工程需要输入对应的账号和密码,当然为了方便也可以使用诸如 TortoiseGit 这样的图形化工具来管理 Git 工程,而且其中自带记住账号和密码的功能,因此只需输入一次账号密码即可。 使用 SSH 的方式拉取 Git 项目则需要提前配置好 S...
2019-02-26 19:49:52
6111
2
原创 MySQL 字符集
引言刚刚入门数据库开发的开发者估计没少被字符串“乱码”的问题所困扰,导致乱码的原因有很多,而最常见的原因可能是对字符集和排序规则没有概念,因此在创建数据库时便已早早埋下了地雷。 字符集和排序规则同理,假如使用 Navicat for MySQL 这样的可视化管理工具来管理数据库,在创建数据库时会弹出如下弹窗,要求我们输入三项基础信息:数据库名、字符集和排序规则,其中字符集和排序规则...
2019-02-15 16:28:35
412
1
原创 Windows 下的 Vim 编程
引言之前习惯了在 Linux 下使用 Vim 进行编程,最大的好处就是能摆脱鼠标进行编程,而在 windows 下 cmd 并没有办法直接安装 Vim ,Windows 下可以安装 gVim ,但要直接在 cmd 窗口中直接像 Linux 下输入 vim 进入编程,还是需要进行一些配置。安装 gVim直接在 vim 官网 下载最新的 Windows 版本的安装包 gvim81.e...
2019-02-14 09:39:55
4751
1
原创 Maven 上手指南
引言最近开始学习 Spring Boot ,由于选用 Maven 作为构建工具,这也是 Java 后端开发常用的构建工具,当然也可以选用 Gradle ,Gradle 之前在 Android 项目中使用居多,但近期也渐渐有取代 Maven 的趋势,后续可能会专门再写一篇关于 Gradle 的使用。这里先大致了解 Maven 管理项目的一些基础知识,这里主要参考官方的文档。 Maven简...
2019-01-25 15:16:32
751
1
原创 Flutter 1.0 正式版发布
在昨晚(2018年12月4日)的 Flutter Live 2018 上,Google 宣布 Flutter 1.0 正式发布,这也是 Flutter 在第一个 Beta 测试版发布9个多月后发布的第一个正式版本。做移动端应用的人假如还没听过这个库,大概需要注意一下了,毕竟这可能会影响到移动端应用开发下一个方向。 关于 FlutterFlutter 是谷歌的移动端 UI 框架,可...
2018-12-05 13:52:53
1275
2
原创 IT 圈所谓的凛冬将至
今天是 2018 年最后一个月的第一天,深圳的冬日一如既往地把人晒得有些烦躁和焦虑。从去年年底跳槽至今一年有余,中间倒是经历了不少事。最近,在浏览各种技术群时,隐隐感觉到 IT 圈子,特别是游戏圈的寒冬将至的气息,坊间也不少传言各大巨头企业的裁员浪潮。身在游戏圈中的我,在这一年里,其实也或多或少地亲身体会到了这个行业的变化。去年九月份,也正是我开始萌发离职想法的时候,原本公司对于个人成...
2018-12-01 15:26:48
1139
2
原创 Windows 进程管理
引言在 Windows 下,有时候启动软件需要使用指定的端口,但此时端口可能被其他应用所占用,所以需要找到占用端口的应用并将该端口释放出来。查询几个常用的查询命令行窗口指令: netstat -ano 查看所有进程 netstat -ano|findstr [指定端口号] 查询占用指定端口的任务进程 id ,例如: C:\Users\Administ...
2018-11-21 10:25:25
586
1
原创 Egret 性能优化
引言之前完成了项目的逻辑内容开发之后,开始着手解决性能方面的问题,比较严重的就是发热和耗电。而且出现玩的时间越长越卡的问题,想必是有内存泄露了。接下来就是优化的主要思路: 首先,降低常驻场景的 drawcall ,即游戏主场景及主界面 UI ; 其次,排查内存泄露; 最后,假如资源回收机制。 减低 Drawcall设置 index.html 中 egre...
2018-11-16 15:47:50
6982
1
原创 Egret QQ玩一玩适配【踩坑日记】
需要申明一点,这是我接过最坑的渠道了,各种神奇的问题,首先是接口比较奇怪而且新旧版本搞得很混乱,其次是平台底层实现性能差而且很多限制。此外,这里需要理清楚一个概念:QQ 玩一玩 和 QQ 玩吧 并非同一个东西,QQ 玩一玩也叫 QQ 轻游戏 或 厘米游戏 ,是基于 bricks 引擎实现的。 技术限制 玩一玩平台不支持基于DOM Document对象的HTML元素处理 玩一...
2018-11-16 15:10:37
2734
2
原创 python Png图片压缩工具
引言最近在做 H5 小游戏的开发,与 App 不同,由于 H5 所有的资源都是通过 CDN 获取的,考虑到网络资源加载速度的问题,优化资源显得格外重要。因此,图片资源的压缩也是必不可少的。 起源起初,我们在 windows 下是通过一个叫做 PNGoo 的 GUI 工具来实现图片资源批量压缩的。但考虑压缩资源还需要启动一个应用,将图片资源拖进去再开始压缩,显然不够智能,希望通过 p...
2018-10-13 16:53:45
4644
1
原创 H5 微信小游戏群 openGID 解密
这里使用的 Wechat Lib 版本是 2.0.6 ,高于此版本则不再能获得分享成功与否的回调。后来直接把基础库升级到 2.2.2 ,发现只是开发者工具拿不到回调而已,手机上还是还能拿到回调。在使用微信小游戏的分享功能时,假如在 wx.showShareMenu 中设置了 withShareTicket: true :wx.showShareMenu({ withShare...
2018-08-30 17:30:03
2063
3
原创 前端 DFA 敏感词过滤
前言最近在做游戏的聊天功能,需要在客户端接入敏感词过滤,较低成本的实现方法有字典匹配和正则表达式匹配,但效率上较低。大致 google 了一遍,发现 DFA 算法是实现敏感词过滤效率较高的选择,下面是具体实现过程。 DFA 算法须知DFA 算法,即 Deterministic Finite Automaton ,中文翻译是有穷自动机。它是通过 event 和当前 state 得到下...
2018-07-30 16:58:06
2652
原创 H5 微信小游戏 —— 音频管理器
前言原本使用的是 egret 的 egret.SoundChannel 和 egret.Sound 来管理音频,但不知为何在重复将游戏切换到前后台后,很容易出现背景音播放不全、播放重复和无法播放的问题,懒得再去排查原因干脆使用小游戏提供的音频播放 API 重写了一个音频管理工具。API 相关参考官方文档 教程/音频播放 ,大致了解音频播放是利用微信接口 wx.createInnerAudioCon...
2018-07-10 14:51:08
2714
1
原创 electron-vue 实践 2 —— excel 合并
前言之前使用 vue-cli 和 electron-vue 创建了工程,接下来就开始实现具体的逻辑,我们的目标很简单,就是将一张或多张表中的所有 sheet 页内容都垂直或水平合并在一个 sheet 中,并生成一张新的表。 UI 布局文件新加一个 .vue 后缀的文件,vue 的 UI 文件格式大致如下,不了解的可以查看 官方入门文档 :<template> ...
2018-06-28 10:21:33
1912
4
原创 electron-vue 实践 1 —— 安装和创建工程
去年倒腾过一段时间的 electron ,但最终没做出什么东西来,最新刚好要帮一个做审计工作的朋友做一个桌面软件,所以打算正儿八经地研究一下。我们都知道 electron 相当于一个浏览器的壳子,里面的内容开发其实与 web 网页开发并无明显区别,只是通过此框架提供了可以直接操作系统的 native API ,大部分接口是普通浏览器做不到的。electron 安装有资源问题,在国内使用 npm 直...
2018-05-23 10:18:19
6443
4
原创 Egret 从创建到发布
创建项目安装完 egret 之后,使用 egret 指令创建工程:$ egret create e_demo正在使用白鹭编译器 5.1.9 版本扫描项目列表正在创建新项目文件夹...正在编译项目...项目创建成功,您可以执行 egret run 来运行刚刚创建的应用项目共计编译耗时:3.132秒运行项目运行创建出来的工程:$ cd e_demo$ egret run您正在使用白鹭编...
2018-05-20 15:57:57
5550
1
原创 TensorFlow 学习笔记1 —— 安装
今天大概看一下如何搭建 TensorFlow 的开发环境,当前的工作平台是 Mac OS X 10.13.2 :资料主要来源于 TensorFlow 官网 。安装方式选择官方提供了一下几种安装方式:Virtualenv (虚拟环境) "native" pip(原生环境使用 pip 工具安装)Docker (使用 docker 容器)installing from sources, which is...
2018-04-15 23:07:58
1441
2
原创 Unity 使用 Spine 动画
在 Unity 中,常常使用 Spine 来制作一些动画,引擎本身并不能直接播放 Spine 动画,需要额外导入一个 RunTime 插件库才能支持。运行库导入关于运行库的导入,有两种方式:1. 从开源库导入下载 Spine 的 runtime 库:EsotericSoftware/spine-runtimes ,只需要将其中的 spine-csharp 和 spine-un...
2018-04-02 17:34:39
141965
5
原创 BAT 字符串大小写转换
前言今天为了解决一个问题,在 Unity 中我们经常需要通过 IO 读取文件,就像我们读取表格的二进制文件例如:DirtyConf.bytes , Windows 中默认是对大小写不敏感的,所以读取的时候指定的读取名称可以是 DirtyConf 字母的任意大小写组合,例如:dirtyconf 、 DIRTYCONF 、DIrtyconf 等。然而对于手机移动端,通过 IO 是大小写敏感的,必须与原...
2018-03-31 14:14:50
9818
原创 Skynet服务器框架(十二) (debug_console)控制台管理
在 skynet 框架中提供了一个控制台服务 debug_console ,用于帮助我们查看 skynet 的一些运行时数据,而且在需要热更代码的时候也需要借助控制台来实现。接下来,我们先看看如何使用控制台,然后在大致看一遍底层的源码实现。工具准备由于启动控制台服务后,需要借助 nc 或 telnet 来远程连接控制台,所需需要确保机器上已安装了此类工具,这里我使用的是 nc 6.40 ,可以先查...
2018-03-15 09:29:38
6022
1
原创 Skynet服务器框架(十一) 看懂 skynet 的 Makefile
Makefile 这个东西最早是在大学学习 Linux 下编写 C 程序的时候接触到的,但是,基本上都是用完就还给老师了。最近也是因为使用 skynet 框架开发服务器,才想起重新拾起这个技能。今天就以 skynet 里面的 makefile 为例,大概解读一遍。什么是 Makefile1. 什么是 make 在了解 Makefile 之前,需要先了解 make ,代码生成可执行文件的过程,会经历...
2018-02-27 17:22:50
4086
1
原创 Linux 和 Windows 下配置 SSH(复用已有的公钥)
假如项目中添加了需要使用 ssh 方式连接服务器的 git 子模块,则需要配置 ssh 公钥,这里我是直接复用之前用过的公钥,这样我们可以在多台设备上使用同一份公钥。复用旧公钥在 ~/ 目录下新建 .ssh 目录,然后复制已有的 id_rsa 和 id_rsa.pub 到此目录下,然后修改 id_rsa 的权限,不然会报错 "Permissions 0644 for '/root/.s...
2018-02-27 16:43:12
5181
1
原创 Unity 带 Alpha 图片手机包失真
iOS 图集压缩失真在 Android 平台下 UI 图片一切正常,但打包到 iOS 上之后,带透明度的区域会出现明显的失真,排查之后才发现,对于设置了 Package Tag 参数,即打包到图集中的图片,使用 Unity 默认的压缩设置的话,会使用 PVRTC 4 bits 进行压缩,此时:不打图集的散图,带透明度,不会有明显失真;打图集的图片,带透明度,透明区域失真会比较明显:
2018-02-05 20:36:32
1747
原创 Docker 入门须知
前言:之前大概了解了一下 Docker 的一些皮毛,知道 Docker 是基于 Go 语言开发的容器技术,可以在同一台服务器上构建多个互不干扰的干净的隔离环境。Docker 的优点:相比于传统的虚拟技术,容器可以以更低的成本为应用提供一个干净的隔离环境,原因大致如下: 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用
2018-01-14 14:09:04
564
1
原创 H5 游戏主流引擎和编程语言
引言:最近微信新版本,主推小程序中的小游戏模块,一个 “跳一跳” 的 H5 游戏瞬间爆火,虽然很多传言说 H5 真正盈利的时机未到,因为它的突出作品大多是简单的小游戏,好玩但不吸引付费。然而,H5 游戏巨大流量和强大的日活跃还是可以转化为利润的。
2018-01-14 13:38:09
28052
原创 Unity 移动端 The file 'none' is corrupted. 报错解决
Editor 上不报错,打成 ab 包在移动端报错1. 应用背景:我出现此问题的背景环境是:我使用一个自定义的列表组件来管理列表 item 的循环复用;然后 item 做成一个预制体,跟列表界面预制体放在同一目录下;列表组件中通过一个 public GameObject itemPref; 的属性索引 item 预制体,实例化的时候使用 Instantiate(itemPref) 的方式实现
2017-12-02 16:44:41
4696
原创 Unity 从 protobuf 2.5 升级到 3.x 【踩坑】
之前使用 protobuf 2.5 的版本来定制和读取表格,为了适应后端 golang 的工具选型,需要将前端的的一些库和工具都升到 3.x 的版本,例如, C# 中要使用 protobuf 需要引入一个编译好的 protobuf-net.dll 库文件。Protobuf 3.4.x :1.资源下载:protobuf 源码:这里直接选择最新的 Protocol Buffers v3.4.0 ,然后
2017-10-24 09:59:24
7055
2
NPOI插件写的.xls表格数据序列化的导表工具
2016-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人