笔记
阿高
只是个喜欢拿技术去炫耀的家伙
展开
-
[Unity]Android(安卓)代码安卓APK时,使用系统安装器安装的[最正确]办法(不弹出选择打开的程序)
关于这个办法的搜寻,又是只能找到一篇被到处转又没卵用的文章,我时相当气愤的。经过Google大法,最终找到正确的打开方式先来看看错误的打开方式String str = "/CanavaCancel.apk"; String fileName = Environment.getExternalStorageDirectory() + str; Intent intent原创 2016-02-18 13:54:53 · 4965 阅读 · 7 评论 -
怀旧之使用汇编启动hge
虽然其实只是抄了一遍而已,不过之后我会考虑使用纯汇编启动一次看看 hge = hgeCreate(HGE_VERSION); hge->System_SetState(HGE_FRAMEFUNC, FrameFunc); hge->System_SetState(HGE_WINDOWED, true); if(hge->System_Initiate()) { hge->Sys原创 2013-11-28 06:23:00 · 1079 阅读 · 0 评论 -
关于C++Release后的优化感想
最近学了点汇编,虽然写不出什么代码,但是好歹看懂一点了。于是突然想去看看C++对代码优化到什么程度。首先看debug,debug是完全没有什么优化了,除此之外还加了很多检测的过程,难怪效率那么低。后来看Release,优化得很彻底,用不到的变量,全部去掉比如 int a=0;a++;不管你对a进行了什么操作,你最终没有真正使用它,那么就会除掉,这个大概不算什么,是个人都知道的道理。原创 2013-11-12 23:33:08 · 4120 阅读 · 0 评论 -
汇编学习笔记1 --- C内联汇编之Hello World
对于我这样写C/C++的人来说,估计学汇编的第一件事就是想试试内联汇编,以前看云风的代码那个感觉高端啊,虽然现在只会点皮毛还算是输出Hello World了,但是是依靠函数库实现的。char* a_ = "内联汇编";char* szStr = "Hello World!";__asm{push 0push a_push szStrpush 0call dwor原创 2013-11-19 02:31:28 · 1968 阅读 · 0 评论 -
优秀程序设计的18大原则
1.避免重复原则(DRY - Don’t repeat yourself)编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就会很容易形成一个抽象体。2.抽象原则(Abstraction Principle )与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。3.简单原则(Kee转载 2013-10-22 11:01:08 · 814 阅读 · 0 评论 -
struct tm转time_t
int status = luaL_dofile(L,"setting.ini");if (!status){struct tm dt;lua_getglobal(L, "year");dt.tm_year=lua_tointeger(L,-1);lua_getglobal(L, "mon");dt.tm_mon=lua_tointeger(L,-1);lua_ge原创 2013-07-12 23:56:50 · 1436 阅读 · 0 评论 -
lua5.1.4中实现自定义require的loader函数
刚开始以为只是简单的把自己的C函数,替换到package.loaders[2](索引2是lua的文件加载器)里面就OK了,实际上也是这样的,但是这样的代价就是文件搜索啊,一堆一堆的判断啊都要自己做,因为这些lua本身已经实现了,所以肯定直接拿来用之。但问题来了,发现直接简单的package.loaders[2]=myloadfunc是失败的。会抛出这个错误:luaL_error(L, LUA_原创 2013-05-11 23:04:55 · 6634 阅读 · 0 评论 -
luajit笔记---编译bytecode(字节码文件)
虽说这种东西其实没多少用,不过老板是烧饼所以不会承认的,不过编译之后别人反编译也看不到变量命这种自欺欺人的心理作用还是有点用的。于是发现lua5.1编译出来的字节码luajit是不能用的,后来去官网看到编译方法,输入后却说没有这个命令,卧槽。于是继续google,找到了一个跟我一样的家伙,后面有人给出解决方案了In the LuaJIT source distribution, the原创 2013-05-11 12:04:16 · 9752 阅读 · 3 评论 -
lua笔记 --- 一个C++调用lua函数的类的实现
这个类基本上是从LuaPlus那里弄来的,为什么不支持用LuaPlus,因为那东西我实在不知道怎么编译,能编译通过的版本的旧版本的了,而且之前的版本有BUG的存在,使用起来有阴影,不想用了,还是自己写个比较靠谱。因为感觉LuaPlus那个LuaFunction有点不好用,所以进行了一些改造。自己认为目前自己封装的这个还是比较好用的。namespace Lua_Wrapper{stru原创 2013-05-12 15:45:31 · 2339 阅读 · 1 评论 -
luajit笔记---luajit静态库依赖顺序问题
以前从来没有意识到,依赖静态库那里的填写顺序,会对编译结果有影响。不知道这是不是luajit静态库本身的问题。结论是,依赖顺序必须是lua51.lib luajit.lib反过来编译出来的东西就无法运行,会提示缺少luajit.exe,即使放入luajit.exe会继续提示缺少lua51.dll,继续满足条件,然后直接就崩溃。静态库本身就不会依赖什么DLL,这种错误是很明显的,不知道这原创 2013-05-06 19:55:12 · 2861 阅读 · 0 评论 -
[笔记]VS2005中Debug遇到找不到msvcr80.dll的问题的解决办法
首先,这个问题在网上找了半天,什么设置MD的都是完全无用的,其实这是显而易见的,因为我在用的是MFC,又在DEBUG模式下面怎么会依赖msvcr80.dll?这个明显是Release库。于是看到有人说这是2005的BUG,我索性转到2008,于是又遇到另一个错误,说什么Runtime库错误之类,搜了一下,也是各种方法无效,最后找到个方法,忽略msvcrt.lib就可以运行了,但是一运行就各种错原创 2014-02-14 22:59:47 · 1346 阅读 · 1 评论 -
luajit笔记---编译成静态库以及FFI绑定宿主程序函数
本以为可以像lua一样把代码丢进去直接编译就好了,结果发现luajit有一堆汇编代码,不知道怎么处理,后来一搜索才知道luajit本身提高的批处理也可以编译成静态库,就是在后面加个static,郁闷到了。Google来Google,终于看到用FFI绑定宿主程序函数的例子,卧槽,知道真相我的眼泪都流下来!原来FFI本质是绑定导出的符号,所以说只要导出符号就可以用,吐血。#incl原创 2013-05-05 22:07:04 · 9212 阅读 · 2 评论 -
C# SQL Server 操作笔记
首先目前我接触的语言连接SQL Server都需要提供一个连接字符串,所以做过的都知道怎么弄,实际上我大部分时候记不住,大概的格式为 var str = "Provider=SQLOLEDB.1;" + "Password=" + pw + ";" + " Persist原创 2016-09-23 22:45:35 · 539 阅读 · 0 评论 -
[笔记][unity]Runtime(运行时)将Texture转到Sprite
这个问题一搜索就能找到将Texture2D专为Sprite的方法,直接调用Sprite.Create即可,但是如果你是从网络下载下来的纹理,将会只是Texture而不是Texture2D,这让我想起以前做Java的时候可以将低级的直接强转成高级的然后使用,当时学的浅并不知道原理,只是Unity显然是不行的。这里我只找到了使用WWW下载的处理方法,其实WWW就有LoadImageInto原创 2016-02-21 14:21:47 · 10057 阅读 · 0 评论 -
[笔记]Unity5(5.1.2f1)中多边形碰撞器Polygon Collider 2D无法编辑
必须把物体的z轴置于0才可以编辑,在子级里面是0也没用,必须世界坐标是零才可以, 我的父级是z=500,于是我把物体的z改成-500就可以编辑了。Unity5 bug真是一堆堆 。。。原创 2015-09-01 22:43:01 · 7478 阅读 · 1 评论 -
C#利用反射动态加载DLL(C#)并调用其中的接口
看了很多文章都说反射怎么怎么慢啊,明显就是对于反射的理解不够。的确你可以方便的去调用一个DLL的函数(虽然我从来不觉得用函数名作为字符串去调用是方便的),就像C++也可以动态调用DLL里面的函数一样,但是用过C++的人都知道傻逼才自己去声明回调去一个一个调用里面的函数,除非你真的闲的蛋疼。但是C++有头文件可以include,这样编译器就知道这样行得通,而C#该怎么实现这样的Include?最原创 2015-01-22 18:39:18 · 11259 阅读 · 2 评论 -
Uniy开发笔记&注意事项
SendMessage会长同一帧调用Init原创 2014-05-24 00:54:24 · 1779 阅读 · 2 评论 -
C# 与 C++交互的重要细节 结构体传递 数组传递 等 stdcall
函数签名必须是 stdcall 几乎很少有资料提到这个,示例代码里面也没有 __stdcall原创 2014-08-08 22:35:12 · 2405 阅读 · 2 评论 -
Unity的吐血巨坑之处 --- 发布版本和编辑器的纹理显示不一致
缓存。编辑器的缓存和正式发布的shh原创 2014-07-13 16:28:14 · 5375 阅读 · 0 评论 -
Unity用C#DLL拓展
虽然了解C#的都知道可以这样了,但是我是刚知道的,主要是最近知道了HOTween这个原创 2014-05-27 15:45:14 · 1925 阅读 · 0 评论 -
Unity中巧用协程(Coroutine)做状态机
虽然这个其实在看了2dtoolkit的demo才知道的,我就简化一下让原创 2014-05-09 18:56:56 · 7709 阅读 · 4 评论 -
FreeImage加载PNG8失败的原因找到了
之前用FreeImage加载PNG8出错,而加载PNG24缺没错,一直百思不得其解,认为是FreeImage库的问题,后来发现,各大引擎都用FreeImage,而区区PNG8就对付不了,明显说不过去,这说明是我的操作方式有误。于是建立一个简单的工程,测试那种加载不成功的PNG8图片,发现一点问题都木有,那么就是环境问题了。后来给FreeImage设置了一个错误回调,打印出来的是解压错误。回想其原创 2013-05-05 10:27:43 · 2015 阅读 · 0 评论 -
自己尝试实现了一个lua_Reader
为什么要自己实现呢,因为脚本这东西总要加密,lua似乎没有直接从内存读取脚本这东西,似乎dostring可以,不过因为听说效率较低所以pass,而且dostring也不能读取编译后的文件。其实纯C的函数指针和C++等高级语言的抽象接口差不多,不过灵活度还是要高很多。现在发现面向对象有些东西的确是太死板了,以前觉得模板这东西很强大,现在发现这个不过是来弥补先天的不足,那还不如C的函数指针来得直接原创 2013-05-03 23:13:52 · 3579 阅读 · 0 评论 -
C++多线程编程简单实例
转自:http://blog.sina.com.cn/s/blog_4ae717db01013z9m.htmlC++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数HANDLE CreateThread( LPSECURITY_ATTRIBUTES l转载 2012-12-28 12:17:24 · 880 阅读 · 0 评论 -
【Unity】窗口失去焦点后继续游戏处理
原文:http://miaoshuanghe.blog.163.com/blog/static/14013047620114181452144/概要Unity的默认项目设定是”只在窗口被聚焦时进行游戏处理“。失去焦点时处理停止。 这个设置对于单机游戏没什么影响,但在调试多窗口的在线游戏时相当不方便。可以通过如下设定让所有的窗口失去焦点后继续游戏处理。方法转载 2012-12-27 15:09:33 · 14283 阅读 · 0 评论 -
U3D中实现游戏存档
这是从一个叫LevelSystem的工程里看到的,其实工程本身简单到不行,不过也看到了点有用的东西。public static void SaveData () { if (_maxLevels == 0 && _unLockLevels == 0) {//³õÊŒ»¯ _maxLevels = 11; _unLockLevels = 1; } PlayerPrefs.S原创 2012-12-27 14:45:29 · 3614 阅读 · 0 评论 -
C# 让字符串定长换行
百度和谷歌都搜了一番,感觉没有满意的,索性干脆自己写public class StringUtility { public static string BreakLongString(string SubjectString, int lineLength) { StringBuilder sb = new StringBuilder(SubjectString);原创 2012-12-18 15:36:05 · 3882 阅读 · 0 评论 -
QT之桌面精灵实现(二) --- 右键菜单、开机启动、窗口Z-Order
1、右键菜单。这个其实用QT实现容易过头了,不过其中还是被卡了一下,就是给右键菜单选项前面打钩那个功能,首先是不知道该怎么形容,怎么搜都搜不到,后来去慢慢研究帮助文档,总算是弄出来了。首先才创建菜单项和添加项,然后绑定槽 act_about = new QAction(tr("关于"), this); act_autoRun = new QAction(tr("开机启动"), t原创 2012-12-12 19:59:17 · 5347 阅读 · 1 评论 -
QT之桌面精灵实现(一) --- 透明窗体和图片绘制
关于QT种种,之前已经吐槽过了,打算写几篇记录一下桌面精灵的制作过程,不过由于是过了挺长时间才想要写,所以之前的一些东西都忘得差不多了,总之想起多少写多少。桌面精灵的第一步,就是要把一个精灵渲染到桌面,具体使用WINAPI做过一些,都不完美,也不想深挖WINAPI,因为我的目的只是想要把精灵渲染的桌面,而QT 很容易就能实现。另外说一下渲染精灵到桌面其实有两种途径,一种是直原创 2012-12-11 22:18:17 · 8964 阅读 · 3 评论 -
Widows Socket编程笔记---非本机无法正常通信
由于之前要模拟XX通信,于是打算试试Socket,虽然在Java早早已玩过这个东西并且当时是毫无问题,不过用C++来弄之后就开始发现各种问题。1、“数据丢失”。最早不知道是什么原因,因为没有做消息错误的处理,认为是消息丢失了,反馈的数量和发送过去的是不对等的,导致出错。后来得知在发送的时候有可能会把多条消息合并成一条发送出去,刚开始我是没想到会有这样的情况,直到某人在群里问到之后才知道原来是这原创 2012-12-06 19:28:25 · 964 阅读 · 0 评论 -
U3D笔记---关于场景烘焙
事实上具体烘焙过程U3D自带帮助文档已经说的很详细了,不过需要注意的是模型的UV必须处理好,否则会各种贴图错误。不过个人感觉应该是美工把灯光摆好了自己烘焙就行了而现在是由我程序来摆灯光。。。现在唯一一个不清楚的地方就是烘焙后灯光是否需要撤掉,就效果来说经过烘焙的物体灯光就对它无效了,理论上就是不计算了吧,官方的案例里面也没有把相应的灯光给撤掉,但是网上有的说法是说要撤掉,具体对性能的影响,需要原创 2012-12-06 18:46:59 · 6518 阅读 · 0 评论 -
FreeImage,想说爱你不容易
由于一些原因,各种免费图像处理软件已经不能满足需求,这时候就需要自己动手造轮子了。搜一搜,第一个找到的是FreeImage。不得不说,这个东西,实在是非常傻瓜,还怕你不会用,带了个Wrapper,其中就有C++版的FreeImagePlus,使用起来更是傻瓜到极致。一下子就完成了之前图片批处理的想法。一开始都是很圆满,包括自己弄的所谓的AJPG格式(颜色使用JPG,ALPHA使用PNG)。后来原创 2012-12-05 22:23:08 · 6040 阅读 · 0 评论 -
AS3中用标签加载XML
每次都忘记,这里记一下 [Embed(source = "../Media/new.xml",mimeType = "application/octet-stream")] private var XmlClass:Class; public function Foo() { var xmlObj:Object = new XmlC原创 2013-01-03 00:11:54 · 800 阅读 · 0 评论 -
QT浏览目录打开文件
不知道是不是因为关键字不对,搜到的都是一些自己实现的目录浏览,QT那么高端的东西不可能打开个文件都那么麻烦,好在想到之前下的一些案例里面就有,于是做个笔记这是个打开音乐文件的例子 QStringList files = QFileDialog::getOpenFileNames(this, tr("选择音乐文件"), QDesktopServices::s原创 2013-01-19 23:59:56 · 4288 阅读 · 0 评论 -
编程小技巧笔记
变量的区间限制if(a>10)a = 10;if(a<0)a = 0;//优化a = min(a,10);a = max(a,0);原创 2013-05-01 14:31:34 · 798 阅读 · 0 评论 -
unity里面获取cmdline
因为有些时候要用到cmdline,如果是C++,那么很容易就从winmain那里获取到了,但是unity不知道怎么搞,去找了API没找到了,后来直接Google一下,其实只要去问.NET要就好了function GetCommandLineArgs() : String[] { Debug.Log("CommandLine: {0}" + System.Environment.Com原创 2013-04-20 16:25:11 · 2285 阅读 · 0 评论 -
std::map的陷阱 stack overflow
这个东西虽然看到很多测试说插入百万都没问题但是他们测试的往往是int类型做value 加入用自定义类型,特别是容器或者数组的时候,很容易堆栈溢出因为数才层数很高的时候,对堆栈消耗极大 为了方便,我是直接在std::map里面嵌套了std::list,这样就不用老是去new,省去了管理内存,结果debug没问题,release就直接堆栈溢出了。后来索性换成了stde原创 2013-04-20 14:07:35 · 1548 阅读 · 2 评论 -
关于Unity资源异步加载的研究
异步加载资源是现在的主流技术,于是先废话一段。先从DX说起最早的想法是即使Unity 不支持异步加载,也可以用C#的多线程机制自己实现,不过这个想法明显行不通。玩过DX的都知道异步加载需要涉及到显示设备的管理问题,管理不好就会直接崩溃。从磁盘到文件这点做异步是一点问题也没有,最早我自己尝试的时候也是这样,后来发现没多少用处,因为最费时的其实不是加载,而是资源的初始化!是的,从内原创 2013-04-09 14:25:26 · 17701 阅读 · 0 评论 -
关于AS3中使用正则表达式进行一定规则替换
具体问题本来是在百度知道上面提问的,谁知道我正准备选择最佳答案,百度就把问题吃掉了,百度你个大SB问“假设一个AI载体承载的|f0xFFFF00知识|b量过于庞大”替换成“假设一个AI载体承载的知识量过于庞大”也就是替换成html格式的颜色,颜色不是固定的而是变化的我已经知道搜索用\|f0x\w{6}就可以搜索|f0xXXXXXX的关键字,但是替换的时候如果直接替换就全部原创 2013-03-21 15:32:48 · 2038 阅读 · 0 评论 -
Unity3D BMFont使用图片自定义字体(无需字体文件)
网上搜BMFont做字体,很多都是从一个字体文件读取,然后选择需要的字,然后保存成图片文字,这个对于一般的文字的确很实用,因为Unity本身不支持中文,所以只好这样了。但是做过游戏的都知道,策划总是喜欢用一些乱七八糟的数字字体,而美工丢给你的也只有图片文件,像这样:于是最开始我就自己实现了一个类,来处理这种情况,不过实际上使用起来还是挺麻烦。因为字体这种东西别人都已经实现了,我这是原创 2013-03-21 11:49:34 · 26826 阅读 · 14 评论