- 博客(74)
- 资源 (18)
- 收藏
- 关注
原创 xLua的obj引用分析
xLua的obj引用分析为了防止c#和lua两端的内存泄漏,有必要了解xLua是怎样处理2端的引用关系的,尤其是在扩展xLua时,处理不得当很容易造成引用丢失或者内存泄漏。一个c#的obj是不能直接传递到lua,需要一个中间层,这个中间层就是userdata。xLua会为每个传递到lua的obj生成唯一的一个userdata,并将2者绑定起来(具体绑定方式后面分析)。这样就有2个基本问题:...
2018-12-03 20:56:12 4138
原创 魔兽争霸自动地图元件的绘制原理
魔兽争霸自动地图元件的绘制原理序:本文主要介绍一种简单高效的自动地图元件的绘制方法,基本的原理是基于CodeProject的作者为Colin Vella的一篇文章:http://www.codeproject.com/KB/game/Autotiles_Algorithm.aspx#_comments 该文章介绍的方法非常简单,而且很高效。本文会先讲述此方法,然后在此方法的基础上,介绍魔兽
2012-01-17 15:20:00 12371 12
原创 浅谈RPG Maker XP自动地图元件的绘制原理
浅谈RPG Maker XP自动地图元件的绘制原理序:最近刚好想写个类似RMXP的地图编辑器,遇到的第一个问题就是自动地图元件的绘制问题。老实说,我不知道这东西到底叫什么(特别是英文叫什么),只知道RMXP翻译过来就是自动地图元件,而且魔兽的地图编辑器也用到这种技术,但我在网上却始终找不到相关的资料。其绘制原理其实很清晰,就是用户给出指定规格的地图元件资源,编辑器将其拆分,在绘制时再根
2011-12-27 20:51:18 10583 3
原创 C++实现的委托机制(3)
C++实现的委托机制(3)1.引言按上一篇文章的方法,你已经可以使用任意参数的函数委托了。这里介绍下MyGUI实现的两个辅助类,CDelegate类和IDelegateUnlink。如果你不为了深入了解MyGUI的委托实现,可以跳过此处。CDelegate即为单委托,
2011-10-08 15:16:59 2420 2
原创 C++实现的委托机制(2)
C++实现的委托机制(2)1.实现任意参数的函数委托按上一篇文章的方法,你已经可以使用无参数的函数委托了。当然,这远远不够。要实现任意参数的函数委托,这里的任意参数包括任意个数和任意类型。任意类型这个容易解决,使用模板就行,但任意参数个数呢?注:最终的实现代码可以
2011-10-08 14:40:17 2081 1
原创 C++实现的委托机制(1)
C++实现的委托机制(1)1.引言下面的委托实现使用的MyGUI里面的委托实现,MyGUI是一款强大的GUI库,想理解更多的MyGUI信息,猛击这里http://mygui.info/最终的代码可以在这里下载:http://download.csdn.net/detail/gouki04/3641328 我们的目标是要实现一个跟.NET几乎完全一样的委托,使用简单,支持多播,可以添...
2011-10-08 14:36:06 4340 1
原创 XNA制作的《PC版坦克大战09》
坦克大战 2009~!虽然已经到2010年了~呵呵其实这个游戏早在09年的国庆期间就写好了~~不过地图没有更新完整~~也有不少不满意的地方~当然少不了bug更重要的是代码本身写得确实难看~~特别在学了设计模式以及一些OO设计原则后·深感当时的不足··所以迟迟不放上来· 这是完全模拟当年SFC的坦克大战的~里面的素材都是我自己找的~和改的~~包括图片,音乐,声音效
2010-01-03 20:09:00 3874 10
原创 将C#的Console.Write同步到控制台和log文件输出
将C#的Console.Write同步到控制台和log文件输出日常编写小工具时,使用Console.Write会把日志输出到控制台中,这便于在运行过程查看日志,但如果日志过多,或者希望能对日志进行查找,复制操作时,在控制台中就不方便操作了,这时就希望能把日志输出到log文件中,通过Console.SetOut可以将输出重定向到文件,不过这样就不方便在运行时查看日志进度。有没有办法可以把日志同步输出到控制台和log文件中呢?参考StackOverflow的一个回答,其实原理很简单,就是我们自己实现一个Te
2020-12-15 10:51:04 4854
原创 解决UI黑边问题,Alpha Bleeding技术简介
解决UI黑边问题,Alpha Bleeding技术简介问题描述前段时间美术那边反馈部分UI有一圈黑边,而且同一个UI元素在不同位置,黑边的宽度还不一样,大概在1到2个像素,非常不美观。具体效果如下图:其中涉及到2张图片,如下:我们通过PhotoShop具体放大看下图片的边缘,可以看到2张图片的边缘都是没有黑边的,其中黄色块的边缘有1圈透明像素。如下:问题分析1. 检查图集一般我们使用UI图片都会打成图集再使用,这里也不例外,所以第一步当然要检查下生成后的图集是否有问题。具体来说就是检
2020-07-22 14:40:21 1863
原创 Unity打开项目后卡死(2018.4.19LTS)
Unity打开项目后卡死(2018.4.19LTS)问题非常诡异的问题,早上还在正常使用Unity,下午切换到Unity时发现Unity处于无响应状态。多次尝试后,只能重启,重启后发现还是一样的情况,通过Unity Hub打开项目后,过2秒就卡死无法操作。通过查看Editor.Log文件,发现一直在报错:WebSocket DoHandshake not a websocket handshake response尝试新建一个项目,发现还是一样卡死。看到WebSocket怀疑是之前安装的中文文档
2020-05-13 16:34:39 8720 1
原创 修复Unity空白报错问题
修复Unity空白报错问题在升级Unity Hub之后,偶然发现Console里有几行空白的报错,看不到任何信息,由于有报错,导致修改代码无法生效。尝试重启项目,重装Unity都完全没效果。而且就算新建一个空白项目,只要添加代码就会立刻报几条这种空白错误,完全无法使用。参考unity问答里的一篇回答,得到解决。下面说下解决办法:注意下面提到的路径在不同电脑上是不一样的,根据你设置Unit...
2020-02-27 15:45:16 8825
原创 高效遍历一个数组的所有排列组合情况
高效遍历一个数组的所有排列组合情况1. 前言本文主要是基于Aviad P.的2篇文章:A C# List Permutation Iterator,A C# Combinations Iterator。分别介绍了如何遍历排列组合情况。使用的算法不需要额外分配空间,所以比较高效。2. 实现public static class Iterator{ private static vo...
2019-11-12 15:45:52 3739
原创 Unity引擎一些不容易发现的小技巧
Unity引擎一些不容易发现的小技巧1. transform可以直接遍历之前我只知道可以通过GetChild来遍历tranform,但不知道可以直接遍历。// 通过GetChild遍历for (var i = 0; i < transform.childCount; ++i) { var child = transform.GetChild(i); Debug.Log(child...
2019-09-29 15:55:10 259
原创 解决Unity下通过代码修改prefab的参数不生效的问题
解决Unity下通过代码修改prefab的参数不生效的问题问题做Unity开发时,经常需要写一些Editor代码,用来提高开发的效率,常见的一种情况就是通过代码修改场景里Prefab的参数。一般修改后会发现一切如期望般正常,但一旦你重启Unity,或者重新加载Scene,那么就会惊喜地发现,之前做出的修改都没有生效。由于我习惯使用新版的Unity,所以下面都是基于Unity 2019版本,其...
2019-09-20 15:35:23 7891
原创 高效生成均匀分布的点:快速泊松碟采样算法实现(Fast Poisson Disc Sampling)
泊松分布采样算法(Fast Poisson Disc Sampling)前(fei)言(hua)最近在看一些随机地图生成算法,涉及到生成Voronoi图,这需要提前在一个平面内随机生成一堆的点,这些点还要满足随机而且尽量平均分布在平面上。一般文章都提到采用Lloyd Relaxation算法,不过这个算法比较复杂,消耗也比较大,后来看到这个泊松分布采样算法,也是用于生成一堆平均分布的点的,而且...
2019-08-29 18:27:54 5046 4
转载 Unity下实现自定义模型预览窗口,支持镜头旋转
转载自https://timaksu.com/post/126337219047/au.linkedin.com/in/timaksu非常好的一篇文章,介绍了Unity下扩展预览窗口(Preview Window)的基本流程。不过原文很多外链都失效了,而且用的Unity接口有一部分也已经更新了,这篇文章基本是在原文的基础上补上失效的图片(自己截的),同时把一些弃用的接口改成新的,在2019.1...
2019-05-22 14:46:28 4984
转载 ASTC textures
ASTC textures原文:https://arm-software.github.io/opengl-es-sdk-for-android/astc_textures.htmlThis document describes usage of compressed ASTC textures.IntroductionThis tutorial shows how Adaptive ...
2019-03-22 18:49:36 3251
转载 Using the Hardware Scaler for Performance and Efficiency
原文链接:http://android-developers.blogspot.it/2013/09/using-hardware-scaler-for-performance.html26 September 2013Posted by Hak Matsuda and Dirk Dougherty, Android Developer Relations teamIf you develo...
2019-03-19 15:44:38 284
转载 再抽象一点
原文:[https://techsingular.net/2010/09/03/再抽象一点/)软件开发是控制复杂度的艺术,是『抽象』1 的艺术。软件开发者要熟悉和操作各种抽象。无法想像离开进程、套接字(socket)、内存地址空间(address space)、互斥量等等这些抽象如何构建有用的软件系统。但是,也有大量的垃圾抽象,它们声称能带来的好处无法抵消造成的麻烦2,仅仅当情况和设计者提供...
2019-03-15 10:21:40 287
原创 lua下实现防注入的string.replace函数
lua下实现防注入的string.replace函数问题string.gsub是lua下用处非常多的字符串处理函数,其中一个很常见的功能就是做字符串替换,但如果要匹配的字符串是来自于系统外(如玩家的名字、公会名这种),那就要小心出现“注入”问题。下面是一个简单的例子,我们需要把一段含有玩家名字的字符串中的玩家名字加上加粗标签。local some_text = '沉睡的(包子)的神器'l...
2019-03-14 19:47:49 7783
原创 解决Eclipse无法关联依赖工程的代码问题
解决Eclipse无法关联依赖工程的代码问题用Eclipse调试Android工程时,当调试到依赖的工程的jar时,Eclipse提示如下错误导致无法调试jar里的代码。The JAR of this class file belongs to container ‘Android Dependencies’ which does not allow modifications to sou...
2019-02-18 20:00:47 996
原创 解决"Error C2338 The C++ Standard forbids containers of const elements ..."
解决"Error C2338 The C++ Standard forbids containers of const elements because allocator"问题最近在用Visual Studio 2017编译Brofiler(一个C++的Profiler)时,遇到了一些问题,其中一个就是这个Error C2338。原因因为在STL容器模板中使用了const,在C++11的标...
2019-02-17 19:38:30 4243
原创 xLua下调用GetComponent时返回值不是nil的坑
xLua下调用GetComponent返回值不是nil的坑问题看下面代码: -- gameObject没有Rigidbody,但返回值不等于nil local old_rigidbody = self.Owner.gameObject:GetComponent(typeof(CS.UnityEngine.Rigidbody)) if old_rigidbody then...
2018-12-04 10:48:20 5410
原创 xLua添加Peer机制
XLua添加Peer机制peer这个概念来自tolua++,是对等、同等的意思。其主要目标是为了解决一个lua和c++(或者c#)交互的问题:在lua下继承一个c#的类时,我们希望能给这个派生类添加一些新的成员变量,同时,希望在别的地方获取到这个派生类的对象时,也能正常访问到这些新的成员变量。首先要理解lua下是怎样访问c#的对象的。一个c#的对象传给lua时,会生成一个userdata...
2018-12-03 11:22:32 1869
原创 C++模板实现的通用工厂方法模式
C++模板实现的通用工厂方法模式1.工厂方法(Factory Method)模式工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法模式结构示意图工厂
2011-11-30 10:11:25 8399 3
转载 VC2008下提示找不到MSVCP90D.dll的解决办法
转帖:http://hi.chinaunix.net/?617034/viewspace-27761VS 2005在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifest file)(.manifest后缀文件)(其本质上是
2011-09-20 20:11:54 879
转载 光鲜靓丽背后的无奈 苦逼游戏人大吐苦水
转自3dm:http://www.3dmgame.com/zt/201108/31538_2.html 这是一个尴尬的群体,20几岁的他们背负了全世界最多的骂名;这是一个苦逼的群体,在为无数玩家造梦却没有时间精力与自己的另一半亲热;这又是一个外表风光的群体,在虚拟
2011-08-11 10:07:39 1425
转载 如何学好3D游戏引擎编程
此文为转载,但是值得一看。此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自己 QQ79134054多希望大家一起交流与沟通这篇文章是我一年半前,找工作时候写的,那时是发到学校的BBS上。现在我工作了,想法和以前也有不同,但对游戏引擎编程理念还是基本差不多。在我没遇到U
2011-06-20 17:01:00 1151
转载 正确使用预编译头
<br />预编译头文件的问题<br />整了一晚上,终于明白了预编译头文件.<br />DXUT(The DirectX Utility Library)是初学DirectX的一个好用的框架, 今天照着Sample里的EmptyProject建了一个工程, 引用了DXUT的代码, 并将设置-->C/C++-->Precompiled设置为Use Precompiled Header(/UC), DXUT.h, 发现怎么也编译不过去. 搞了半天才发现DXUT.cpp文件没有设置成Create Precomp
2011-03-03 09:41:00 4934 1
转载 C++ 优秀书籍
《The C++ Standard Library: A Tutorial and Reference》原文版中文版:《C++标准程序库:自修教程与参考手册》这是一本百科全书式的C++标准库著作,是一本需要一再查阅的参考大全。它在完备性、细致性以及精确性方面都是无与伦比的。本书详细介绍了每一标准库组件的规格和用法,内容涵盖包括流和本地化在内的整个标准库而不仅仅是STL。正如本书副标题所示,它首先适合作为教程阅读,尔后又可用作参考手册。浅显易懂的写作风格使得这本书非常易读。如果你希望学习标准库的用
2011-01-28 11:52:00 1072
原创 桥接模式的很好实现方式(应用shared_ptr)
桥接模式是一种结构型设计模式,它把类的具体实现细节对用户隐藏起来,以达到类之间的最小耦合关系。桥接模式也被称为pimpl惯用法,它可以将头文件的依赖关系降到最小,减少编译时间,而且可以不适用虚函数实现多态。 首先声明一个类Sample,它仅向外界暴露了最小的细节,真正的实现在内部类impl。 Sample.h#pragma once#include <boost/sm...
2011-01-26 20:32:00 1628
原创 STL错误。List inset iterator out side range (对STL中使用指针引起的错误)
错误代码:class A{private: list c;public: void Add(char a) { c.push_back(a); }};class B{private: list as;public: A* NewA() { as.push_back(A()); return &as.back(); } void FuncB() { A* temp = NewA(); A* temp2 = NewA(); te
2010-06-15 10:43:00 2937 2
原创 设计模式 -- 代理模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第7章)。 UML图: 代理模式的实现:代理模式很好实现,注意的是要将RealSubject要代理的功能抽象出一个Subject接口,让Proxy代理类实现该接口,这样外界可以通过代理对象直接使用RealSubject的功能。 实体类可以将自己的不同功能代理出去,这样实体类只跟代理类耦合,外界只跟代理类耦合。代理...
2010-06-04 11:08:00 2134 1
原创 设计模式 -- 装饰模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第6章)。 UML图: 我知道装饰模式的实现不好理解,所以我尽量在代码里加了详尽的注释在我理解,理解装饰模式的重点在于-->理解其使用了链表形式将各装饰对象链成一条装饰链。 策略模式的实现:由组件类派生出装饰类,由装饰类再派生出具体的装饰类,每个装饰类再添加自己的附加功能组装的时候要一层一层地往上装饰,调用...
2010-06-04 00:07:00 1858 2
原创 设计模式 -- 策略模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第2章)。 UML图: 策略模式的实现:将所要用的所有算法抽象出一个接口(所以每个算法要用类实现)使用一个策略上下文类,封装一个算法接口的指针,并提供一个函数给外部调用具体算法。外部用具体算法类的指针来创建策略上下文类。下面代码是一个商场收费系统的抽象,将收费的算法(普通,打折,返利)抽象成cCashSuper接口...
2010-06-03 18:03:00 1759
原创 设计模式 -- 简单工厂模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第1章)。简单工厂模式只要用一个简单的switch case语句就可以实现了。在c++下,可以使用函数实现工厂函数。下面代码是为了实现将运算操作逻辑解耦出来。以便复用。同时采用工厂模式生产具体的运算类。将运算操作进行抽象是为了以后可以方便增加其他的运算操作。代码如下:/**************************...
2010-06-03 17:42:00 892
原创 21天让你精通C++
看着图书城里一大堆的《21天学会java》,《21天精通ASP.NET》,《21天学会XXXXX》··只能说现在的人都太浮躁了~~~静不下心来打基础,基础的东西不想做,难一点的东西又做不了,想21天精通c++!?上面的就是最简单的办法~
2010-05-28 01:15:00 2410 1
原创 C++的那点事,const的所有用法
C++中的const的用法可谓博大精深,活用const对于代码的健壮性,可读性都有很大的帮助。如果面试官问你const的用法时,可千万不能只说:定义只读类型。 一、对于基本声明 1.const int r=100;//标准const变量声明加初始化,因为默认内部连接所以必须被初始化,其作用域为此文件,编译器经过类型检查后直接用100在编译时替换。 2.extend cons...
2010-05-07 23:52:00 940 1
原创 ASCII码表
ASCII码大致可以分作三部分組成。第一部分由 00H 到 1FH 共 32 个,一般用来通讯或作为控制之用,有些字符可显示于屏幕,有些则无法显示在屏幕上,但能看到其效果(例如换行字符、归位字符)。第二部分是由 20H 到 7FH 共 96 个,这 95 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。如下表:第三部分由 80H 到 0
2010-04-12 16:03:00 963
转载 解决VS2005中的MFC80UD.dll找不到
转载自:http://www.cnblogs.com/wyj553/archive/2009/02/27/1400009.html解决VS2005中的MFC80UD.dll找不到的问题分类:我装了Visual Stduio 6编译了一下MFC程序没有问题,突然想试一下最新的巨大的Visual Stduio 2005于是试验了一下,开始用向导生成了一个项目,编译,一切没有问题,虽然是庞然大物
2010-04-12 15:57:00 5472 1
C++的委托实现(MyGUI版本)
2011-09-27
《算法设计与实验题解》pdf版 完整版
2009-09-09
Visual C++ 角色扮演游戏程序设计
2009-09-02
DirectSound帮助文档(中文版)
2009-09-02
《兔斯基主题 数独》源代码(VC6.0)
2009-08-11
兔斯基主题数独(VC6.0)(试用不包含源代码)
2009-08-11
象棋游戏程序范例源代码(VC6.0)
2009-08-10
象棋游戏程序(VC6.0)
2009-08-10
MFC类库详解(中文版)
2009-08-10
Effective C++ 完美中文版
2009-04-11
数据结构算法:Visual C++6.0程序集
2009-04-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人