切梦刀 发布的文章

[转]开源类软件许可证简明指南

  • 作者 Cameron Chapman
  • 日期 2010年3月24日

许多开发者和设计者愿意将他们的劳动成果作为开源项目面世,他们希望其他人进一步开发和分享他们的代码,开源社区因此而充满活力。开源软件适用于你能想到的几乎任何应用,大多数设计者经常使用开源软件或代码(WordPress、Drupal、以及很多其他的内容管理系统(CMS)都是开源的)。

然而,不少开发者和设计者并不清楚不同开源许可证之间的区别。当他们选择了某种开源许可证时,同时也放弃了什么权利呢?如果不能确知这些许可证的含义、不知道如何最为恰当地应用它们,开发者将无法为自己的项目作出可信的决策。

20100331190311_33689.jpg

什么是许可证?

- 阅读剩余部分 -

[转]Unity 3D中的内存管理

unity-technologies-870x531.jpg
Unity3D在内存占用上一直被人诟病,特别是对于面向移动设备的游戏开发,动辄内存占用飙上一两百兆,导致内存资源耗尽,从而被系统强退造成极差的体验。类似这种情况并不少见,但是绝大部分都是可以避免的。虽然理论上Unity的内存管理系统应当为开发者分忧解难,让大家投身到更有意义的事情中去,但是对于Unity对内存的管理方式,官方文档中并没有太多的说明,基本需要依靠自己摸索。最近在接手的项目中存在严重的内存问题,在参照文档和Unity Answer众多猜测和证实之后,稍微总结了下Unity中的内存的分配和管理的基本方式,在此共享。

虽然Unity标榜自己的内存使用全都是“Managed Memory”,但是事实上你必须正确地使用内存,以保证回收机制正确运行。如果没有做应当做的事情,那么场景和代码很有可能造成很多非必要内存的占用,这也是很多Unity开发者抱怨内存占用太大的原因。接下来我会介绍Unity使用内存的种类,以及相应每个种类的优化和使用的技巧。遵循使用原则,可以让非必要资源尽快得到释放,从而降低内存占用。

Unity中的内存种类

- 阅读剩余部分 -

Unity prefab实例属性不随预制源改变的问题

现象

今天遇到一个修改了prefab源的属性后,prefab实例属性不随着改变的问题。

操作步骤:

  1. 在Unity Editor中创建prefab对象Player;
  2. 托一个Player的实例p1出来;
  3. 修改Player预制对象的z属性;
  4. p1的z属性未跟着变;

在Unity组件手册中这么说的:

Inheritance 继承

Inheritance means that whenever the source Prefab changes, those changes are applied to all linked GameObjects. For example, if you add a new script to a Prefab, all of the linked GameObjects will instantly contain the script as well. However, it is possible to change the properties of a single instance while keeping the link intact. Simply change any property of a prefab instance, and watch as the variable name becomes bold. The variable is now overridden. All overridden properties will not be affected by changes in the source Prefab.

继承是指当预置源发生变化,这些变化将应用于所有已链接的游戏对象。例如,如果添加一个新的脚本到预置,所有已链接的游戏对象都将立刻包含该脚本。但是,它有可能改变一个单独实例的属性,同时保持链接。改变任何一个预置实例的属性,可以看到变量名称变为粗体,现在该变量可以被重写,所有的重写属性不会影响预置源的变化。

那么,p1.z应该随着Player.z改变才对。

解决

- 阅读剩余部分 -

[转]Skinned Mesh原理解析和一个最简单的实现示例

讲述骨骼动画的资料很多,但大部分都是针对 DX8 或 DX9 的 SkinnedMesh 进行讲解。我觉得对于骨骼动画初学者增加了不必要的负担,还没有理解骨骼动画的实质就已被 DX 复杂的架构搞得晕头转向了。这篇文章把注意力集中在骨骼动画的基本组成结构和原理上,并实现了一个最简单纯手工的自定义骨骼动画例子帮助理解(使用最简单的 OpenGL 指令,甚至没有使用矩阵)。这篇文章在我学习理解骨骼动画的过程中逐步完善,是对这个技术的理解总结,属于学习笔记。学习过程中参考了很多资料,其中给我启发最大的是 Frank Luna 写的 ”Skinned Mesh Character Animation with Direct3D 9.0c” 。由于本人自身也是初学者,所以错误和不精确的地方在所难免,欢迎指正和讨论,请发邮件到happyfirecn@yahoo.com.cn

或加入3DGameStudy邮件列表:http://happyfire.googlepages.com/3dgamestudymaillist 。另外文本不涉及任何高级骨骼动画技术,也不涉及 DX 架构的 SkinnedMesh 技术和硬件加速,但本文中会引用 SkinnedMesh 中的约定俗成的名词,如 Transform Matrix , Bone Offset Matrix 等。

一) 3D 模型动画基本原理和分类

- 阅读剩余部分 -

Unity3D工程版本管理方案

Unity进行多人协作开发时必定会涉及资源、代码、配置的版本管理。这里介绍一下用SVN、GIT或其它版本管理系统进行Unity工程版本管理的方法。

新建一个Unity工程,目录结构基本是这样的:

  • Assets、Library、ProjectSettings目录
  • 运行时还会多出Temp目录
  • 如果用Monodevelop或VS打开过还会生成一堆工程文件

最终大约是这样:

- 阅读剩余部分 -