[置顶] 【NGUI源码剖析】深入理解NGUI的drawcall

引言上篇【NGUI源码剖析】NGUI的drawcall简单认识了NGUI中的drawcall。借着近来工作更替的间隙,本文在之前的基础上做一点深入的分析: - UIPanel工作流程图 - 如何生成drawcall - widgets的生成及作用 - drawcall的合并 UIPanel的工作流程 无论是UIDrawCall还是UIWidget的流程,都离不开UIPane...
阅读(783) 评论(0)

[置顶] 【编程语言】C#中字符串的内存分配

C++中的共享内存作为一枚C++程序员,了解到在早期的版本中STL为了提高性能,在std::string中曾一度使用过共享内存的技术,在目前的版本中string已经不支持共享内存,其中一个原因是由于线程不安全。 有关copy-on-write和std::string的共享内存,陈皓大拿已经有一篇很详尽的文章介绍过: C++ STL STRING的COPY-ON-WRITE技术本着负责任的态度,还...
阅读(116) 评论(0)

[置顶] 【设计模式】从命令模式到录像(replay)系统

引言 这几天看到《游戏变成模式》中的到命令模式一章,这个模式说起来并不是很熟,想着大概也像观察者模式,单例之类的,被用了很多次却不自知吧,没想到还真的对我有所启发。 命令模式 命令模式,将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 如果一个命令对象可以做(do)一些事情,那么就应该可以很轻松地撤销(undo)它们。撤销这...
阅读(335) 评论(0)

[置顶] 最全Tortoise SVN Clean up失败的解决方法合集

前言 svn又一次出现问题,cleanup 失败,真是一年不出现,出现就要命啊,还记得我上次写文章记录出现的问题还是在2014年,请看SVN cleanup 失败的解决方法。 工作环境 工作版本:TortoiseSVN 1.9.4, Build 27285 - 64 Bit , 尝试方法 每个人svn的版本不同,工作环境也不同,如果不想重新checkout整个项目,建议大...
阅读(3010) 评论(0)

[置顶] 【Unity3d基础】Unity换装系统(1)

引言 最近项目需要开发换装系统,做了一些前期的调研。换装系统主要应用与MMORPG游戏中,除了常规的换衣服,发型,翅膀之类的,现在一些次时代的MMORPG游戏加入了捏脸,改变五官等比较复杂的换装系统。本次介绍通过替换Mesh数据来实现换装的方法。 期望效果 模型1 模型2 期望可以在游戏运行时将模型1的外观替换为模型2的外观。 实现原理 通过收集模型2中对应的mesh信息,替...
阅读(689) 评论(0)

[置顶] 【Unity3d基础】Unity3d中自动生成asset bundle name

引言: 在unity3d的实际项目开发中,由于资源的增删改频繁,手动设置asset bundle name是一项繁琐且容易出错的工作,所以衍生出了开发自动化工具的需求。 工作原理: 以文件夹为目标,设置asset bundle name,在目标文件夹内的文件都会打进同一个asset bundle。 实现原理: 通过遍历Asset路径下的所有文件夹,收集所有的子文件夹列表,然后顺序设置as...
阅读(366) 评论(0)

[置顶] 【Unity3d基础】Unity3d中利用NGUI实现虚拟摇杆

引言 最近的项目中需要开发虚拟摇杆功能,由于历史原因对于FingerGesture较为熟悉,故没有采用EasyTouch。 NGUI中的UIDragObject NGUI中有一个UIDragObject.cs组件,添加到GameObject,即可实现简单的拖拽动作。 其中的Target需要设置被拖拽的对象,代码注释如下: /// /// Target object that...
阅读(1151) 评论(0)

[置顶] 【Unity3d基础】Unity3d 中如何旋转一张2D图片到指定角度

引言 近日在开发项目中,遇到一个这样的需求:将炮弹旋转至开火方到受击方所成的角度上,简言之就是将一枚炮弹旋转到开或者到敌人的方向上。 如何旋转2D贴图? 查阅了很多资料,都是关于四元数,欧拉角的问题。有点杀鸡焉用牛刀的意味,于是自己摸索着利用已有的接口用一种简单的方法实现。(注意,我的需求存在于2D场景内) 用到的接口 Vector3.Angle...
阅读(1349) 评论(0)

[置顶] 游戏配置文件加密工具(附源码)

引言: 在开发一款对外发布的软件程序时,难免要用到配置文件,而其中某些数据开发者并不期望用户获知或是修改,通常会对一些配置文件进行加密。一般是用一个批量的加密工具,统一对配置文件进行加密。 考虑到加密、解密的效率及对安全性的需求,选择了最常用的XOR算法,以下是加密工具的源代码:(windows环境下基于XOR算法,带有图形界面的文件批量加密工具) 源代码: 由于XOR算法是直接可逆的,故源代码中略去了部分代码。...
阅读(1212) 评论(0)

2017年职业生涯小计

今天在公司办理了离职手续,2014年3月24日入职到今天也有3年有余。回顾自己6年来的工作生涯,总觉得有些话想说,又不知道从何说起,就按流水来对这几年的工作生涯做个回忆吧。起 2011年校招进入巨人,开始了游戏之旅。 在巨人待了2年多,参与了一款ARPG类型的PC游戏开发,从项目立项开始,与两位校招的小伙伴一同参与了我们一生中第一款游戏的开发。巨人的生活真的像在学校,有球场有食堂,公司尽了最大的...
阅读(3220) 评论(8)

C#的不安全代码和指针

coffeecato写在前面: 本文来自《果壳中的C# C#5.0权威指南》 第四章 C#高级特性 4.14不安全代码和指针。由于C#中对于指针的使用有诸多不便,翻到了上面这本书,特别介绍了unsafe及fixed关键字的使用。这里做一摘录,方便日后查阅。不安全代码和指针C#支持通过标记为不安全和使用/unsafe编译器选项编译的代码块中的指针直接进行内存操作。指针类型主要用来与C语言API进行互...
阅读(85) 评论(0)

【Unity技巧】Unity中的优化技术

coffeecato写在前面: 从CPU和GPU的角度介绍unity优化技术很全面的一篇文章,读过收获良多。 转自:【Unity技巧】Unity中的优化技术 写在前面 这一篇是在Digital Tutors的一个系列教程的基础上总结扩展而得的~Digital Tutors是一个非常棒的教程网站,包含了多媒体领域很多方面的资料,非常酷!除此之外,还参考了Uni...
阅读(119) 评论(0)

C#之玩转反射

coffeecato写在前面: 另一篇文章详解C#中的反射,对于反射的类比非常形象: 两个现实中的例子: 1、B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了(...
阅读(99) 评论(0)

Unity3d资源管理分析

转自:Unity3d资源管理分析 基本信息 美术资源应导出为AssetBundle文件。这种AssetBundle有两种存储方式:可以是未压缩的,也可以使用7z算法压缩,默认压缩。以我手头的一个蒙皮动画角色为例,压缩后文件大小由800K减少到260K。导出过程中各个成分占的文件比例会在Logs中打印出来,以供分析和优化。 AssetBundle有下面两个主要的加载方法: Asset...
阅读(75) 评论(0)

使用RenderTexture实现3D模型与UI的组合显示

引言 游戏中常见的功能如角色创建选择,NPC对话等功能中,需要3D模型与UI的组合显示,该如何实现呢? 如何实现 首先想到添加一个3D camera将3D模型画出来,利用Camera中的Target Texture属性来缓存绘制的3D形象,再设置相应的位置,旋转等属性。 实现环境 利用NGUI\Examples\Scenes\Example X - Character的场景来进行实验。...
阅读(167) 评论(0)

【NGUI源码剖析】NGUI如何优化drawcall数量

引言 接上一篇文章对UIPanel的分析。定量的分析哪些因素会影响NGUI drawcall的增减。 SortWidgets FillAllDrawCalls的部分代码 if (mSortWidgets) SortWidgets(); // 对widgets进行排序 for (int i = 0; i < widgets.Count; ++i)...
阅读(196) 评论(0)

【NGUI源码剖析】NGUI的drawcall

前言 在使用unity3d开发实际的项目中,性能优化一直是一项不得不考虑的重点,而其中UI的优化又是绕不过去的坎,很多看似简单的UI为何会占用大量的cpu开销?本文以NGUI这套UI的解决方案为例,从源码出发,分析影响性能的原因,看清问题的本质,对症下药。NGUI的drawcall 在Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call。这一过程是逐个物体进行的,对于每个物...
阅读(175) 评论(0)

【NGUI】头顶血条(2D与3D的实现)

前言 游戏中的头顶血条是一种常见的小功能,一般游戏会要求做2D的头顶血条,这是因为这样能保证UI的大小不变,图片和文字不会产生变形引起的其他效果;反过来,3D的头顶血条会由于透视的原因会有近大远小的效果,看起来会更真实。 实现 资源的制作上,2D血条与3D血条都一样,需要注意的是,实现3D血条时需要将场景camera的CullingMask选中血条所在的图层即可,同时将UI camera的cu...
阅读(203) 评论(0)

Unity 与 NGUI 坐标转换原理

本文转自:Unity 与 NGUI 坐标转换原理 本文转自http://blog.csdn.net/huutu 转载请带上 http://www.thisisgame.com.cn 在游戏中最常用到坐标转换的就是制作人物头顶的血条/名字 之类的显示,Unity提供了摄像机以下API供我们使用: 1、将世界坐标转换到屏幕坐标 [csharp] view...
阅读(143) 评论(0)

【游戏设计】任务系统进化论

引言 近来在新的项目中负责开发任务系统,起初自己做了一份设计,后来经与同事的交流,发现从系统设计上还有诸多可以改善的空间,这里加以记录。 背景&需求 MMORPG游戏中的任务系统远了说从《征途》《传奇》《魔兽世界》开始,一直占据着串联游戏内容,增加游戏粘性,丰富游戏内容等等很多本身功能之外的责任。所以不无可避免的,任务系统会与游戏的中的各种其他模块打交道,从设计的角度上如何避免过度耦合就是一个...
阅读(185) 评论(0)

再议Unity3D中的Awake(),OnEnable()和Start()

引言 近来遇到了一个问题,排查到最后,发现问题的原因在于,对于Unity原生函数执行顺序的理解还不到位。之前转载过一篇介绍Unity原生函数执行顺序的文章Unity3D中脚本的执行顺序和编译顺序 单纯的讨论一个GameObject的Awake在Start函数执行是没什么实际意义的。当遇到动态加载对象,或者相互引用时,情况要复杂一些。 官方介绍 First Scene Load These...
阅读(231) 评论(0)
89条 共6页1 2 3 4 5 ... 下一页 尾页
    博客专栏
    个人资料
    • 访问:62837次
    • 积分:1210
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:40篇
    • 译文:0篇
    • 评论:11条