linshuhe1的专栏

私信 关注
河乐不为
码龄8年

个人独立博客:https://linshuhe1.github.io/

  • 1,410,734
    被访问量
  • 190
    原创文章
  • 2,759
    作者排名
  • 1,642
    粉丝数量
  • 于 2013-02-06 加入CSDN
获得成就
  • 博客专家认证
  • 获得453次点赞
  • 内容获得551次评论
  • 获得1,053次收藏
荣誉勋章
兴趣领域
  • #前端
    #TypeScript#Node.js#WebPack#Vue.js#Flutter#前端框架
TA的专栏
  • 《从零开始搭建游戏服务器》
    16篇
  • Unity学习笔记
    29篇
  • skynet服务器框架解读
    12篇
  • OpenCV笔记
    9篇
  • Python 入门
    17篇
  • C#——Windows下序列化导表工具
    8篇
  • 基于Git的免费个人博客
    6篇
  • 随笔
    5篇
  • 技术笔记
    14篇
  • C# window界面开发笔记
    13篇
  • iOS开发
    5篇
  • Unity3D游戏开发
    48篇
  • C# .Net编程随记
    2篇
  • OpenGL ES2.0
    4篇
  • Unity AR增强现实/VR虚拟现实
    3篇
  • Github+Jelyll个人网页
    6篇
  • OpenCV
    10篇
  • Unity Shader
    8篇
  • 算法
    2篇
  • Python
    23篇
  • Hexo
    6篇
  • java服务器
    23篇
  • UE4
    3篇
  • Skynet框架
    12篇
  • Electron
    3篇
  • node
    3篇
  • Linux
    4篇
  • golang
    3篇
  • android
    2篇
  • lua
    2篇
  • 批处理
    1篇
  • 机器学习
    1篇
  • H5
    7篇
  • Flutter
    1篇
  • Vim
    1篇
  • MySQL
    1篇
  • JavaScript
    1篇
  • C++
    1篇
微信公众号
  • 分享技术资讯、码农思考和个人的技术笔记
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

Lua 的元表

简述元表指的是 Lua 中的 MetaTable,它提供了一种重定义任意一个 Lua 中对象或值默认行为的公开入口,让 Lua 也能像许多面向对象语言一样实现操作符或方法的重载。原理解析在 Lua 中,每种类型的数据都有其默认的操作,如:number 有加减操作,string 的拼接操作,function 的调用操作,这些都是该类型的默认操作,而我们可以通过修改其原来来实现对这些默认操作进行修改。元表(MetaTable)和元方法用来定义对 table 或 userdata ..
原创
164阅读
0评论
1点赞
发布博客于 7 月前

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_...
原创
593阅读
0评论
0点赞
发布博客于 10 月前

UGUI RectTransform 代码修改锚点和轴心

基本规律记住一个对应关系即可 Top => 1 Middle => 0.5 Bottom => 0 Left => 0 Center => 0.5 Right => 1 递增规律:从左到右(x),从下到上(y)无论是锚点还是轴心,当 x 或 y 的取值为: [0, 1] 时,表示点在对象区...
原创
1248阅读
0评论
0点赞
发布博客于 10 月前

UE4 接入 Protobuf(C++ 层)

引言在网络游戏开发中,我们通常使用 Google Protobuf 作为网络协议定制的格式,那么在 UE4 中如何集成 Protobuf 是我们接下来要做的事情。开源示例 code4game/libprotobuf_ue4 jashking/UE4Protobuf 看过很多篇文章,但这篇是写的最详细的 在UnrealEngine4中使用Google Protobu...
原创
2348阅读
0评论
2点赞
发布博客于 1 年前

UE4 移动端最小包

引言之前学习 UE4 的时候,常常使用提供的模板来创建项目,结果发现打包成 apk 后包体体积达到几百 M 甚至上 G。而在 Unity 最新的 2019 版本,一个空的 Unity 工程打出的 android 包,包体的大小约为 18 M。那么, UE4 打出的 android 最小包大约为多大呢?创建一个干净的工程1.设置内容包在创建项目时可以选择是否包含初学者内容包,正...
原创
1287阅读
0评论
0点赞
发布博客于 2 年前

Unity 接入 ILRuntime 热更方案

引言最近看了一下 ET 框架,本来只是研究一下网络模块,后来抽时间看一下热更框架。ET 的热更使用的不是像 tolua 这样基于 Lua 的方案,而是基于 ILRuntime 的纯 C# 热更实现方案。ILRuntime 的实现原理对 Unity 引擎有一定了解的开发者都应该知道: Unity 支持使用 C# 做脚本语言,是依赖 Mono 引擎运行 C# 编译后的 IL 中间语言...
原创
6371阅读
2评论
2点赞
发布博客于 2 年前

Unity Android Icons 配置

引言由于 Google 规定新上线的 App 的 TargetVersion 必须不低于28 ,而对于 API 级别高于 26(Android 8.0)又要求必须适配新的 Icon 方案,即自适应图标(Adaptive Icons)。因此,Unity 中的图标设置栏也发生了一些变化,在 Unity 的 Android 平台 PlayerSettings 中,Icon 设置由原来的一栏变为三栏...
原创
2256阅读
0评论
0点赞
发布博客于 2 年前

Hexo 和博客园添加 Live 2D 模型

引言今天在查资料时,在这篇博客 Unity FSM 有限状态机 看到了一个有趣的东西 ,屏幕右下角有一个二次元的模型,而且鼠标移到不同位置,模型会跟着动,点击还会播放音频。通过截图使用 google 的图片搜索,原来这个叫做 Live 2D ,最终找到了添加方式,可以在博客园添加,后来发现原来 hexo 也可以添加。Live2D简介Live2D 是一种应用于电子游戏的绘图渲染技术...
原创
2415阅读
2评论
5点赞
发布博客于 2 年前

Live2D_SDK_Unity_2.1.02_1_en.zip

从 Live 2D 官网下载的 2.1.02 的 Unity 版本 SDK 压缩包
zip
发布资源于 2 年前

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." 的字样...
原创
3954阅读
0评论
2点赞
发布博客于 2 年前

Windows 下的 OpenGL 开发环境配置(GLFW+GLAD)

引言最近在读 Unity 4.3 的源码,研究到 Unity 集成的物理引擎 PhysX 和 Box2D 部分,接下来还要研究渲染引擎方面的东西,想着直接倒腾一下,自己集成一遍写个小 demo 。当然这都依赖于 OpenGL 这个东西来渲染(因为物理引擎本身都是一些计算,没有可视化的东西,需要借助渲染层将其可视化),这里先搭一个可以在 Windows 下编写 OpenGL 程序的架子,然后再往...
原创
6196阅读
0评论
6点赞
发布博客于 2 年前

Windows下的 C++ 编译工具(MinGW-w64 + CMake)

引言假如想在 Windows 下进行 C++ 的开发,可以直接使用 Visual Studio 和相应的 C++ 插件来实现,但编译和构建过程是不可见的。为了更彻底地了解 C++ 工程的编译和构建,可以借助另外两个工具在 Windows 环境下实现。MinGW是 Windows 系统下的一个编译环境,包含了 C++ 代码编译所需的三方库、头文件等,用于完成 C++ 源码的编译和链...
原创
2748阅读
0评论
3点赞
发布博客于 2 年前

JavaScript 中 == 和 === 的区别

1. 引言这是在 JavaScript 中用来进行数值和对象对比时常用的操作符,从定义上来看: == :抽象相等,比较时会先进性类型转换,然后再比较值 === :严格相等,会比较两个值的类型和值 测试例子:console.log('10'==10); // trueconsole.log('10'===10); // false2. ECMA 规范上...
原创
424阅读
0评论
0点赞
发布博客于 2 年前

Git SSH 方式无法 push 踩坑

引言我们知道使用 git 管理的项目可以通过两种格式的 url 来获取,分别是 HTTP 和 SSH 使用 HTTP 方式操作 git 工程需要输入对应的账号和密码,当然为了方便也可以使用诸如 TortoiseGit 这样的图形化工具来管理 Git 工程,而且其中自带记住账号和密码的功能,因此只需输入一次账号密码即可。 使用 SSH 的方式拉取 Git 项目则需要提前配置好 S...
原创
3118阅读
0评论
0点赞
发布博客于 2 年前

MySQL 字符集

引言刚刚入门数据库开发的开发者估计没少被字符串“乱码”的问题所困扰,导致乱码的原因有很多,而最常见的原因可能是对字符集和排序规则没有概念,因此在创建数据库时便已早早埋下了地雷。 字符集和排序规则同理,假如使用 Navicat for MySQL 这样的可视化管理工具来管理数据库,在创建数据库时会弹出如下弹窗,要求我们输入三项基础信息:数据库名、字符集和排序规则,其中字符集和排序规则...
原创
190阅读
0评论
0点赞
发布博客于 2 年前

Windows 下的 Vim 编程

引言之前习惯了在 Linux 下使用 Vim 进行编程,最大的好处就是能摆脱鼠标进行编程,而在 windows 下 cmd 并没有办法直接安装 Vim ,Windows 下可以安装 gVim ,但要直接在 cmd 窗口中直接像 Linux 下输入 vim 进入编程,还是需要进行一些配置。安装 gVim直接在 vim 官网 下载最新的 Windows 版本的安装包 gvim81.e...
原创
2539阅读
0评论
1点赞
发布博客于 2 年前

Maven 上手指南

引言最近开始学习 Spring Boot ,由于选用 Maven 作为构建工具,这也是 Java 后端开发常用的构建工具,当然也可以选用 Gradle ,Gradle 之前在 Android 项目中使用居多,但近期也渐渐有取代 Maven 的趋势,后续可能会专门再写一篇关于 Gradle 的使用。这里先大致了解 Maven 管理项目的一些基础知识,这里主要参考官方的文档。 Maven简...
原创
313阅读
0评论
0点赞
发布博客于 2 年前

Flutter 1.0 正式版发布

在昨晚(2018年12月4日)的 Flutter Live 2018 上,Google 宣布 Flutter 1.0 正式发布,这也是 Flutter 在第一个 Beta 测试版发布9个多月后发布的第一个正式版本。做移动端应用的人假如还没听过这个库,大概需要注意一下了,毕竟这可能会影响到移动端应用开发下一个方向。 关于 FlutterFlutter 是谷歌的移动端 UI 框架,可...
原创
895阅读
2评论
1点赞
发布博客于 3 年前

IT 圈所谓的凛冬将至

今天是 2018 年最后一个月的第一天,深圳的冬日一如既往地把人晒得有些烦躁和焦虑。从去年年底跳槽至今一年有余,中间倒是经历了不少事。最近,在浏览各种技术群时,隐隐感觉到 IT 圈子,特别是游戏圈的寒冬将至的气息,坊间也不少传言各大巨头企业的裁员浪潮。身在游戏圈中的我,在这一年里,其实也或多或少地亲身体会到了这个行业的变化。去年九月份,也正是我开始萌发离职想法的时候,原本公司对于个人成...
原创
783阅读
0评论
1点赞
发布博客于 3 年前

Windows 进程管理

引言在 Windows 下,有时候启动软件需要使用指定的端口,但此时端口可能被其他应用所占用,所以需要找到占用端口的应用并将该端口释放出来。查询几个常用的查询命令行窗口指令: netstat -ano 查看所有进程 netstat -ano|findstr [指定端口号] 查询占用指定端口的任务进程 id ,例如: C:\Users\Administ...
原创
208阅读
0评论
0点赞
发布博客于 3 年前

Egret 性能优化

引言之前完成了项目的逻辑内容开发之后,开始着手解决性能方面的问题,比较严重的就是发热和耗电。而且出现玩的时间越长越卡的问题,想必是有内存泄露了。接下来就是优化的主要思路: 首先,降低常驻场景的 drawcall ,即游戏主场景及主界面 UI ; 其次,排查内存泄露; 最后,假如资源回收机制。  减低 Drawcall设置 index.html 中 egre...
原创
5064阅读
0评论
0点赞
发布博客于 3 年前

Egret QQ玩一玩适配【踩坑日记】

需要申明一点,这是我接过最坑的渠道了,各种神奇的问题,首先是接口比较奇怪而且新旧版本搞得很混乱,其次是平台底层实现性能差而且很多限制。此外,这里需要理清楚一个概念:QQ 玩一玩 和 QQ 玩吧 并非同一个东西,QQ 玩一玩也叫 QQ 轻游戏 或 厘米游戏 ,是基于 bricks 引擎实现的。 技术限制 玩一玩平台不支持基于DOM Document对象的HTML元素处理 玩一...
原创
2120阅读
2评论
0点赞
发布博客于 3 年前

python Png图片压缩工具

引言最近在做 H5 小游戏的开发,与 App 不同,由于 H5 所有的资源都是通过 CDN 获取的,考虑到网络资源加载速度的问题,优化资源显得格外重要。因此,图片资源的压缩也是必不可少的。 起源起初,我们在 windows 下是通过一个叫做 PNGoo 的 GUI 工具来实现图片资源批量压缩的。但考虑压缩资源还需要启动一个应用,将图片资源拖进去再开始压缩,显然不够智能,希望通过 p...
原创
3372阅读
1评论
4点赞
发布博客于 3 年前

H5 微信小游戏群 openGID 解密

这里使用的 Wechat Lib 版本是 2.0.6 ,高于此版本则不再能获得分享成功与否的回调。后来直接把基础库升级到 2.2.2 ,发现只是开发者工具拿不到回调而已,手机上还是还能拿到回调。在使用微信小游戏的分享功能时,假如在 wx.showShareMenu 中设置了 withShareTicket: true :wx.showShareMenu({ withShare...
原创
1385阅读
2评论
0点赞
发布博客于 3 年前

前端 DFA 敏感词过滤

前言最近在做游戏的聊天功能,需要在客户端接入敏感词过滤,较低成本的实现方法有字典匹配和正则表达式匹配,但效率上较低。大致 google 了一遍,发现 DFA 算法是实现敏感词过滤效率较高的选择,下面是具体实现过程。 DFA 算法须知DFA 算法,即 Deterministic Finite Automaton ,中文翻译是有穷自动机。它是通过 event 和当前 state 得到下...
原创
1494阅读
0评论
0点赞
发布博客于 3 年前

H5 微信小游戏 —— 音频管理器

前言原本使用的是 egret 的 egret.SoundChannel 和 egret.Sound 来管理音频,但不知为何在重复将游戏切换到前后台后,很容易出现背景音播放不全、播放重复和无法播放的问题,懒得再去排查原因干脆使用小游戏提供的音频播放 API 重写了一个音频管理工具。API 相关参考官方文档 教程/音频播放 ,大致了解音频播放是利用微信接口 wx.createInnerAudioCon...
原创
2199阅读
1评论
0点赞
发布博客于 3 年前

electron-vue 实践 2 —— excel 合并

前言之前使用 vue-cli 和 electron-vue 创建了工程,接下来就开始实现具体的逻辑,我们的目标很简单,就是将一张或多张表中的所有 sheet 页内容都垂直或水平合并在一个 sheet 中,并生成一张新的表。 UI 布局文件新加一个 .vue 后缀的文件,vue 的 UI 文件格式大致如下,不了解的可以查看 官方入门文档 :<template> ...
原创
1242阅读
3评论
0点赞
发布博客于 3 年前

electron-vue 实践 1 —— 安装和创建工程

去年倒腾过一段时间的 electron ,但最终没做出什么东西来,最新刚好要帮一个做审计工作的朋友做一个桌面软件,所以打算正儿八经地研究一下。我们都知道 electron 相当于一个浏览器的壳子,里面的内容开发其实与 web 网页开发并无明显区别,只是通过此框架提供了可以直接操作系统的 native API ,大部分接口是普通浏览器做不到的。electron 安装有资源问题,在国内使用 npm 直...
原创
5870阅读
3评论
0点赞
发布博客于 3 年前

Egret 从创建到发布

创建项目安装完 egret 之后,使用 egret 指令创建工程:$ egret create e_demo正在使用白鹭编译器 5.1.9 版本扫描项目列表正在创建新项目文件夹...正在编译项目...项目创建成功,您可以执行 egret run 来运行刚刚创建的应用项目共计编译耗时:3.132秒运行项目运行创建出来的工程:$ cd e_demo$ egret run您正在使用白鹭编...
原创
4512阅读
1评论
1点赞
发布博客于 3 年前

TensorFlow 学习笔记1 —— 安装

今天大概看一下如何搭建 TensorFlow 的开发环境,当前的工作平台是 Mac OS X 10.13.2 :资料主要来源于 TensorFlow 官网 。安装方式选择官方提供了一下几种安装方式:Virtualenv (虚拟环境) "native" pip(原生环境使用 pip 工具安装)Docker (使用 docker 容器)installing from sources, which is...
原创
1153阅读
2评论
0点赞
发布博客于 3 年前

Unity 使用 Spine 动画

在 Unity 中,常常使用 Spine 来制作一些动画,引擎本身并不能直接播放 Spine 动画,需要额外导入一个 RunTime 插件库才能支持。运行库导入关于运行库的导入,有两种方式:1. 从开源库导入下载 Spine 的 runtime 库:EsotericSoftware/spine-runtimes ,只需要将其中的 spine-csharp 和 spine-un...
原创
39302阅读
2评论
12点赞
发布博客于 3 年前

BAT 字符串大小写转换

前言今天为了解决一个问题,在 Unity 中我们经常需要通过 IO 读取文件,就像我们读取表格的二进制文件例如:DirtyConf.bytes , Windows 中默认是对大小写不敏感的,所以读取的时候指定的读取名称可以是 DirtyConf 字母的任意大小写组合,例如:dirtyconf 、 DIRTYCONF 、DIrtyconf 等。然而对于手机移动端,通过 IO 是大小写敏感的,必须与原...
原创
4463阅读
0评论
0点赞
发布博客于 3 年前

Skynet服务器框架(十二) (debug_console)控制台管理

在 skynet 框架中提供了一个控制台服务 debug_console ,用于帮助我们查看 skynet 的一些运行时数据,而且在需要热更代码的时候也需要借助控制台来实现。接下来,我们先看看如何使用控制台,然后在大致看一遍底层的源码实现。工具准备由于启动控制台服务后,需要借助 nc 或 telnet 来远程连接控制台,所需需要确保机器上已安装了此类工具,这里我使用的是 nc 6.40 ,可以先查...
原创
3833阅读
1评论
1点赞
发布博客于 3 年前

Skynet服务器框架(十一) 看懂 skynet 的 Makefile

Makefile 这个东西最早是在大学学习 Linux 下编写 C 程序的时候接触到的,但是,基本上都是用完就还给老师了。最近也是因为使用 skynet 框架开发服务器,才想起重新拾起这个技能。今天就以 skynet 里面的 makefile 为例,大概解读一遍。什么是 Makefile1. 什么是 make 在了解 Makefile 之前,需要先了解 make ,代码生成可执行文件的过程,会经历...
原创
2891阅读
1评论
2点赞
发布博客于 3 年前

Linux 和 Windows 下配置 SSH(复用已有的公钥)

假如项目中添加了需要使用 ssh 方式连接服务器的 git 子模块,则需要配置 ssh 公钥,这里我是直接复用之前用过的公钥,这样我们可以在多台设备上使用同一份公钥。复用旧公钥在 ~/ 目录下新建 .ssh 目录,然后复制已有的 id_rsa 和 id_rsa.pub 到此目录下,然后修改 id_rsa 的权限,不然会报错 "Permissions 0644 for '/root/.s...
原创
2492阅读
1评论
1点赞
发布博客于 3 年前

Unity 带 Alpha 图片手机包失真

iOS 图集压缩失真在 Android 平台下 UI 图片一切正常,但打包到 iOS 上之后,带透明度的区域会出现明显的失真,排查之后才发现,对于设置了 Package Tag 参数,即打包到图集中的图片,使用 Unity 默认的压缩设置的话,会使用 PVRTC 4 bits 进行压缩,此时:不打图集的散图,带透明度,不会有明显失真;打图集的图片,带透明度,透明区域失真会比较明显:
原创
1028阅读
0评论
0点赞
发布博客于 3 年前

Docker 入门须知

前言:之前大概了解了一下 Docker 的一些皮毛,知道 Docker 是基于 Go 语言开发的容器技术,可以在同一台服务器上构建多个互不干扰的干净的隔离环境。Docker 的优点:相比于传统的虚拟技术,容器可以以更低的成本为应用提供一个干净的隔离环境,原因大致如下: 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用
原创
408阅读
1评论
0点赞
发布博客于 3 年前

H5 游戏主流引擎和编程语言

引言:最近微信新版本,主推小程序中的小游戏模块,一个 “跳一跳” 的 H5 游戏瞬间爆火,虽然很多传言说 H5 真正盈利的时机未到,因为它的突出作品大多是简单的小游戏,好玩但不吸引付费。然而,H5 游戏巨大流量和强大的日活跃还是可以转化为利润的。
原创
23992阅读
0评论
8点赞
发布博客于 3 年前

Unity 移动端 The file 'none' is corrupted. 报错解决

Editor 上不报错,打成 ab 包在移动端报错1. 应用背景:我出现此问题的背景环境是:我使用一个自定义的列表组件来管理列表 item 的循环复用;然后 item 做成一个预制体,跟列表界面预制体放在同一目录下;列表组件中通过一个 public GameObject itemPref; 的属性索引 item 预制体,实例化的时候使用 Instantiate(itemPref) 的方式实现
原创
2292阅读
0评论
0点赞
发布博客于 4 年前

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 ,然后
原创
5704阅读
1评论
0点赞
发布博客于 4 年前

Python 文件数据批量录入数据库(MongoDB)

引言:我写博客的习惯基本上都是: 使用 Typora 或者 haroopad 这样支持 Markdown 语法的实时可视化编辑器先编写好,然后再发布到 CSDN 或者我自己的 hexo 博客地址上。不在在线编辑器上编写的原因是可以博客本地备份而且内容不容易丢失。所以,此时假设我们写完了一篇博客,即有一个 .md 的文件,要如何将其自动录入到数据库中?多个 .md 文件如何一次录入?
原创
3131阅读
0评论
3点赞
发布博客于 4 年前

《Unity 3D游戏客户端基础框架》tolua 框架接入

引言:如何将 tolua 框架接入 Unity 项目中,这里假设我们已经有一个项目,并且已经实现了一些基础架构或者项目已经是完整的,此时,如何将 tolua 这个热更新框架接入进来而不影响原项目的结构?tolua 引入:1.资源下载:既然要将 tolua 引入项目,第一步肯定是先到 tolua 的 github 资源库 中下载 tolua 的资源包:tolua-master.zip2.资源引入:将
原创
18144阅读
4评论
6点赞
发布博客于 4 年前

Lua 5.3 源码解读(一) VS 2015 编译源码

引言:用 lua 来编写功能的时间很长,但对于 lua 的底层原理其实知之甚少,只知道它是开源的,用 C 语言写的。今天趁着手头任务不紧,想着还是花点时间读读源码吧,总得调点恶心自己的事情干干知道自己的极限在哪里
原创
8587阅读
8评论
0点赞
发布博客于 4 年前

Python 编写自动化工具

引言:在开发过程中,我们经常需要编写一些自动化的工具,例如:Windows 下的 BATCH (批处理)Linux 下的 Shell 等但是假如我们要做跨平台的开发,根据每个平台去开发一套功能相同的自动化脚本显然不是最好的选择,选择跨平台通用的脚本是更好的选择,Python 就是常用来编写自动化工具的跨平台脚本语言。Python 环境安装:1.资源下载:直接到 Python 官网 下载安装包
原创
37765阅读
13评论
13点赞
发布博客于 4 年前

ToLua 协程中调用 WWW

引言:在游戏中假如需要下载网络资源,一般都是借助 Unity.WWW 工具类来完成,接下来我们分别说一下 C# 和 tolua 下实现的过程。C# 下的实现在 C# 中的做法通常如下:启动一个协程来执行下载任务,创建一个 WWW 对象;在一个死循环中查询下载任务是否完成;下载完成则跳出循环体,从上面创建的 WWW 对象的 bytes 属性中取出下载到的数据。
原创
1123阅读
0评论
0点赞
发布博客于 4 年前

protobuf lua 版注意点

引言:在 Unity 中接入 tolua 热更框架之后,假如我们使用 protobuf 来定制协议,那么也需要引入 lua 的版本,这里我记录一下我踩过的一些坑点。repeated 类型:假设我们定义了一个请求包和回包的结构如下://玩家信息数据结构message PlayerInfo{ required string Name = 1; required int32 Id = 2
原创
3757阅读
2评论
0点赞
发布博客于 4 年前

Android Studio 安装和 Android 项目创建

简述:在 Android Studio 推出之前,Eclipse 一直是 Android 开发者不可或缺的集成开发工具,但由于对非 Android 类开发的支持使得 Eclipse 整体架构日渐庞大,在开发过程中容易出现启动缓慢,操作卡顿的不良体验。2013年5月16日,在I/O大会上,谷歌推出新的Android开发环境——Android Studio,近年来逐渐取代 Eclipse 在 Andro
原创
695阅读
0评论
0点赞
发布博客于 4 年前

CentOS 下安装和使用 Docker

引言:在服务器开发过程中,环境部署无疑是及其繁琐的事情,特别是当项目数量和规模达到一定级别之后,在一台新的机器上部署项目环境无疑是极其漫长而痛苦的,那么什么办法能够实现我们的目标:在开发环境的一次配置编译,就可以批量部署到生产环境。 这就需要用到我们接下来要说到的这个引擎了 —— Docker简介:Docker 是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者
原创
707阅读
0评论
1点赞
发布博客于 4 年前

Skynet服务器框架(十) CentOS 防火墙设置

引言:今天修改了 skynet 服务器的 IP 地址(即 config 文件中的 address 和 master 两项参数,IP 与当前及其的保持一致,端口号为 2017),然后使用一个简单的客户端去连接服务器,结果服务器完全没有收到 Socket 连接请求,客户端也出现了连接超时,猜想应该是 CentOS 中防火墙导致的,在真正排查解决此问题之前,我们先来连接一下 CentOS 7.0 的防火墙
原创
2008阅读
0评论
0点赞
发布博客于 4 年前

《Unity 3D游戏客户端基础框架》多线程异步 Socket 框架构建

引言:之前写过一个 demo 案例大致讲解了 Socket 通信的过程,并和自建的服务器完成连接和简单的数据通信,详细的内容可以查看 Unity3D —— Socket通信(C#)。但是在实际项目应用的过程中,这个 demo 的实现方式显得异常简陋,而且对应多个业务同时发起 Socket 通信请求的处理能力也是有限,总不能每个请求都创建一个线程去监听返回结果,所以有必要进一步优化一番,例如加入线程池
原创
9533阅读
2评论
3点赞
发布博客于 4 年前

《Unity 3D游戏客户端基础框架》消息系统

功能分析:首先,我们必须先明确一个消息系统的核心功能:一个通用的事件监听器管理各个业务监听的事件类型(注册和解绑事件监听器)全局广播事件广播事件所传参数数量和数据类型都是可变的(数量可以是 0~3,数据类型是泛型)设计思路:清楚了上述的几个要求之后,我们不难自行定制一个业务层的消息系统,即在消息系统初始化时将每个模块绑定的消息列表,根据消息类型分类(用一个 string 类型的数据类标识)
原创
10337阅读
12评论
6点赞
发布博客于 4 年前

《Unity 3D游戏客户端基础框架》系统设计

引言最近到看一个 《贪吃蛇大战开发实例》,其中 贪吃蛇大作战游戏开发实战(3):系统构架设计 提供的系统架构的设计思路我觉得还是值得学习一下的,接下来的内容是我看完视频后的一点笔记。
原创
3853阅读
1评论
0点赞
发布博客于 4 年前

LitJson 不支持 float 类型数据

在 Unity 中使用 Best HTTP 插件的 LitJson 发送一些 Json格式数据给服务器,出现了报错: “LitJson.JsonException: Max allowed object depth reached while trying to export from type System.Single “显然,是传入了 Json 不支持的数据类型,这里我传入了 fl
原创
2799阅读
0评论
0点赞
发布博客于 4 年前

Skynet服务器框架(九) snax框架

什么是 snax 由于 skynet 的 API 还是比较偏底层,为简化服务的编写提供一套简单的 API ,便有了这套 snax 框架,解决的问题: “编写一个 skynet 内部服务,处理发送给它的消息。snax 并不会取代 skynet 原有的 api ,只是方便实现这类简单需求而已。” —— 云风换句话说,snax 就是对 skynet API 的部分封装
原创
2056阅读
2评论
0点赞
发布博客于 4 年前

CentOS 7常用工具安装

git在Linux下开发项目,少不了要使用git工具,安装方法十分简单,通过一条 yum 指令既可完成安装:yum install git安装完成后检测版本:# git --versiongit version 1.8.3.1autoconf这是一个在 Bourne shell 下制作供编译、安装和打包软件的配置脚本的工具# yum install autoconf检查版本:# autoconf
原创
5739阅读
0评论
0点赞
发布博客于 4 年前

《Unity 3D游戏客户端基础框架》概述

框架概述:做了那么久的业务开发,也做了一年多的核心战斗开发,最近想着自己倒腾一套游戏框架,当然暂不涉及核心玩法类型和战斗框架,核心战斗的设计要根据具体的游戏类型而定制,这里只是一些通用的基础系统的框架搭建,其中包括:UI框架(NGUI + MVC)消息管理(Advanced CSharp Messenger)网络层框架(Socket + Protobuf )表格数据(Protobuf)资源
原创
24581阅读
11评论
20点赞
发布博客于 4 年前

Skynet服务器框架(八) 任务和消息调度机制

引言:在我看来,消息和任务调度应该是skynet的核心,整个skynet框架的核心其实就是一个消息管理系统。在skynet中可以把每个功能都当做一个服务,整个skynet工程在执行过程中会创建很多个服务,每个服务相当于一个 ``Actor`` ,是互不依赖并行执行的,但同时也存在服务之间的通信和彼此的任务调用,接下来我们就来看一下skynet中服务之间进行通信的机制。
原创
5538阅读
0评论
4点赞
发布博客于 4 年前

Android调试工具adb的高逼格使用方式

引言:通常在使用Eclipse进行Android应用开发的时候,我们可以使用Eclipse自带的工具来完成调试和查看输出日志的操作,但是假如在当前电脑并没有配置适用于Android开发的Eclipse版本的情况下,想要查看Android设备运行应用或者游戏时的实时输出日志,可以直接借助Android调试工具 adb 来完成。
原创
19924阅读
0评论
4点赞
发布博客于 4 年前

Eclipse配置开发Go的插件——Goclipse

引言:上篇 《Golang快速入门(不用急,但要快)》 我们大致过了一遍Go语言的基本语法,但在开始正式的项目创建前,有必要选择一个比较顺手的 IDE (编辑器),由于之前一直都是做Java相关的开发,自然而然地想着能否用一样的编辑器来进行开发,毕竟 Eclipse 还是挺强大的,但是它并不具备跨平台特性,目前只支持Windows平台。不过,对于日常开发已经够用了,最后发布的时候再将项目部署到Lin
原创
20076阅读
9评论
2点赞
发布博客于 4 年前

Golang快速入门

Go语言简介:Golang 简称 Go,是一个开源的编程语言,Go是从2007年末由 Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。1.Go语言用途:Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似
原创
10119阅读
3评论
4点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》 java与C#的protobuf序列化不兼容

引言:今天在联调Java服务器与Unity(C#编写)的客户端的网络协议数据,由于网络通信的核心数据是通过序列化之后的字节数组经过加密和压缩的结果,但是发现两者使用Protobuf协议序列化工具出来的结果是不同的(Java使用 Protostuff 工具,C#使用 Protobuf-net.dll 自带的 ProtoBuf 工具),现在Java序列化之后的字节数组长度要比C#序列化结果长得多。方案选
原创
2092阅读
4评论
0点赞
发布博客于 4 年前

Hexo个人免费博客(五) 使用自己的域名

使用了一段时间在github上搭建的hexo个人博客空间,使用markdown写博客既方便,展示出来的样式也还算满意,唯一的缺点就是域名 github.io 总觉得有点累赘,另外就是访问速度比较慢,今天就试着来解决其中的一个问题:把访问域名替换成自己的域名。域名修改:1.申请个人域名:首先得先拥有一个自己的域名,我用的是阿里云里买的一个以 .tech 为后缀的域名 linshuhe.tech,一年5
原创
14629阅读
12评论
4点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》 序列化工具(最优版Protostuff)

前言:之前使用protobuf工具来解析表格数据和定制网络协议,但是为了网络安全和压缩数据大小,有时候需要对数据进行序列化,这就需要设计一个序列化工具类来完成序列化和反序列化的操作。
原创
5973阅读
1评论
0点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》 网络数据压缩——Zlib算法

前言:关于压缩算法,其实有不少,例如:ZIP、RAR和bzip2等,这里我们举例使用的Zlib相较于前者都要简单一些,与ZIP、RAR等归档算法不同,它与bzip2更为接近。那么,下面我们就来尝试一下Zlip在C#和Java中的实现和数据交互:C#中加密Java中解密;又或者是Java中加密C#中解密,这也体现了Zlib的跨平台特性。C#方面:通常是指客户端,例如Unity中,可以使用此压缩方法来压
原创
2855阅读
0评论
0点赞
发布博客于 4 年前

CentOS 7.0最小安装及配置

引言:之前一直用Ubuntu来进行服务器的开发工作,但是听朋友推荐使用CentOS才是最后发布到生产环境的首选,因为它提供了一套工业化的标准,而且在资源开销上也更为突出一点(有种说法是说大牛就是完全脱离对UI界面的依赖,纯命令行来开发服务器),这也仅仅是部分人的观点,不过多评价,今天就安装一个来玩一下。
原创
21324阅读
2评论
3点赞
发布博客于 4 年前

Skynet服务器框架(七) Lua中调用自定义C库

引言:在skynet中,我们通常使用lua来写业务层的逻辑,并且每个功能模块基本上就是一个运行在沙盒中的lua服务。但是,当需要我们需要开发拓展的库或者进行高性能要求的模块开发时,还是需要考虑在C语言层面来开发一个动态库(.so),并提供可以在lua中调用的接口,然后再lua中调用此C库。
原创
4248阅读
1评论
1点赞
发布博客于 4 年前

Skynet服务器框架(六) Socket服务源码剖析和应用

引言:如何在skynet框架中使用socket+protobuf。上篇 Skynet服务器框架(五) 使用pbc(protobuf) 我们已经大致了解了如何在Skynet中通过pcb来使用Protobuf,接下来我们开始了解skynet中有关Socket的部分。API几个常用的skynet中的Socket接口:* 输出错误信息: skynet.er
原创
6861阅读
0评论
1点赞
发布博客于 4 年前

Markdown常识

图片格式设置:图片大小设置:width 是图片的宽度height 是图片的高度图片居中显示:
![pic_desc](pic_url)
align 设置了图片的对齐方式,可以选择:left、center和right;pic_url 是图片的链接地址(必填),pic_u
原创
482阅读
0评论
0点赞
发布博客于 4 年前

Unity3D —— 手机设备震动接口

引言:在做应用或游戏开发的时候,有时候我们会需要让设备有明显的响应输出以增强交互效果,常见的有:音频输出、屏幕闪烁和手机震动,这里我们就来实现以下如何在Unity中调用安卓和苹果手机的震动接口。实现步骤:调用接口:Unity中提供了两个接口,分别对应于android和iPhone设备:安卓设备接口:Handheld.Vibrate()苹果设备接口:iPhoneUtils.Vibrate()然而
原创
15442阅读
0评论
1点赞
发布博客于 4 年前

《Node.js简记》包管理器npm的安装、加速和常用指令

前言:上篇 《Node.js简记》 安装Node.js并实现Helloworld 我们已经完成了node开发环境的安装配置,接下来我们先来了解一下node的一个重要的工具——包管理器npm。npm安装和常用指令:1.npm简介:npm 是node的包管理工具,常用于一下场景:用户可从npm服务器获取别人编写的第三方包或命令程序到本地使用;用户可上传自己编写的包或者命令程序到npm服务器给别人下载
原创
1208阅读
0评论
0点赞
发布博客于 4 年前

《Node.js简记》 安装Node.js并实现Helloworld

前言:之前利用Github的Pages功能开发我的个人博客的时候,使用了Hexo框架是基于Node.js开发的静态网页框架,然后最近在开发跨平台桌面应用的时候,使用了Electron框架的核心,也是基于Node.js(接下来都简称为:Node)的,想来有必要梳理一番。Node.js简介:什么是Node:Node.js是运行在服务端的JavaScript,其核心是与Google Chrome一样的V8
原创
1159阅读
0评论
0点赞
发布博客于 4 年前

Hexo个人免费博客(四) 部署到Coding.net

引言: 之前的博客我们已经完成了个人Hexo博客的搭建和配置,并且部署到Github上,具体过程可以参考我之前的博客《Hexo个人免费博客(一) 从零到发布Github》,但是国内访问速度有点慢,为了提高访问速度,我尝试把博客同时也部署到Coding.net上。部署步骤注册Coding.net账号: 打开Coding.net官网,注册一个个人账号新建项目: 注意项目名与注册用的账
原创
4141阅读
0评论
0点赞
发布博客于 4 年前

《Electron 开发》 环境配置和Helloworld

前言:最近因为要帮别人做一个Mac和Windows平台下都使用的桌面应用,功能很简单,就是一个文本编辑器,所以大致了解了一下跨平台桌面应用开发的框架,知乎上推荐多半是 Electron 和 NW.js,其中 Electron 比较成熟的产品有:Github开发的Atom代码编辑器(已经开源)、微软的Visual Studio Code、facebook的 nuclide 和 slack等。什么是 E
原创
13630阅读
0评论
2点赞
发布博客于 4 年前

Skynet服务器框架(五) 使用pbc(protobuf)

引言:假如我们要建立的skynet服务器与客户端的连接方式为长连接,且选择了Google的Protobuf来定制我们的网络协议,那么,接下来我们要解决的问题就是:如何在skynet框架中使用socket+protobuf。API几个常用的skynet接口:* 输出错误信息: skynet.error(...)* 获取本地服务句柄方式: sky...
原创
13008阅读
4评论
6点赞
发布博客于 4 年前

Skynet服务器框架(四) Lua服务创建和启动剖析

前言:之前从Skynet启动过程,解读了skynet的启动部分C语言编写的底层源码,最后成功启动了引导的lua服务bootstrap.lua,接下来我们要尝试自定义一个lua服务,并让它启动起来。bootstrap实现功能:bootstrap.lua源码:local skynet = require "skynet"local harbor = require "skynet.harbor"re
原创
9021阅读
0评论
2点赞
发布博客于 4 年前

Skynet服务器框架(三) Mac OS X环境安装

Mac os x下安装sky net:安装:相比于Linux系统,Mac系统下安装skynet显然要简单得多,打开Mac的终端,大致步骤如下:先检查本地是否已安装了git工具,假如已经安装:bogon:~ linshuhe$ git --versiongit version 2.8.1通过git将skynet源码克隆到本地:bogon:project linshuhe$ git clone h
原创
4859阅读
0评论
2点赞
发布博客于 4 年前

Skynet服务器框架(二) C源码剖析启动流程

前言:最近因为要帮别人做一个Mac和Windows平台下都使用的桌面应用,功能很简单,就是一个文本编辑器,所以大致了解了一下跨平台桌面应用开发的框架,知乎上推荐多半是 Electron 和 NW.js,其中 Electron 比较成熟的产品有:Github开发的Atom代码编辑器(已经开源)、微软的Visual Studio Code、facebook的 nuclide 和 slack等。什么是 E
原创
12314阅读
0评论
9点赞
发布博客于 4 年前

Skynet服务器框架(一) Linux下的安装和启动

简介:Skynet主要工作是管理注册服务,并开启多线程协调服务之间的调用和通讯。框架核心:根据作者的描述,Skynet的核心功能就是解决一个问题: 把一个符合规范的C模块,从动态库(so文件)中启动起来,绑定一个永不重复(即使模块退出)的数字id做为其 handle 。模块被称为服务(Service),服务间可以自由发送消息。每个模块可以向 Skynet 框架注册一个 callback 函数,用
原创
16094阅读
2评论
5点赞
发布博客于 4 年前

samba+Xshell连接Linux共享目录

引言:之前我们在Windows下建立共享目录,然后再Linux中去访问的步骤,那么反过来,假如此时Linux服务器处于远端(例如云服务器),那就需要在Linux系统下简历共享目录,然后再Windows下使用工具去访问了,通常使用Xshell来访问,接下来我们就来试一下这个操作过程。linux操作:需要安装一些必要的工具:ssh协议和sambalinsh@ubuntu:~$ sudo apt-get
原创
3522阅读
1评论
2点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》Java与Lua互相调用

前言: Lua是一种小巧的脚本语言,如今常用于游戏开发,特别是客户端开发,基本上都是基于Lua来实现热更新,在Unity开发中更有uLua(最新版改名为toLua)这样成熟的热更框架。这里我设想用Lua+Java来实现服务器的热更,不成熟的想法,这里想尝试一下Lua和Java如何互相调用。插件选择:假如引入第三方库,可以找到比较常用的两个选择:LuaJava和LuaJ,简单做一下对比:
原创
11441阅读
0评论
3点赞
发布博客于 4 年前

Java中常见的类型转换

Java中常见的类型转换:1.Java enum枚举与int类型互转:假设枚举类型声明如下:/*** 状态枚举*/enum StateType{ Idle, //站立状态 Fight, //进攻状态 Dead, //死亡状态}enum->int: ordinal()方法:返回枚举值在枚举中的顺序int state = StateType.Idle.ord
原创
726阅读
0评论
2点赞
发布博客于 4 年前

Unity3D —— 报错解决方案和常用功能集

1.在Update中对Dictionary迭代器进行修改: var _key = index2factionDic.Keys.GetEnumerator(); string item; while (_key.MoveNext()) {
原创
4002阅读
1评论
0点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》 Protobuf读取Excel表格数据

前言 在之前的博客中,我们已经尝试过了在C#环境下,使用Protobuf来序列化Excel表格,然后再代码中反序列化出表格数据【Unity3D —— protobuf 导excel表格数据】,如今我们在服务器假如要共用一套配置表格,当需要一个类似的导表和读表过程,接下来我就在原来博客的基础上稍加修改,完成这个需求。准备工作:为了方便起见,我直接复制了之前的一些工具,假如不了解的也可以直接在此
原创
3670阅读
1评论
1点赞
发布博客于 4 年前

Protobuf导Excel表C#版

使用Potobuf将表格数据进行序列化,每个表格都有一个.data数据文件和一个.cs反序列化类
rar
发布资源于 4 年前

《从零开始搭建游戏服务器》项目发布到Linux环境

前言: 之前我们提及了如何使用Maven来创建、管理和打包项目,也简单过了一遍Linux中搭建Java开发环境的步骤,现在我们就开始将我们之前开发的项目demo发布到Linux环境下,并让它正常运行起来。发布思路:使用Maven将项目打包为.jar将项目的.jar和项目所有依赖的jar包都复制到Linux下创建项目启动脚本来启动项目准备工作:查询Linux系统机器的Ip地址:方
原创
11801阅读
5评论
1点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》Linux开发环境配置

前言: 之前的开发工作一直是在Windows开发环境下进行的,但是正真发布和外网运营势必要发布到Linux环境下,而且有很多服务端的工具对于Windows系统的兼容性并不是非常完善,就像常用的Docker容器就只支持Linux系统,所以提前了解和部署Linux开发环境势在必行。一、准备工作:首先你需要一台安装Linux系统的机器,或者直接在Windows系统中安装虚拟机,这里我使用的就是虚拟
原创
20479阅读
0评论
6点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》优化——Jedis连接池

前言 在Java的开发中,遇到一些耗时的操作,我们通常会启动一个线程,让新建的线程来完成这个耗时操作而不至于影响主线程工作的正常进行,而当需要同时进行多个耗时操作的时候,就要相应地为其创建多个线程,但是这样显然会造成线程的浪费,所以我们采用了一个优化方案,那就是线程池,我们在需要获取线程实例时不直接进行new创建,而是从线程池ThreadPool中获取。 相同的思想在操作数据库的时候
原创
1807阅读
0评论
0点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》项目管理工具Maven

简介 什么是Maven?Maven是一个项目管理和综合工具,提供了开发人员构建一个完整的生命周期框架。 Maven使用标准的目录结构和默认构建生命周期,在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作,例如:创建报表、检查、构建和测试自动化设置。概况地说,Maven简化和标准化项目建设过程,增加可重用性并负责建立相关的任务。 (注:Maven项目的结构
原创
1949阅读
0评论
0点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》Redis操作指令和Jedis工具

引言 上篇已经大致完成了redis的下载安装和简单的使用,接下来我们要真正地操作redis进行一些数据的增删改查操作,以及简便好用的Jedis工具。常用指令:1.增加或者修改已有数据的值:若此key对应的value不存在,则创建这个键值对,若已存在,则修改此key的value数值:set key value查询key是否存在:exists key当然还可以设置失效时间:set key t
原创
1850阅读
3评论
1点赞
发布博客于 4 年前

Unity3D —— 爆炸交互(震屏效果)

前言: 在我们进行游戏战斗场景开发时,常常为了加强临场感,会在有爆炸或者撞击的时候加入震屏的效果,原理其实很简单,就是对场景主相机进行坐标和角度的变化。设计在开始进行代码实操之前,我们先考虑一下大致的思路,主要操作的参数有震动的幅度(Transform的各项参数,通常只改变localPosition和localRotation,必要的时候也可以操作localScale),还有震动的时间,
原创
3751阅读
0评论
2点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》内存数据库Redis

引言: 在服务器中,数据库是必不可少的部分,作为数据存取中心,有时候的系统的操作涉及到数据的快速读写,在这种情况下,我们通常不会中规中矩地直接读写像MySQL的持久性数据库的数据,因为像MySQL这一类关系型的数据库不管是查询或者是修改数据库的内容都需要通过冗长的检索过程,势必影响效率,所以我们通常会选择通过一个非关系型数据库(NoSQL)来在内存缓存数据并实现快速的数据读写操作,然后定时把内
原创
3882阅读
0评论
1点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》自定义兼容多种Protobuf协议的编解码器

引言 通过上篇 《从零开始搭建游戏服务器》使用Protobuf定义网络协议 的实践之后,我们知道在设置ChannelPiple的handler时,只能设置一个解码器,即protobufDecoder,但是在实际的网络通信过程中,我们需要传输的数据类型必然有很多种,这就需要通过某个标识来帮助我们在进行数据解析时进行数据类型的判断。解决方案:方案一这是protobuf官方的一种实现方式,通过
原创
3624阅读
0评论
0点赞
发布博客于 4 年前

《从零开始搭建游戏服务器》使用Protobuf定义网络协议

引言: 之前我们说过使用Protobuff编解码方式来对网络通信数据进行编码,也就是可以用这种方式来定义通信协议,那么具体要怎么做呢?关于此工具的详细资料和使用操作可以参考我之前写过的博客:Unity3D —— protobuf网络框架准备工具:这里我就直接用之前编写的登录案例中的登录协议文件来进行本次案例的测试,工具下载地址如下:protobuf-java-2.5.0.zip,主要使用到的
原创
7509阅读
0评论
0点赞
发布博客于 4 年前

Unity3D —— NGUI染色遮罩Shader

简述: 遮罩的意思是指对原图被遮住的部分进行一定的处理,这里使用最简单的处理就是染色,所以我们需要创建一个遮罩层,通常使用另一个图片来作为遮罩层,也就是mask图。一、mask图的作用:跟UITexture使用的图片尺寸大小必须一致,将原图中需要被遮住(染色)的部分的位置在mask图中对应位置用纯色(例如:绿色(三原色的一种))涂满,学过flash动画的应该知道遮罩动画的原理,mask图其实
原创
2522阅读
0评论
1点赞
发布博客于 4 年前

Unty4.7 导入 NGUI3.8.2报错解决

Unity4.7 导入某个版本的NGUI时,假如出现“Assets/NGUI/Scripts/Interaction/UIPopupList.cs(956,45): error CS1061: Type `UnityEngine.BoxCollider2D' does not contain a definition for `offset' and no extension method `of
原创
2247阅读
2评论
1点赞
发布博客于 4 年前

UE4入门(1)——源码获取和编译

序言 近来UE4渐渐有了抬头的趋势,并且因为其在VR游戏设计中表现突出的渲染性能而饱受开发者青睐,更令人惊叹不已的是这个引擎的源码是开源的,这对于希望研究引擎底层代码的码农来说,优秀得有点过分啦。一、引擎安装:关于引擎安装,其实有两种方式: - 通过官方提供的Laucher下载引擎、工具和资源,具体步骤:登录Epic Games账号后,打开https://www.unrealengine.
原创
17617阅读
1评论
0点赞
发布博客于 4 年前

简明 VIM 练级攻略

下文转自链接。由原作者陈皓译自《Learn ViM Progressively》,非常不错。 ——————————正文开始——————————你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。Better, Stronger, Faster.学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本
转载
537阅读
0评论
0点赞
发布博客于 4 年前

杂笔

分享几张自己最近闲来无事画的画而已,一个闷骚的程序员当然是要不务正业地有那么几个业余爱好啦~第一张:在哔哩哔哩看到一个视频《雨夜》,跟着随手画画而已第二张:看了周觉先画的一些斗战神的原画之后,在他的博客里看到了一张猴子的宣传画,一时兴起临摹了一张素描第三张:看了有妖气的《镇魂街》漫画,觉得许辰画风还是比较喜欢
原创
562阅读
0评论
3点赞
发布博客于 4 年前

腾讯开源手游热更新方案,Unity3D下的Lua编程

写在前面xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,因其良好性能、易用性、扩展性而广受好评。现在,腾讯已经将xLua开源到GitHub。2016年12月末,xLua刚刚实现新的突破:全平台支持用Lua修复C#代码bug。目前Unity下的Lua热更新方案大多都是要求要热更新的部分一开始就要用Lua语言实现,不足之处在于:接入成本高,有的项目已
转载
3374阅读
0评论
0点赞
发布博客于 4 年前

VS开发Windows窗口应用引入图片资源

做工具栏的时候要用到图片。图标这样的东西从文件夹里导入显得有些山寨。VS的图形化操作很方便。但是我们的程序要动态载入图标。所以不能拖拽了~下面是添加图片的方法:1=》右击项目 =》 属性选择资源选项卡如果没有资源的话,显示右上图。点击创建一个。然后添加文件导入成功后,图片显示成这样代码中引用的方式_FollowButton.Image = global::PluginFollow.Properti
转载
5063阅读
0评论
0点赞
发布博客于 5 年前