首页原创精华区最新随笔(rss)

解决在Unity中封装Debug.Log后代码行定位问题

众所周知,代码中使用Debug.Log*输出的日志在Unity的ConsoleWindow中可以双击定位到对应的代码行,然而将Debug.Log*封装到自己的日志类中后,定位就失去意义了。原因很简单,Unity只会处理StackFrame的栈顶信息,它们保存在LogEntry中,栈顶的方法对应的脚本文件会以其instanceID来保存,其他StackTrace信息则以字符串结果存储,最终在双击ConsoleWindow中的ListView条目时通过指定了OnOpenAssetAttribute的callback来打开代码编辑器。其中,OnOpenAssetAttribute参数用于处理存在多个Callback时的优先级问题。

通过阅读ConsoleWindow代码,想到了一个解决思路:自己实现OnOpenAsset,通过获取ConsoleWindow中的ListView得到当前选中的row,然后在LogEntries中取得该行对应的LogEntry,其中的condition字段保存了StackTrace字符串,最后过滤掉包装的日志类后拿到脚本文件名和代码行,用OpenFileAtLineExternal直接打开。在实现过程中发现,完全没有必要拿到LogEntry,因为ConsoleWindow中的m_ActiveText就是StackTrace字符串,直接处理就好了。

在想到该方案之前,看过两个解决方法:1)将日志类编译成DLL;2)输出日志时自己记录StackFrame,通过一系列手段在OnOpenAsset查找LogEntry中对应的StackFrame。不过这两种方案都不能满足个人的完美主义情节,方案1失去了预编译宏的灵活,一旦日志系统改动需要重编DLL和处理依赖,方案2低效且过于复杂。

最后摘出代码供参考,实现环境为:Unity 4.7.5f1, UnityVS+Visual Studio 2015 Pro。

2016-06-21 10:53 作者: Heath【评论:1】【阅读:147】 

python实现的LAN文件传输服务

     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--># -*- coding: utf-8 -*-#Give wisdom to the machine,By Cha...  阅读全文

2016-06-19 11:20 作者: 长寿梦【评论:1】【阅读:237】 

苹果ios应用的网络ipv6适配攻略

     摘要: 苹果要求在2016年6月1日后新的app必须支持ipv6网络, 技术发展靠苹果果然没错, 但开发者还是要开始忙起来了这里介绍下Unity3D的适配的一些经验 基本注意点 ios ipv6适配无需修改服务器, 也就是说, 如果你的服务器依然是ipv4的也是可以使用的 苹果的适配方案是将ipv4的地址转换为ipv6, 到了路由层再转回去继续利用ipv4网络传输 测试网络环境搭建 转载请注明:http...  阅读全文

2016-06-16 14:18 作者: 战魂小筑【评论:0】【阅读:363】 

破解某城市的验证

     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--># -*- coding: utf-8 -*-#zhangtao 2016/06/14#QQ 406878851from PIL&nb...  阅读全文

2016-06-14 20:35 作者: 长寿梦【评论:1】【阅读:321】 

针对libzip库,封装了两个接口,compressString 压缩字符串

     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*简单说明:针对libzip库,封装了两个接口,compressString 压缩字符串 ,uncompressString 解压字符串zhangtao /201...  阅读全文

2016-06-13 18:52 作者: 长寿梦【评论:0】【阅读:310】 

Make Helix Shape in occQt

Make Helix Shape in occQt

PCurve is a powerful modeling method, to make helix shapes in occQt to help you understand pcurve better, then you can also can model some intereting shape based on pcurve.

OpenCASCADE does not provide helix curve directly, but you can build a helix curve by the pcurve of a surface(curve on surface). When you understand the pcurve of a surface, you can make a helix curve easily.

 

References:

https://github.com/eryar/occQt/issues/11

http://www.cppblog.com/eryar/archive/2015/07/09/211212.html

http://www.cppblog.com/eryar/archive/2016/03/05/212931.html

2016-06-05 13:44 作者: eryar【评论:2】【阅读:314】 

理解和使用zlib库 - 我的个人救赎

     摘要: 很多年以前我曾经写过一篇文章(http://blog.csdn.net/querw/article/details/1452041)简单介绍 zlib 的使用方法,老实说当时自己都不是很明白 zlib 是怎么回事,现在想起来那个时候年轻嘛,胆子大,脸皮厚...有时候想到自己这样一篇半吊子的东西在网络上传播,心不自安,希望用一篇新的文章救赎少不更事的无知.  阅读全文

2016-06-02 19:04 作者: 阙荣文【评论:0】【阅读:600】 

PDMS Automatic Pipe Routing

     摘要: PDMS Automatic Pipe Routing eryar@163.com Abstract. AVEVA PDMS Pipe Router is a rule-based tool which enables you to route pipe network automatically and to position piping components. Pipe Router ...  阅读全文

2016-05-31 22:59 作者: eryar【评论:0】【阅读:345】 

由招聘要求看趋势 - VC++程序员路在何方

     摘要: 随手翻了一些招聘要求,说说感受.  阅读全文

2016-05-31 13:36 作者: 阙荣文【评论:6】【阅读:995】 

ulua结合protoc-gen-lua的几个坑

     摘要: 最近整合ulua到项目里进行热更新, protoc-gen-lua这古老的东西重新让我继续发博客, 因为坑 生成好的协议报错找不到protobuf 在每个protoc-gen-lua生成的lua文件里, 都有一行local protobuf = require "protobuf" .csharpcode, .csharpcode pre { font-size: small; col...  阅读全文

2016-05-31 11:26 作者: 战魂小筑【评论:0】【阅读:339】 

BMP和JPEG - 附截屏保存为JPG源码

     摘要: BMP 和 JPEG作者: 阙荣文时间: 2016.5.291. 什么是 BMPBMP 格式是最简单,最直观的位图数据格式.它的思想非常朴素:用若干个位来保存一个像素的信息,由若干个像素组成一个像素流来表达一张图片.通常我们会用1位(可以保存2种颜色,0 表示一种颜色,1表示另一种,不一定是黑白,也可以是蓝绿,总之是2种),4位 - 16种颜色,8位 - 256种颜色,16位 - 65535种颜色...  阅读全文

2016-05-29 21:38 作者: 阙荣文【评论:1】【阅读:427】 

OpenCASCADE Expression Interpreter by Flex & Bison

     摘要: OpenCASCADE Expression Interpreter by Flex & Bison eryar@163.com Abstract. OpenCASCADE provide data structure of any expression, relation or function used in mathematics. Flex and Bison are too...  阅读全文

2016-05-27 23:08 作者: eryar【评论:0】【阅读:277】 

[Unity3D] RichText 图标扩展的简单实现

     摘要: 目前测试过可用的两种方式,方式一利用布局控件,可以实现也比较好理解,唯一不足最后发现内容多性能跟不上。方式二比较取巧,但是各方面应该比较符合项目需求。  阅读全文

2016-05-22 18:27 作者: l1989【评论:0】【阅读:481】 

lisp的括号

     摘要:        lisp(当然也包括scheme)的元编程(也即是宏)威力非常强悍,相比之下,c++的元编程(template+预处理)简直就是弱爆了,被人家甩几条街都不止。 当然,template的类型推导很厉害,也能生成很多签名类似的class和function,比其他语言的泛型强多了,但是,template再厉害,也不能生成名字相似的...  阅读全文

2016-05-20 11:17 作者: 华夏之火【评论:0】【阅读:432】 

[Unity3D] 菱形地图拼接渲染

     摘要: 最近上面给的任务是copy率土之滨的地图场景,于是就尝试了下。  阅读全文

2016-05-16 20:09 作者: l1989【评论:2】【阅读:623】 

python AES PKCS7填充 加解密

     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#coding: utf8import sysfrom Crypto.Cipher import AESfrom binascii i...  阅读全文

2016-05-16 14:18 作者: 长寿梦【评论:0】【阅读:547】 

迭代器的抽象

     摘要:       迭代器是好东西,也是猿猴工具箱里面的七种武器之一。代码中必然要操作一堆数据,因此就要有容器,有了容器,自然就不可缺少迭代器,没有迭代器,容器使用上就会非常不方便,并且还必须暴露其内部实现方式。比如,在可怜的C语言里面,操作数组容器就要通过整数索引来访问其元素,操作链表容器,就要通过while(node->next!=null)这样的方式来访...  阅读全文

2016-05-14 02:10 作者: 华夏之火【评论:2】【阅读:466】 

c++单元测试框架关键点记录成员函数地址

     摘要: 原则上,C++下最好的单元测试代码应该长成这样子,用起来才是最方便的Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->TEST_CLASS(className){    // 变量  ...  阅读全文

2016-05-11 18:01 作者: 华夏之火【评论:0】【阅读:594】 

消息发送杂谈

     摘要:       最近在看MFC的代码,虽然这破玩意,老朽已经很熟悉了得不能再熟悉了,但是这些破代码自由其独有的吸引力,不说别的,单单理解起来就非常容易,比之什么boost代码容易看多了,单步调试什么的,都非常方便,堆栈上一查看,层次调用一目了然。一次又一次地虐这些曾经虐过老朽的代码,也是人生快事一件。平心而论,mfc的代码还是写得挺不错的,中规中矩,再加上过去九...  阅读全文

2016-05-10 22:40 作者: 华夏之火【评论:2】【阅读:859】 

nginx开发第一个helloworld.

     摘要:   Nginx开发第三方模块实例 Ø 序言 Nginx是一个极具扩展性的服务器,这显著体现在对第三方模块的支持,开发者能够将自己开发的模块,按照nginx既有的规则,完美地融合进http框架中,以实现开发者定制功能的作用。 这篇文章主要用于结合如何开发一个简单的第三方模块,目标人群为想了解nginx开发第三方模块的同学,文章内容主要包括三个部分,如何将HTT...  阅读全文

2016-05-10 08:25 作者: jolley【评论:2】【阅读:544】 

Unity3D 动画切分处理

    最近游戏要开发二代,开始碰触角色动画那部分。由于动画部分之前不是我弄的,发现有很大的问题,角色模型和动画都是在一个fbx文件里面,并且新做的角色动画由于美术也不是同一个人,所以导出给我的动画也和原来的不同也是需要我来重新切分。
这样我认为有几个问题:
     1、文件过大,看了下我们那个fbx文件都10多m。
     2、后期维护麻烦,比如现在新加动画,就碰触到了原本的动画。
     3、美术为了一下修改预留了很多没用的帧在上面,这赤裸裸的浪费。
     4、更新调整也是问题
为此决定要把模型和动画分开,希通过一个没动作的fbx以及多个单独具体动作的fbx来处理,这样对于后期的维护,调整,以及更新都是很有好处。唯一的缺点就是对于美术麻烦点,美术认为太麻烦了,通过沟通,美术还是觉得要一个个动画分别导出很难处理,除非一开始就决定这样做(我是不太了解动作导出的)i╮(╯▽╰)╭。
      后来同事提醒可以把切好的动画Ctrl+D复制出来用,这确实是个方法,让美术导出一个没带动画的fbx这倒不难了吧,然后导出一个带动画的,我们把动画切好后,复制出来用,这样就ok了,就解决了导出问题!
      本来这样问题应该就解决了,但是一看就不想手动了,美术扔个txt文档制定动画对应的帧,一个角色用30多个动画,并且很多个没用的。我也不想自己手动去命名和切动画,必须用代码来做呀。
      如何通过代码来控制修改呢,这里用的是 通过继承AssetPostprocessor类, 在子类的OnPostprocessModel函数中处理。
      过程:
      1、通过一个与模型相同的名字txt指定动画名与帧的相关信息,首先搜索是否存在这样这样的txt,如果存在就读取txt里面的信息进行动画切分处理。
      2、如果fbx文件或动画配置有修改,只需选中fbx右键reImport就可以了。



      






    

2016-05-09 22:22 作者: 木华【评论:0】【阅读:456】 

Modify Branding of FreeCAD

     摘要: Modify Branding of FreeCAD eryar@163.com This article describes the Branding of FreeCAD. Branding means to start your own application based on FreeCAD. That can be only your own executable or splas...  阅读全文

2016-05-09 22:18 作者: eryar【评论:0】【阅读:421】 

挖坑,有空填坑


先挖坑,计划写出一系列文章,探讨将c++用成动态语言,或者函数式语言,以达到快速开发的目的,并且在需要优化的情况下,又能够方便快速的优化。现在事务太多,不知道何时能填坑

宏的图灵完备,用宏生成代码,特别是反射,模式匹配,实在必不可少,以至于宏可以与c++的继承、template、exception等基本组件并列的重要必不可少的补充手段

最小巧方便使用的单元测试框架,比gtest,cppunit要好用很多

自定义内存管理器,stl中的allocator是作为模板参数来传递,尝试以tls来传递allocator参数,当然,必须相应的各种容器都要重写,修改其缺省构造函数,拷贝复制移动拷贝,给元素分配内存释放内存等。对了,还有各种容器的反射信息。每种类型的template的容器都有一个typeinfo对象,具体的容器又有自己独一的typeinfo对象

完善完备的reflection,也就是,其他language能够做的反射的事情,这里只要愿意,也可以做到,非侵入式,可以给int,double等基本类型添加反射,给template类型的也添加反射信息,保证每种类型的反射对象是唯一的;

史上功能最完善的fmt的实现,非template,当然,外层还需要variadic来包装,以类型信息。类型安全,缓冲安全,高效,通用。通用的意思是,可以fmt到文件,日志,字符串,文本框控件中;类型安全的意思是,可以是所有的类型都可以fmt,只要该类型实现了相应的接口,但是,这种接口是非侵入式的,通过模板特化。高效的意思是合sprintf系列一样。调用的时候如下:
fmt(text, "%s %s %d ", 20, 17.5, 'a'); //故意写错%s的,在这里,%s为通用符号
fmt(file, "{%s-}",{1, 2, 3}); //输出 1-2-3到文件中,也即是能够fmt容器对象,横线-为容器对元素的分隔符

带有切片功能的数组,此数组类型还支持子类型数组到基类型数组的隐式转换,也即是需要用到基类型数组的参数,子类型数组都可以适应

haskell的map,filter,fold算法在C++下的方便灵活组合性的改造,使用时,就好像C#的linq那么爽快,当然,没有lambda的参数自动推导,毕竟还不如

stackless协程

c++下的monad

wpf的依赖属性在c++下的实现,gui框架的不可缺少的要素

tupple的功能扩展,通过宏,不需要写类型,用起来就好像函数式语言原生的那么爽的可能

好像haskell或者f#那样的模式匹配的结构体

C++下完完全全实现狗语言的那种鸭子类型的接口

面向对象的深入探讨,对于企鹅或者鸡是一种鸟,继承了鸟,但是没有继承了会飞的接口,在编译期就能报错,在运行期也不能对其找到会飞的接口

具体类,基本类型,没有虚函数,但是又能实现接口的方式,是实实在在的接口,里面有纯虚函数,也即是非侵入式的实现接口,上面宇宙最强悍的fmt就是用到这里的技术

vistor模式和抽象工厂的解耦合,或者又叫,multi dispatch

类型安全的消息,一条消息就代表了一种函数调用,不是win32的那种一点也不安全的类型系统,然后可以向任何类发送消息,动态添加消息的反应,消息队列,消息和消息参数的保存,actor,command模式,redo或undo的轻松实现,消息广播

空基类优化的运用,除了多继承(ATL)或者内嵌类(MFC),还有其他方式,那是以组合方式,通过少量的模板和少量的宏,通过搭配组装(多继承空基类)各种基类,就能完成一个com组件

消息系统的构建,gui框架的编写

........

博大精深的c++!只是想说,上面的一切,在C++下全部都是可行的,当然,宏,template,多继承必须大用特用,只是,奇妙的是,主类的内存布局却很干净,甚至可以没有虚函数
不知道有生之年能否填完坑,以之为励吧!
c++的同学们也充分发挥想象力吧,太多的奇技淫巧了。

2016-05-09 20:36 作者: 华夏之火【评论:8】【阅读:503】 

stl中string的一种改造

     摘要:       stl中最难看的组件(没有之一),无疑就是string这货了,一百多个成员函数,当然里面大多数是重载的,不必多想,一个class,如果拥有如此之多的函数,必然一定肯定是失败的,并且,即便是这么一大打函数,string的功能还是很不完备,要不然,就不会有boost里面的string算法。这真是尴尬,string作为最基本最基本的语言组件,又出自官方...  阅读全文

2016-05-09 19:28 作者: 华夏之火【评论:2】【阅读:620】 

Compile FreeCAD on Windows

     摘要: Compile FreeCAD on Windows eryar@163.com 1.Introduction FreeCAD是一个参数化的三维造型软件,主要用于任意大小的实际模型的设计。参数化的建模方式可以通过修改相关参数从而方便地修改你的设计。FreeCAD是开源软件,并提供了便利地自定义方式,也提供了脚本,从而根据自己的需要去扩展功能。FreeCAD是跨平台(Windows, Ma...  阅读全文

2016-05-08 11:07 作者: eryar【评论:0】【阅读:648】 

一种使用函数指针实现状态机的方法

     摘要: 结构定义 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 struct state_machine { 2     ...  阅读全文

2016-05-05 09:46 作者: 春秋十二月【评论:1】【阅读:1132】 

Use DS and SS to access the same memory

     摘要: Use DS and SS to access the same memory eryar@163.com CPU要读写一个内存单元时,必须先要给出这个内存单元的地址,在8086PC中内存地址由段地址和偏移地址组成。8086CPU中有一个DS(Data Segment)寄存器,通常用来存放要访问数据的段地址。 8086CPU也提供相关的指令以栈的方式LIFO(Last In First ...  阅读全文

2016-05-02 23:14 作者: eryar【评论:0】【阅读:541】 

有效利用标准库提供的type_traits,让程序在编译时作出分支选择

     摘要: 让程序中的简单if-else在编译期间决定ex. 1 /* 2  * ===================================================================================== 3  * 4  * &nbs...  阅读全文

2016-04-28 17:50 作者: Hallelujah【评论:0】【阅读:662】 

程序给UI美术上的必修课

     摘要: 一个手游的图形技术关键性指标是: 内存占用, DrawCall和包大小.  这三个参数是训练有素的程序和UI美术都需要关注的重要问题 接下来我们来讲解下UI美术怎么对待这三个问题 内存占用 手机的内存不会明显区分内存和显存, 大部分都是共享访问的. 这里说的内存, 一般可以通过一些工具直接看到 , 比如说XCode等 图形上对内存影响最大的就是纹理, 而纹理上最关键的问题就是纹...  阅读全文

2016-04-28 13:55 作者: 战魂小筑【评论:1】【阅读:1409】 

Assembly Loop

     摘要: Assembly Loop eryar@163.com 我觉得循环指令是程序的核心,是计算机不厌其烦地执行机械、重复枯燥劳动的基础。本文来学习下汇编程序中的LOOP指令。Loop指令的格式是:loop 标号,CPU执行loop指令的时候,要进行两步操作: v (cx)=(cx)-1 v 判断cx中的值,不为零则转到标号处执行程序,如果为零则向下执行。 由上可知,cx中的值影响着l...  阅读全文

2016-04-27 22:01 作者: eryar【评论:0】【阅读:631】 

技 术 改 变 世 界

网站分类

24小时内最热随笔

统计信息

聚合

Blog客户端API

推荐客户端

博客排行榜[前78人]