NGUI介绍

NGUI是Unity中最流行的UI插件,在UGUI出现前几乎是Unity唯一的UI解决方案。
NGUI是一个提供高效事件通知框架的强大UI系统。NGUI遵循Kiss准则,其中类代码简洁,多数在200行以内。程序员可以方便的扩展其组件类代码以获得定制的功能。
NGUI官方网址
NGUI官方文档地址

NGUI下载

我们可以从unity商店购买NGUI,或者下载其免费版本。
NGUI的Unity商店
当然也可以下载网上其它人提供的版本学习研究。
NGUI 3.10.2

NGUI导入

下载NGUI后,我们得到的是一个.unitypackage文件,比如NGUI Next-Gen UI v3.6.8.unitypackage。
Unity编辑器中,打开菜单Assets->[……]

Read more

本文主要介绍编写一个原生的WebGL程序需要哪些步骤。

WebGL程序的软件结构

默认情况下,一个动态网页程序只包括HTML和JavaScript两种语言。
而在WebGL程序中,还包括了第三种语言:GLSL ES。

enter description here

WebGL编程模型

enter description here
上图表示一个WebGL程序运行的主要流程。主要分为3个阶段,应用程序阶段、着色器阶段、片元后处理阶段。
本文接下来按照一定的规律介绍编写一个原生WebGL程序主要的步骤。

获得WebGL渲染环境

在Html中定义canvas标签

<canvas id="webgl" width="400" height="400"> </canvas>

在JS代码中[……]

Read more

命令行参数和控制台命令

游戏命令包括两种,一种是运行游戏时候指定的命令行参数,另外一种则指的是进入游戏后输入的控制命令。

控制台命令

对于虚幻三来说,控制台命令分为两种,一种是引擎中已经支持的可执行命令,这些命令都是在C++类的Exec函数中进行处理的。另一种是带exec前缀的脚本函数,称为可执行函数。
下面根据用途统一总结,不进行区分。

常用命令

exit(quit)

退出游戏

pause

暂停游戏,按pause break键也可以。

open [url]

打开地图,额外的参数同命令行参数的url部分。比如,在大厅中开始游戏就是用的该命令打开服务器下发的ip地址。

restartLevel

重启当前关卡

reconnect/disconnect/cancel

重[……]

Read more

命令行参数是指通过命令行或者可执行文件快捷方式启动游戏进程的时候,附加在后面的一系列参数。

命令行参数

命令行参数分为两种,一种是编译游戏代码时候需要用到的命令行参数。另一种则是在启动游戏进程时候指定的参数。

编译命令行参数

编译代码期间会用到的参数如下:

  1. 版本 -debug -release
  2. 全量 -full (默认增量)

  3. 自动更新C++头文件,不弹框确认 -auto
    注意:虚幻三编译脚本.uc文件时候,会更新.h头文件

  4. 移除.u文件中的源代码信息 -stripsource
    注意:.u文件是虚幻三脚本文件编译后的字节码文件,虚幻四中不存在

    因此,编译代码时候最多可能指定以下参数组合:
    make -debug -full -auto -stripsource
    make -re[……]

Read more

岁月如梭,光阴似箭。转眼间工作一年多了,我也即将二十八周岁了。常说三十而立,想想就觉得忐忑。生命一分分、一秒秒流逝,就如同抓不住的流水,站在漫漫的荒野中,永远无法回头。

佛说,人之所以痛苦,在于追求错误的东西。佛说,缘起缘灭,缘生已空。佛说,世间万物皆空,唯其空,便能包容万物。我不是佛,我是人。所以,我痛苦,我在追求错误的东西,我执着于缘生,我无法放空自己。

岁月如梭。感慨万千。沉沦于苦海中,幻想过很多或许。或许勇敢一些,自信一些,或许努力一些,或许早点觉悟,早点逃离自己的舒适床,早点更有担当,或许我是一个刻苦的人,或许早点学会伪装,早点懂得高情商套路。或许我就不该怀恋那片刻的阳光。但是,乞丐一旦品尝过美食的味道,一辈子就无法忘怀,而我就是那个乞丐。

如果可以选择,我宁愿从来没有感受过[……]

Read more

DebugView简介

DebugView是一个监视本地系统或者通过tcp/ip连接的网络系统的OutputDebugString输出的应用程序。DebugView不仅能够监视Win32应用的debug输出,还可以监视内核模型的debug输出。因此,如果使用OutputDebugString来打印调试信息的话,就可以在程序运行时候通过DebugView来实时显示程序的调试信息。
这种方式在某种意义上,比将Log打印到文件中,关闭程序后再查看Log输出的方式更加方便。而且可以将这两种调试程序的方式结合起来,既使用DebugView来实时显示调试信息,又将调试信息输出到Log文件中,方便以后分析。

安装DebugView

下载地址:DebugView
下载后面后解压压缩包,发现里面有三个文[……]

Read more

WebGL概述

什么是WebGL?WebGL简单的说就是在Web中渲染OpenGL的技术,也可以理解为把OpenGL的接口移植到浏览器中使用。具体的可以参考WebGL的维基百科
使用WebGL可以通过编写网页代码在浏览器中渲染三维图像,而且不需要任何的插件,比如Adobe Flash Player等。
WebGL在最新的浏览器中得到了广泛支持。

WebGL与HTML5的关系

HTML5是最新的HTML(超文本标记语言)的最新修订版本。
HTML5中新增了<canvas>标签用于绘图。在HTML5之前,只能使用<img>标签在网页中显示静态图片,如果要显示动画得借助于Adobe Flash Player等第三方插件。在HTML5中,可以在<canvas&g[......]

Read more

博客移动到www.xpc-yx/blog

以前一直想用个炫酷的个人页放到网站根目录,一直没弄好,不了了之。wordpresss用多了之后发现挺简单的,只需要把wordpress安装到空间的public_html的子目录就可以,于是在网上搜索wordpress安装到子目录解决之。目前首页放的是一个ThreeJs渲染的天空盒,以后再慢慢修改吧。

文章采用markdown编写

一直以来都是直接在wordpress的后台编辑器写文章,去年开始用微软的windows live write发布文章,可以参考试试windows live write发布博客
Markdown的语法比较简单,随便找个文档尝试下,找个编辑器就可以开始写作了。关于编辑器的选择,我现在也不知道,找了好久也没觉得哪个特别合适[……]

Read more

上一篇文章定制IE浏览器弹窗中的外部窗口就是一个不规则窗口,这篇文章介绍下其是如何实现的。思路是根据这张图片创建一个不规则区域,然后将窗口的区域设置为该不规则区域。

 

第一步,在资源文件rc中设置对话框的属性

Border:None

Style:Popup

 

第二步,导入背景图片到程序资源中

最好是导入位图,虽然也可以导入其它格式的图片。假设导入位图ID为IDB_BITMAP_BACK。

 

第三步,在OnInitialDlg函数中,创建区域,并将其设置为窗口区域

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//OnInitDialog()中
CRgn wndRgn;
 
m_bitmapBack.LoadBitmap(IDB_BITMAP_BACK);
CreateRgn(m_bitmapBack, RGB(255, 255, 255), wndRgn);
SetWindowRgn(wndRgn, TRUE);
 
//根据图片创建区域的函数
void CClientBrowserDlg::CreateRgn(CBitmap &cBitmap, COLORREF dwColorKey, CRgn& wndRgn)  
{  
	CDC *pDC = this->GetDC();  
	CDC memDC;  
	//创建与传入DC兼容的临时DC  
	memDC.CreateCompatibleDC(pDC);  
 
	CBitmap *pOldMemBmp=NULL;  
	//将位图选入临时DC  
	pOldMemBmp = memDC.SelectObject(&cBitmap);  
 
	//创建总的窗体区域,初始region为0  
	wndRgn.CreateRectRgn(0,0,0,0);  
 
	BITMAP bit;     
	cBitmap.GetBitmap (&bit);//取得位图参数,这里要用到位图的长和宽       
 
	int y;  
	for(y=0; y <= bit.bmHeight; y++)  
	{  
		CRgn rgnTemp;  
		int iX = 0;  
		do  
		{  
			//跳过透明色找到下一个非透明色的点.  
			while (iX <= bit.bmWidth  && memDC.GetPixel(iX, y) == dwColorKey)  
				iX++;  
			//记住这个起始点  
			int iLeftX = iX;  
			//寻找下个透明色的点  
			while (iX <= bit.bmWidth  && memDC.GetPixel(iX, y) != dwColorKey)  
				++iX;  
			//创建一个包含起点与重点间高为1像素的临时“region”  
			rgnTemp.CreateRectRgn(iLeftX, y, iX, y+1);  
			//合并到主"region".  
			wndRgn.CombineRgn(&wndRgn, &rgnTemp, RGN_OR);  
			//删除临时"region",否则下次创建时和出错  
			rgnTemp.DeleteObject();  
		} while(iX < bit.bmWidth );  
		iX = 0;  
	}  
 
	if(pOldMemBmp)  
		memDC.SelectObject(pOldMemBmp);  
}

第四步,在OnPaint()绘制窗口背景图片

08c002280365a5243[……]

Read more

在客户端程序中嵌入浏览器,有两种方式,一种是使用微软的IE控件,一种是使用CEF。这里介绍的是使用CWebBrowser2类(在MFC程序中插入IE的Active控件生成),定制内嵌浏览器窗口的一些经验。

本文的经验积累于实现逆战退出游戏时候的广告弹窗的过程中,下面Show一下这个自带萌妹子的弹窗吧。

这是一个无边框的Windows对话框程序,并且是一个基于背景图片的不规则弹窗窗口;内部嵌入了一个浏览器控件窗口,这个漂亮的妹子就是浏览器控件打开的网页显示出来的。对这个妹子有兴趣的,可以去玩一把逆战,退出客户端的时候就会出来这个弹窗了。

下面介绍一些关于实现该弹窗浏览器的Tips。

一、如何获得CWebBrowser2

方法1:网络搜索下载,比如我以前的一篇博文里[……]

Read more