摘要: 经过一段时间的考虑,我决定开通个人公众号。在这个不确定的世界里,我越来越感觉到编程、英语、写作是未来生存三项十分重要的技能,而我发现我在写作上面还需要很多的锻炼,而公众号正好也是一个历练自己的机会。 公众号的名字叫:布衣张少。我本是布衣的命,奈何有颗少爷的心,不求闻达于大V,只求心中的那片宁静。 博阅读全文
posted @ 2017-02-24 17:39 meteoric_cry 阅读(70) 评论(0) 编辑
摘要: 被坑的不浅,遇到错误:“ LNK1561:必须定义入口点”,解决方案删除再建,步骤一遍一遍操作,还是报错。如下图所示: 首先,它必须要改成DLL或者LIB(动态/静态库),如果是应用程序那必须要提供main函数的主入口。网上提供的方法,比如改 系统 - 子系统,各种方法都试过了,始终是报错。 冷静了一下,觉得是新建空项目那里有问题。然后就改创建一个win32的空项目。 再添加lu...阅读全文
posted @ 2017-12-12 17:43 meteoric_cry 阅读(10) 评论(0) 编辑
摘要: Roberto Ierusalimschy写过经典的Lua 性能提示的文章,链接地址>> 我通过实际的代码来验证,发现一个问题。当我使用 LuaStudio 运行时,发现结果反而与提示相反,甚是奇怪,而使用luac进行运行,与作者给予的提示相符,在某些地方性能可能有优化,比如读取35kb的文件时,时间还是比较快的(可能5.1版本做过优化了)。 日常的Lua编码中,需要注意以下几点: 1)多使用...阅读全文
posted @ 2017-12-07 20:33 meteoric_cry 阅读(13) 评论(0) 编辑
摘要: 向量的平移,比较简单。 缩放也较为简单 矩阵如何进行计算呢?之前的文章中有简介一种方法,把行旋转一下,然后与右侧对应相乘。在谷歌图片搜索旋转矩阵时,看到这张动图,觉得表述的很清晰了。 稍微复杂一点的是旋转,如果只是二维也很简单(因为很直观),但因为是三维的,有xyz三个轴,先推导二维的再延伸到三维。 YouTube上有很好的推导过程,视频链接地址(需穿.墙) https://...阅读全文
posted @ 2017-12-05 16:00 meteoric_cry 阅读(17) 评论(0) 编辑
摘要: 翻阅了很多资料,也做了不少笔记,决定还是对渲染进行一个总结,以巩固所学的东西。 《Real-Time Rendering, Third Edition》 (PDF的配图链接)将一个渲染流程分为三个阶段: 即 应用阶段(PApplication Stage)、几何阶段(Geometry Stage)、光栅化阶段(Rasterizer Stage) 我借用《Unity Shader入门精...阅读全文
posted @ 2017-12-04 22:22 meteoric_cry 阅读(9) 评论(0) 编辑
摘要: 最近一直在学习实时渲染,不免要接触线性代数。而渲染中,一定会用到矩阵,当我再次去复习我之前看的书时,发现《Unity3D 实战核心技术详解》关于矩阵就有几处错误 ,特标注出来。 书的第一章《3D数学与Unity》,1.3.2讲矩阵缩放、1.3.3讲矩阵的旋转。缩放是一个矩阵,后面旋转针对绕三个不同的轴的旋转矩阵(x、y、z),总共4个矩阵,其中3个是错误的,只有一个绕y轴旋转是正确的。我不确定...阅读全文
posted @ 2017-12-02 15:26 meteoric_cry 阅读(10) 评论(0) 编辑
摘要: 这个问题是我第一次接触3D开发就有的疑问,最近在看《游戏引擎架构》(Game Engine Architecture),在书中找到了答案。 三角网格(Triangle Mesh),游戏开发者会使用三角形网格来建模。三角形是表面的分段线性逼近,如果用多条相连的线段分段逼近一个函数或曲线。 实时渲染之所以选用三角形,是因为三角形有以下的优点: 三角形是最简单的多边形,少于3个顶点就不能成为一个...阅读全文
posted @ 2017-11-30 15:08 meteoric_cry 阅读(18) 评论(0) 编辑
摘要: 用Visual Studio写shader实在蛋疼,那可能就会有人要问了,为啥不用插件可视化制作shader呢?因为我是新手,新手还是老老实实敲代码,慢慢来… 所以试着在网上找找,有没有类似的插件或者编辑器,被我找到了,也基本符合我的要求。 我想实现的效果如下:双击xxx.shader打开Sublime Text,可在Sublime Text中对常用的函数进行提示,并支持函数的跳转。 这就分为...阅读全文
posted @ 2017-11-22 17:55 meteoric_cry 阅读(19) 评论(0) 编辑
摘要: 今天早上听说一件事情让我觉得很诡异的事情:公司线上的一款游戏,加载一份配置资源后,内存涨了几十M,然后内存再也下不来了。因为好奇,所以要来了最大的一个配置文件(4.5M,去除空格与换行后的大小),进行测试。最终发现,内存其实是可以被释放的,不过需要注意以下的规则。 同时,为了证明luac 与 luajit 表现一致,我同时也使用了 luajit 进行了测试。 前往下载页面 http://lua...阅读全文
posted @ 2017-11-14 22:27 meteoric_cry 阅读(58) 评论(0) 编辑
摘要: 之前的文章《wireshark解析自定义的protobuf协议》 ,当时只监听了一个端口,而如果游戏同时有二个 socket 连接,比如一个是网关另外一个是其它的,怎么办呢? for i,port in ipairs(tcp_port) do tcp_port_table:add(port, m_MeteoricProto) end 参考链接:https://wiki.wires...阅读全文
posted @ 2017-11-07 21:00 meteoric_cry 阅读(3) 评论(0) 编辑
摘要: Unity中的输入管理器由Input类进行操控。官方文档地址:https://docs.unity3d.com/ScriptReference/Input.html 中文翻译的话可以在这里:http://www.ceeger.com/Script/Input/Input.html 这里只说几个易混淆的点。 既然已经有GetKey、GetKeyDown、GetKeyUp 以及 GetMouseB...阅读全文
posted @ 2017-11-03 16:56 meteoric_cry 阅读(16) 评论(0) 编辑
摘要: 一款游戏在研发初期就需要考虑多语言的问题,否则后期在进行多国语言版本时就面临着巨大的成本。鉴于之前页游的经验,其它同事设计出读取Excel的方式来管理所有的文字。但是我在使用中发现很致使的一个问题,当多人编辑一个Excel时,冲突了就很麻烦,解决起来的成本还蛮高的。 之后我想了一些办法,例如搭建一个web站点,将所有的字符串 Key、Value保存到数据库中,避免冲突,方便去查询。但感觉还是太...阅读全文
posted @ 2017-11-02 14:20 meteoric_cry 阅读(20) 评论(0) 编辑
摘要: JavaScript中的定时器与延时器,分别是 setInterval、setTimeout,对应的清理函数是:clearInterval、clearTimeout。 而在Unity中,则分别是:Invoke、InvokeRepeating和取消延迟调用 CancelInvoke 延迟调用 void Invoke(string methodName, float time); 重复延迟调...阅读全文
posted @ 2017-11-02 14:01 meteoric_cry 阅读(34) 评论(0) 编辑
摘要: 最近为美术编写一个Unity编辑器的扩展,主要为了减轻美术在修改预制对象时的机械化操作的繁琐和出错。具体实现的几个功能: 1、删除指定组件; 2、复制、粘贴指定的组件; 3、重新关联新的属性; 4、重新保存预制对象; 一、删除指定类型的组件 public static void RemoveComponentHandler(GameObject gameObject, Type compone...阅读全文
posted @ 2017-10-23 17:26 meteoric_cry 阅读(37) 评论(0) 编辑
摘要: 正常情况下都会显示的,如果没有显示,尝试以下几种方案: 1)缩小模型看一看 2)旋转灯光试试,看是否有阴影 3)检查阴影设置 菜单栏Edit –> Project Settings –> Quality 4)检查灯光自身的属性设置,包括强度和阴影类型阅读全文
posted @ 2017-10-11 15:42 meteoric_cry 阅读(15) 评论(0) 编辑
摘要: .asset一般用来存储一些配置,比如SDK初始化的相关参数。 using System.Collections.Generic; using UnityEngine; namespace XXX { [CreateAssetMenu(fileName="xxx", menuName="xxx")] public class CommonConfig : ScriptableOb...阅读全文
posted @ 2017-09-27 19:12 meteoric_cry 阅读(10) 评论(0) 编辑
摘要: Unity 5.0开始增加了RuntimeInitializeOnLoadMethodAttribute,这样就很方便在游戏初始化之前做一些额外的初始化工作,比如:Bulgy参数设置、SDK初始等工作。 先来看一下它的生命周期 sing UnityEngine; public class ExampleClass : MonoBehaviour { private void Awak...阅读全文
posted @ 2017-09-27 15:49 meteoric_cry 阅读(78) 评论(0) 编辑
摘要: InitializeOnLoad 属性应用的对象是 静态构造函数,它可以保证在编辑器启动的时候调用此函数。根据这个特性,可以在编辑器中设置定期的回调(帧更新),来实现类似watchFile的功能。这里借助了EditorApplication类中的 update 委托,在编辑器运行时,它将每秒调用多次。 using UnityEditor; using UnityEngine; [Initiali...阅读全文
posted @ 2017-09-27 15:19 meteoric_cry 阅读(14) 评论(0) 编辑
摘要: DLL —— Dynamic Link Library(动态链接库文件),这里以Window平台为例。 Unity支持的两种语言生成的DLL库(C++、C#),这里以C#为例,C++网上可以搜索很详细的资料。 1) 添加引用关系 如果有对UnityEngine、UnityEditor的引用,需要先添加引用关系。 路径通常位于Unity安装目录下的Editor/Data/Managed路径...阅读全文
posted @ 2017-09-27 14:47 meteoric_cry 阅读(28) 评论(0) 编辑
摘要: 通过我们使用Unity开发游戏,是在PC/Mac上。而一个游戏通常也会有很多的场景,比如A、B、C、D三个场景,正常流程下的执行顺序是 A –> B –> C –> D。在具体一点,比如 A —— 启动场景、B —— 资源加载场景、C —— 登录场景、D —— 战斗场景。 游戏先启动 –> 加载资源阅读全文
posted @ 2017-09-27 11:18 meteoric_cry 阅读(25) 评论(0) 编辑
摘要: 先看最终效果 wireshark是开源的,而且在Windows下安装时用的是64位,所以相应的库文件需要使用64位。 一个Lua插件的Dissector结构大致如下: do -- 协议名称为 m_MeteoricProto,在Packet Details窗格显示为 XXX Protocol local struct = Struct local data_d...阅读全文
posted @ 2017-09-11 20:31 meteoric_cry 阅读(48) 评论(0) 编辑
摘要: 在使用VC++进行开发时,如果按F5进行Debug时,当前相对资源是相对工程的vcxproj的文件夹目录,而直接双击运行exe时,资源是相对exe的文件夹目录。为了兼容这二者,最好使用绝对路径,这样无法是Debug还是直接双击运行exe时都不会遇到无法加载资源的问题。 char* WcharToChar(const wchar_t* wp) { char *m_char; in...阅读全文
posted @ 2017-08-17 21:05 meteoric_cry 阅读(43) 评论(0) 编辑
摘要: 项目中引用了XLua,而Lua文件又是以txt文件结尾的,当修改系统的扩展脚本编辑器为vs后双击lua文件(xx.txt)默认也使用vs打开了,无提示的黑白文本编辑 昨办? …. 后来看到网上有写Unity的插件,想着应该也能判断后缀名然后调用指定的编辑器,果然可以。直接贴代码了(C#文件,只要建一个名为Editor的目录 —— 与路径无关,扔进去就行,Unity会自动编译的) ...阅读全文
posted @ 2017-08-16 16:33 meteoric_cry 阅读(24) 评论(0) 编辑
摘要: 主要用到协程(Coroutines)和游戏对象的生命周期(GameObject Lifecycle)基础知识,巧妙解决了游戏重启的问题。 关于协程,这里有篇文章我觉得写的非常好,理解起来也很容易。推荐先看这篇文章:对Unity中Coroutines的理解>> 协程简单来看分三部分: 1)启动,常用方阅读全文
posted @ 2017-08-16 15:40 meteoric_cry 阅读(28) 评论(0) 编辑
摘要: 官方的事件函数的执行顺序中有详解(Link:Execution Order of Event Functions) (图片来源:http://whatiseeinit.blogspot.com/2012/10/unity3d-monobehaviour-lifecycle.html) 通过实际操作来阅读全文
posted @ 2017-08-16 13:52 meteoric_cry 阅读(70) 评论(0) 编辑
摘要: 下载软件 1) Graphviz,下载地址:http://download.csdn.net/detail/u010953266/8591169 为什么不用官网?一是下载速度慢,二是下载到本地的文件貌似是有损坏的,每次安装都报错,后来直接放弃了,从其它地方搜到的; 2)Doxygen,下载地址:ht阅读全文
posted @ 2017-08-08 20:50 meteoric_cry 阅读(26) 评论(0) 编辑
摘要: 可能很多人都遇到过浮点数精度丢失的问题,下面以JavaScript为例。 1 - 0.9 = 0.09999999999999998 纳尼,不应该是0.1么,怎么变成0.09999999999999998呢?这就要从ECMAScript标准讲起了。 ECMAScript 并不像其他编程语言一样对数值类型进行比较具体的划分。ECMAScript 中并不区分整数和浮点数,也不区分不同长度的整数和...阅读全文
posted @ 2017-07-31 22:39 meteoric_cry 阅读(120) 评论(0) 编辑
摘要: 随着微信消息的轰炸,我决定重拾邮箱。为了方便管理邮箱,我下载并试用了Foxmail和网易邮箱大师,Foxmail不确定用什么语言开发的,可能是C++或者Delphi(早期应该是Delphi,最新的版本不确定),而网易邮箱大师用的是基于duilib + directui进行开发的(微信PC客户端也是用这个进行开发的)。但二者都大量内嵌了网页在里面。 界面布局和清爽度上,网易邮箱更胜一筹,而且从更...阅读全文
posted @ 2017-07-27 14:48 meteoric_cry 阅读(266) 评论(0) 编辑
摘要: 介绍一款Windows下的神奇 —— everything,软件很小巧,但是搜索速度非常快,比Windows自带的搜索功能更强大、更快。掌握它的基本用法,在查找文件时能提升很高的效率 1、下载 2、基本设置(搜索历史) a) 如何开启搜索历史 默认搜索历史是关闭的,可以手工开启。 菜单栏“工具” –> “选项” 快捷键 ctrl + p 点击“历史” 确保勾选“启用搜索历史” ...阅读全文
posted @ 2017-07-12 21:55 meteoric_cry 阅读(448) 评论(0) 编辑
摘要: App项目使用Bugly的内测分发功能进行整包的测试,但日积月累之后,版本就会特别多。而线上同时跑的版本可能不过三个左右,那么多版本会干扰到查看崩溃、选择版本,如何隐藏呢? 右上角,更多 –> 产品设置 –> 版本管理 可是bugly有bug,只能设置显示,不能设置隐藏 >_>> ((i & 0x03) hex string conversion var _byteToHex = [];...阅读全文
posted @ 2017-07-06 20:51 meteoric_cry 阅读(96) 评论(0) 编辑
摘要: 公司项目有一款带即时聊天、群组功能的APP,因为要给客服人员使用,需要开发PC版本。之前使用C#开发过一个PC版本,但是C#的UI这一块支持的不太好,而且升级比较麻烦,我就牵头基于Electron去实现了一个PC版本。 遇到了客服那边提过来的需求,当有新消息过来的时候,如果聊天窗口最小化了,需要有提醒,系统托盘也要像QQ一样有新消息过来的提醒与闪烁。 查了一个资料,两个功能都实现了...阅读全文
posted @ 2017-07-05 20:29 meteoric_cry 阅读(207) 评论(0) 编辑
摘要: 最近使用Fiddler抓取手机上的HTTPS请求时,遇到一个问题。设置完之后,访问HTTPS的页面,却得到一个错误 网络出错,轻触屏幕重新加载:-1202 (如下图所示) 我印象中,之前都好好的,怎么突然就不行了呢?我重新审视了一遍自己的操作步骤。 首先启动Fiddler,然后设置手机网络的HTTP代理。之后在iPhone上用Safari访问ip:port 然后...阅读全文
posted @ 2017-05-10 20:21 meteoric_cry 阅读(99) 评论(1) 编辑
摘要: 经过一段时间的考虑,我决定开通个人公众号。在这个不确定的世界里,我越来越感觉到编程、英语、写作是未来生存三项十分重要的技能,而我发现我在写作上面还需要很多的锻炼,而公众号正好也是一个历练自己的机会。 公众号的名字叫:布衣张少。我本是布衣的命,奈何有颗少爷的心,不求闻达于大V,只求心中的那片宁静。 博阅读全文
posted @ 2017-02-24 17:39 meteoric_cry 阅读(70) 评论(0) 编辑
摘要: 2016发了几件被称为黑天鹅的大事件: 1、英国脱欧了; 2、特朗普当选美国总统了; 3、朴槿惠遭弹劾被停职; 而我在看了《得到》专栏吴军老师发表的那篇《市场永远是对的》后,里面的一些观点值得深思。 在股票投资上,总有这样一些精英,他们建造了非常‘完美’的预测模型,但是预测市场就是不准,于是他们说市场有问题。当然,真正的投资人知道,市场永远是正确的,要错也是你的模型错了。 ...阅读全文
posted @ 2017-02-20 22:00 meteoric_cry 阅读(56) 评论(0) 编辑
摘要: 肯定很多人都听过“细节决定成败”,百度百科的版本是这句话最初来自一个小故事“丢失了一个钉子,坏了一只蹄铁;坏了一只蹄铁,折了一匹战马;折了一匹战马,伤了一位国王;伤了一位国王,输了一场战斗;输了一场战斗,亡了一个帝国。” 也有人将这句话作为书名进行出版,三个人取了相同的一个名字《细节决定成败》,最早出版于2004年。那到底细节是否真的就决定了成败,看那三本书以及书中的例子得到的答案是肯定的,而我...阅读全文
posted @ 2017-02-20 21:16 meteoric_cry 阅读(44) 评论(0) 编辑
摘要: 老婆反映水果6在收到微信视频聊天消息后,收到推送,有横幅和滴的一声(跟聊天消息一样),但是没有不间断的响铃,我花了近半个小时帮她解决这个问题,从系统提示音、微信通知、系统声音设置都是正常的,网上各种搜索,发现有人也提到这个问题,但没有解决方法,有一个人提到说重装(重装意味着微信数据全部丢失,如果不做阅读全文
posted @ 2017-02-18 23:42 meteoric_cry 阅读(134) 评论(0) 编辑
摘要: 主要创始人 马化腾:腾讯公司控股董事会主席兼首席执行官 许晨晔:腾讯公司首席信息官 张志东:2014年3月19日卸任首席技术官(CTO) 陈一丹:2013年3月21日宣布卸任首席行政官(CAO) 曾李青:1999年-2007年期间担任腾讯公司首席运营官(COO),2007年6月离开腾讯后担任腾讯公司阅读全文
posted @ 2017-01-02 20:19 meteoric_cry 阅读(1723) 评论(0) 编辑
摘要: 因为之前用过上述的组合完成过很多系统,而这一次是为了实现一个帮助系统的静态网页发布。因为很久不写,重点说遇到的几个坑: 1、库版本的问题 比如mysql连接数据库一直报错,因为系统重装过,所以重新安装了最新的Node和Mysql,结果死活连接不上,折腾了半天最后发现需要升级一个node-mysql,错误信息: Error: ER_ACCESS_DENIED_ERROR: Access ...阅读全文
posted @ 2016-12-07 16:52 meteoric_cry 阅读(884) 评论(0) 编辑
摘要: 通常App都会采集用户的设备信息,比如设备类型、网络类型、内存大小等,而拿到的数据比如:iPhone 8,1是什么意思?代表iOS 8.1吗,非也。这里放二个网站大家可以上去查一查,在统计分析的系统里可以将设备类型再‘翻译’过来 https://support.hockeyapp.net/kb/client-integration-ios-mac-os-x-tvos/ios-device-...阅读全文
posted @ 2016-11-28 17:57 meteoric_cry 阅读(47) 评论(0) 编辑
摘要: 国外的网站stateofjs.com根据超过九千位开发人员的问卷调查,发布了2016年JavaScript的年度概况报名。 注:本文翻译的部分可能存在不准确的情况,请以原文为准。 调查结果的报告目录结构如下: 简介 JavaScript风格 前端框架 状态管理 API层 全栈框架 ...阅读全文
posted @ 2016-10-20 16:03 meteoric_cry 阅读(220) 评论(0) 编辑
摘要: 这里主要以微信和QQ空间为作为研究对象,得到的结论如下。 QQ空间里的动态 iOS设备,以iPhone6为分界 iPhone6及以上分辨率的设备: 当宽且高同时 > 512px时,判断 宽/高的比例值:大于 2时,以高度为基准,缩小到512px,宽度等比缩、小于等于 2时,以宽度为基准,缩小到512px,高度等比缩 当宽、高其中一边小于512px,直接下原图; iPho...阅读全文
posted @ 2016-10-18 21:50 meteoric_cry 阅读(895) 评论(0) 编辑