自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Nodejs源码分析之Path

今天介绍一下nodejs Path的源码分析,Path的API文档在https://nodejs.org/dist/latest-v5.x/docs/api/path.html,使用相对简单,在API文档中,需要特别说明的是如下的文字:This module contains utilities for handling and transforming file paths. Almos

2016-01-13 17:37:28 3382

原创 Nodejs源码分析之Console

今天这里介绍一下Nodejs的Console的源码分析,具体的API文档可以参考https://nodejs.org/dist/latest-v5.x/docs/api/console.html下面就从具体的源码入手,解析一下Console功能的具体实现。 总体上来说,该源码实现相对简单,可以说是具体输出的封装,没有太多的内容,这里就将console的所有源代码分析如下:// 指示javascrip

2016-01-06 17:30:39 2469

原创 Nodejs源码解析之util

util是nodejs中的工具类,属于内部API,被nodejs其他模块使用。 可以浏览官方文档:https://nodejs.org/dist/latest-v5.x/docs/api/util.html#util_util_inspect_object_options其基本的API可以分成以下类型:判断类型, 返回值为布尔类型,判断一个值是否为特定类型,如isBoolean,isBuffer,

2015-12-31 09:53:10 1920

原创 Nodejs源码解析之Buffer

今天源码分析一下Nodejs的核心模块Buffer, 官方文档https://nodejs.org/api/buffer.html 在分析源码前,以下问题需要说明:Buffer可以看作是原始数据的数组集合,需要特别说明的是,其支持不同形式的编码,而且是在V8 heap之外,可以被GC回收的堆内存。理解大字节序与小字节序的区别,buffer的方法很多区分了大字节序和小序。 注意Buffer的内存

2015-12-23 17:36:39 6218 1

原创 Nodejs源码分析之assert

assert库是nodejs中的一个工具库, 主要用于测试模块,这个在自动化测试框架中用的最多。 具体的用法可以参见官方文档: https://nodejs.org/api/assert.html 大致的用法可以分为下面几个部分:列表内容

2015-12-17 18:46:15 2548 1

原创 Nodejs源码解析之module

module管理是Nodejs中比较有特色的部分,官方有详细的文档https://nodejs.org/api/modules.html 哪里介绍了一些基本的使用规则,主要的内容如下,文件和模块之间是一一对应关系:使用方法就是require,后续源码解析中会详细介绍什么是require,以及如何实现的。 文件的名字就是一个id,也就是标志符。如何访问和被确认为主模块: 简单的说就是被nodejs

2015-12-10 18:03:05 3884

原创 Nodejs源码解析之events

Nodejs中的events模块是很常见的模块,其实现了事件注册,通知等功能,是观察者模式的实现。其使用很简单,实例代码如下:// 导入events模块var events = require('events');// 创建EventEmitter对象var eventEmitter = new events.EventEmitter();//回调函数1var listener1 = fun

2015-12-04 09:27:07 3809 2

翻译 Unity3d Linux 下面画面撕裂问题

在Linux下游戏开发过程中,遇到了画面撕裂(tearing)的问题,一般来说,垂直同步应该是可以解决掉画面撕裂的问题,但是在多屏显示的情况下,即使开启了垂直同步,依然不能解决撕裂问题。 多屏显示是指将2个或者两个以上的屏幕显示游戏界面,比如说,游戏设置为1400×1800的分辨率,分别显示在1400×900的双屏上,这样就会有画面撕裂问题。测试环境为OS Ubuntu(15.10),双显示屏,Nv

2015-11-26 17:39:11 3766

原创 NodeJs测试框架Mocha的简单介绍

Mocha是运行在nodejs和浏览器下的javascript的单元测试框架,官方文档在https://mochajs.org/,相当的容易上手和好用,单元测试框架其实都差不多。大致分为测试函数,

2015-11-26 16:53:03 15049

原创 Socket.IO for Unity 简要介绍和简单应用

在项目中使用到了Socket.IO for unity这个Asset Store上免费的库,这里将简要的介绍一下它的结构,已经使用中的注意事项。目录结构 上面为包的目录结构,简单的介绍一下具体的内容:JSONObject - 打包与解析JSON格式Prefabs - 简单的SocketIO客户端的Prefab,实际上其就是一个attach了SocketIOComponent的Unity Gam

2015-11-19 11:31:15 16690 8

原创 Unity3d 下websocket的使用

今天介绍一下如何在Unity3d下使用WebSocket。 首先介绍一下websocket,socket,和http的区别与联系,然后介绍一下websocket的一些开源的项目。WebSocket是什么WebSocket协议是为了实现网络客户端和服务器端全双工通信而引入的一种基于消息帧和TCP的通信机制,这个协议本身的目标是为了在http服务器上引入双向通信的机制,从而克服http单向通

2015-09-30 11:41:48 26271 2

翻译 Javascript 中的this介绍

在javascript中的构造函数创建对象时,常常使用this,但是this到底是什么,其实有一遍英文的文章 介绍的很详细: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this 这里我把它翻译出来,自己也深刻的理解和体会一下。原文翻译如下:Javascript中this关键字的行为与其他

2015-09-28 09:07:04 547

原创 JavaScript的面向对象程序设计

在这篇文章中,将介绍一下javascript的面向对象的程序设计。Javascript是脚本语言,其本质上和C++,C#这样面向对象的语言还是有区别的,其没有类的概念,在本质上都是以对象的形式存在。 我是一个新手,写这篇文章的目的主要是加深自己的理解以及学习分享。对象是什么在本质上,Javascript对象是一组无序属性的集合,属性可以是基本值类型,函数,对象, c可以理解为一个散列表, 关键字(k

2015-09-25 15:20:52 534

原创 StrangeIoc框架的详细介绍

这是接上面的博文讲到的StrangeIoc的简要介绍后(参考http://blog.csdn.net/leoleocs/article/details/47664221),介绍一下extension中详细的内容,以及如何在Unity3d中使用该框架。Extensions该框架的应用是以extension的扩展为基础的,主要的扩展如下:Injection extensionInjection的扩展可以

2015-08-27 18:06:25 7659

原创 StrangeIoc框架的简要介绍

StrangeIoc是一套为unity3d,C#写的一套应用程序框架,详细的信息可以查看其官方文档。 http://strangeioc.github.io/strangeioc/早就听说过这个框架,今天花了点时间Review了一下源代码,算是先写一点大概的内容了,以后继续。 下面是code的主要folder结构: .tests 整个应用程序框架的测试用例,可以看看测试用例怎么写的,看看应用框架

2015-08-14 17:29:44 2900

原创 回溯算法(Backtracking)说明与实例

定义回溯算法(Backtracking)在很多场景中会使用,如N皇后,数迷,集合等,其是暴力求解的一种优化。参考https://en.wikipedia.org/wiki/Backtracking 中的说明,定义如下: Backtracking is a general algorithm for finding all (or some) solutions to some computati

2015-08-06 13:29:49 18992 1

原创 图的拓扑排序的非递归和递归的c++实现

最近研究了一下图的深度优先遍历,尝试写了一下递归和非递归的算法,从而等到一个有向无环图的拓扑序列, 在教材书中,很多都是利用的递归方法来完成图的深度优先遍历,这里可以给大家介绍一下非递归的遍历实现。 对于有向图的深度优先遍历和拓扑序,需要明确下面几点: 1)只有有向无环图才可以生成拓扑序,如果有环,无法生成拓扑序 2)深度优先遍历可以检查出是否有环 3)深度优先遍历的非递归实现应该使用栈来实

2015-08-05 15:21:29 1278

原创 Unity3d NGUI如何支持中文

unity3d支持动态字体,但是这个读取的字体可能需要平台的支持,如何能让游戏在不同的平台上得到相同的用户体验,就需要将字体以bitmap的形式直接在NGUI中使用。具体的文档可以参考如下文档: http://docs.unity3d.com/Manual/class-Font.html http://www.tasharen.com/?page_id=133这里就介绍一下NGUI如何利用BMF

2015-07-28 18:07:33 2201

原创 NGUI的事件通知架构和源码剖析

NGUI的事件通知其实是由一个脚本UICamera来实现的,其基本的原理很简单,在Update函数中检测用户输入,然后根据自己的策略分发到具体的物体。

2015-07-10 09:45:40 2847

原创 如何判断NGUI的ScrollView是否正在移动

在实际项目中,我们通常需要判断ScrollView上的item是否正在移动, 在NGUI的3.7.9的版本中,其没有提供这样的属性。ScrollView仅仅提供了下面事件的注册通知: /// <summary> /// Event callback to trigger when the drag process begins. /// </summary> publi

2015-07-10 09:00:32 3224

原创 NGUI 的ScrollView如何让item居中

ScrollView提供了相当好的滑动功能,滑动的多少是基于用户触摸,其没有提供方向键的控制,常常无法居中或者高亮一个物体。那如何可以居中某个物体呢? 其实NGUI提供了一个脚本,UICenterOnChild,故名思义,其应该就是讲Scrollview上的Item居中的,其思想和算法也很简单,详见其函数 /// <summary> /// Center the panel on th

2015-06-19 09:16:25 3240

原创 Unity3d 如何动态加载非Assets路径下的图片

我们知道,Unity3d会将Assets folder下的图片进行编译预处理,在程序打包完成后,我们是无法动态的修改图片内容,所以,如果能动态的从非Assets 目录下加载图片就是一个非常好的方法。我们可以使用Unity3d WWW类提供的方法来完成这个工作,WWW类经常是用来下载网络服务器上的资源,其实它也可以加载本地的资源。 参考http://docs.unity3d.com/ScriptRef

2015-06-12 08:54:23 4989

原创 NGUI简单介绍

在一个项目中使用到了NGUI,所以这里就简要的介绍一下NGUI的结构,脚本和一些简单的控件。本章以NGUI3.7.9为基本模板,参考了官方文档http://www.tasharen.com/forum/index.php?board=12.0目录结构下图为NGUI的原始目录结构: 1) Editor - 该目录主要放一些Editor script用到的资源 2)Examples - 里面放的全部

2015-06-05 10:51:43 2528

原创 Unity3d的Windows平台下的窗口切换与去边框

窗口切换如果有两个Unity3d的游戏需要通过程序进行窗口切换,Unity3d自身是没有提供相应的函数或者接口去完成这一部分功能,Unity3d窗口的创建和控制都是和平台相关的,所有这部分需要提供调用平台相关的代码,对于Windows程序,需要调用Win32的API来实现。对于Windows比较熟悉的朋友可能会说,直接调用SetForegroundWindow不就可以的么,但是请注意,该API在很多

2015-05-29 11:06:06 5444

原创 NGUI中的UIInput输入定制光标

原来输入光标是通过UITexture来完成了,这个在运行中可以看到UIInput上有一个UITexture的子物体,大家可以在运行的时候自己看一下。那如何定制mBlankTexture呢,请看下面代码: 这就是默认为白色的原因, 我们可以通过修改上面的代码,修改成任何的颜色。以上的代码都来自函数UIInput::UpdateLabel().

2015-05-13 15:46:56 2266

原创 Unity3d C# 脚本单体模式的实现

单体模式(Singleton)是一种最基础的设计模式,在几乎所有的程序设计和实现的时候都会用到,单体的主要作用为:确保只有一个实例(对象)被创建,一般来讲的范围就是在一个进程当中。需要提供全局的范围点来访问实例在实现的时候特别要主要线程安全性,在C++的实现中特别需要注意,C#来说静态变量的初始化都是线程安全性的,一般问题不大。下面就介绍一个Unity3d 中的单体脚本的实现方法。Unity3

2015-05-08 14:54:51 1679

原创 简述SOLID的面向对象的设计原则

在这篇博文中,将给大家简要介绍一下SOLID的面向对象的设计与实现的基本原则。其实这个需要自己做项目和看代码的体会,个人经验觉得还是比较有用的。什么是SOLIDSOLID是面向对象设计与实现的时候推荐的一个基本的原则,分别是Single Responsibility Principle(单一职能原则),Open Close Principle(开放封闭原则), Liskov’s Subst

2015-04-29 18:45:14 2117

原创 Windows平台下异常处理(二) - 结构化异常

Windows结构化异常在《Windows核心编程》中有大量篇幅做了介绍,这里面介绍的内容都基于书中的内容和自己的理解与研究。其实,在windows平台下,C++和C#的异常处理都是依靠Windows的结构化异常来实现的,大家可以依靠VS Debug来查看具体的信息. Windows结构化异常介绍Windows的结构化异常的大量实现是有操作系统和编译器共同完成的,其主要分为终止处理(terminat

2015-04-23 14:07:21 696

原创 Windows 平台下的异常处理 (一)

今天给大家介绍一下Windows的下的默认的异常处理,C/C++异常,以及Windows下的结构化异常。默认的异常处理 当我们在Windows下开发程序时候,利用的标准的C/C++的标准库,比如利用VS建议App的工程时候,其会自动创建一个主线程。该主线程如果有空指针/除零 操作。整个进程都会退退出,大家想过为什么会退出没有? 其具体原因是下面的代码:VOID RtlUserTh

2015-04-15 15:41:20 562

原创 Unity3d 如何利用Visual Studio·调试

今天会给大家介绍两个方面的内容,如何利用Visual Studio 调试脚本和用C#写的Managed的动态链接库(Plugins)为什么使用Visual Studio调试 我用的早期的Mono Developer的版本相当的难用,程序容易挂掉。最近也使用的新的V4.0.1的版本,还行。如果大家对Mono Developer调试感兴趣,可以查找相关的帖子,Unity3d的官方也有相应的文档。

2015-04-15 10:21:54 4753

原创 linux下Unity3d下如何使用动态链接库

unity3d可以支持两种类型的动态链接库(官方称为Plugins), 一种是C#写的Manager 的Dll, 一种是C/C++ 写的Dll, 其用法不大一样。C#写的Managed的动态链接库 相对来说简单,直接把DLL放入到Unity3d的Assets目录下就可以了,Unity Editor会自动重新编译,注意,如果想要调试DLL中的代码,必须使用Mono Developer进行编译并且产

2015-04-10 17:58:36 2333

原创 Unity3d linux版本如果做Splash屏幕

最近做了一个项目,需要给linux unity3d做一个Splash屏。 在无盘系统中,游戏启动到显示游戏的内容,可能需要很长时间。 这个时候显示黑屏,用户体验肯定不大好。 Unity3d对移动端提供了Splash Screen的设置和显示,但是在桌面系统中(Windows,Linux,MAC)没有提供该服务。 为了克服无盘系统长时间的黑屏,特增加Splash屏幕。对linux下的图形编程是新手,

2015-04-09 16:46:22 1207

原创 Unity3d linux下获取焦点,控制窗口方法

将unity3d的程序发布到linux的机器上,特别是双屏的机器,鼠标的初始位置可能不在Unity3d的窗口内,通过这种方法可以获取焦点。

2015-03-31 08:53:20 2781

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除