阅读笔记 - Horizon Zero Dawn 广袤世界中的玩家漫游

2017-08-29
阅读 4 分钟
2.3k
最开始我是忽略了这篇演讲的,因为Player Traversal是啥并没看懂- -b后来看到 @顾露 大神在技术选荐中推荐了它,才拖下来看了看。没想到这篇讲角色Locomotion的演讲中信息量意外的大,而且很细致,会贴心的把一些比较入门的实现细节也配图讲出来。以至于我看到最后甚至希望把它的阅读笔记分享出来。 ——希望此文可以帮助...

解耦的本质是什么?

2017-03-28
阅读 1 分钟
4.5k
我向通信的对方发送了数据,或者发起了事件,如果不需要知道对方拿我的数据做什么用,怎么用,就是真正的解耦。如果我的逻辑需要清晰的知道通信对方拿我的数据用来干什么,如果不知道会破坏逻辑,就不是真正的解耦。

重新实现unity3d的Mecanim动画混合 (2) 2D Freeform Cartesian

2016-09-09
阅读 3 分钟
6k
2D Freeform的两个方式在计算开销上要比Simple大一些。其中Cartesian算法比较简单,Directional的方法要基于Cartesian,所以本篇先讨论这个算法。

重新实现unity3d的Mecanim动画混合 (1) 2D Simple Directional

2016-09-01
阅读 6 分钟
5.8k
最近自己在写动画系统,为了能够支持最基本的Locomotion,不得不实现BlendSpace。为此深入研究了一下unity里的BlendSpace实现。这个算法比我原本想象的要复杂,从网上也不大好找资料,所以我把这几个2D Space Blending的权重计算方法写出来。一篇写一个混合类型,今天就先从所谓的'Simple' Directional开始。

unity3d 半透明物体DrawCall控制中的一个小细节

2016-06-03
阅读 2 分钟
5.9k
在我们的游戏场景中,有一个场景物件是由三个半透明面片组成的,他们三个使用的是同一个材质球,但是夹在中间的这个片美术用插件对它做了uv动画,一旦启动游戏就会实例化成为一个独立的材质球。在进行DrawCall检查的时候发现中间这层片一旦隐藏,就会导致降低2个DrawCall。最开始以为是材质的问题,仔细看了Shader之后看...

unity3d 理解Graphics.BlitMultiTap

2016-05-08
阅读 3 分钟
7.2k
如果你学习unity3d官方的Image Effects包中的Shader,可能会看到这个方法。unity的文档对它并没有一个很明确的描述(链接)

unity3d ~黑科技~ (转)给你自己的编辑器窗口添加小锁图标!

2016-05-02
阅读 2 分钟
6.6k
先给原文磕个头:[链接] 还记得Inspector右上角那个小锁图标吗?其实我们自己的窗口也可以添加它,这都得感谢unity 4.0偷偷添加的一个功能! 现在通过一个"IHasCustomMenu"接口你就可以给自己的EditorWindow右上角添加图标。 下面是例子(无节操的照搬了原文): {代码...}

unity3d ~黑科技~ 使用代码控制Inspector(或Project)Window的锁定开关

2016-05-02
阅读 1 分钟
5.2k
如果不知道图片在表达些什么,请仔细看Inspector右上角的小锁头。。。。 {代码...}

unity3d 分分钟把unity3d的SceneView变成2D画布

2016-05-02
阅读 3 分钟
8.4k
炒鸡简单,SceneView里提供了一个字段叫做in2DMode,开启它会使SceneView的摄像机变成正交相机并且锁定在Z轴上。以下代码呈现了这种切换的主要部分:

unity3d ~黑科技~ 打开一个无边框窗体

2016-05-02
阅读 1 分钟
5.8k
直接上图 {代码...}

unity3d ~黑科技~ 在Inspector中单独显示一个组件的信息

2016-05-02
阅读 1 分钟
4.7k
一般选中一个Component的话,unity会直接帮你选中它的GameObject。有时候自己写编辑器的时候对于一些重型组件可能占用的面积比较大,编辑它的时候希望能够专注编辑这一个组件的信息。此时你可以通过这种方式来选中这个组件,让Inspector只显示一个组件。

unity3d 从今天开始在专栏里汇总一些自定制编辑器的代码片段

2016-05-02
阅读 1 分钟
3k
之前几年为了做编辑器其实经常会挖一些unity内部代码,有些东西记下来了有些东西用完就丢掉了。从3.X发展到今天,一些原来不得不使用反射挖出来的编辑器功能已经逐步开放给了开发者。

unity3d 在安卓平台通过Native接口直接读取apk中assets目录下的文件

2016-04-02
阅读 2 分钟
7.8k
Android操作系统提供一个AssetManager类来加载这类Raw文件,在unity3d中可以直接通过unity提供的JNI封装来调用这些接口达到读取数据的目的。原理虽然非常简单,不过在实际操作过程中还是有一些调用约定,unity3d的JNI文档没写什么东西,JNI官方文档又太庞大。所以我还是把能够运作的代码直接分享出来,希望需要的人能够...

unity3d 关于AssetBundle的一些处理细节

2016-01-20
阅读 2 分钟
8.2k
最近给项目改造AssetBundle系统,又重新摸起了AssetBundle这块儿。。因为现在使用4.x版本的情况已经越来越少,而在5里面unity3d已经原生支持了依赖分析增量构建等重量级功能,所以我就不再浪费篇幅去讲系统设计相关的话题。我花了一些时间做了一些小实验,可以明确一些unity3d在AssetBundle上的处理细节。希望看到这篇文...

[译] GLSL 中的视差遮蔽映射(Parallax Occlusion Mapping in GLSL)

2015-10-28
阅读 16 分钟
19.5k
关于渲染的中文文章可谓是少之又少,而很多书和中英文技术文章总是大篇幅的进行晦涩难懂的公式推导,这种方式确实表达准确,可苦了数学不好的娃,能找到一篇好的材料进行学习真的是一件很不容易的事情。

unity3d 使用BehaviourMachine时遇到的神坑——关于节点执行时机的种种

2015-09-12
阅读 9 分钟
7.1k
BehaviourMachine(下文简称{b})是一个把BehaviourTree和HierachicalFSM整合到一起的一个系统。BT中的一个节点可以是一个状态机,状态机中的一个状态可以是一个BT,听起来就特别适合用来创建高度复杂的层次化逻辑,你可以感受到前所未有的逻辑组织能力。上手之后给我的感觉是功能比较清晰,编辑器直观易用,除了内置的Ac...

在android系统下开启App的沉浸模式。(在cocos2d 3.6 中实现游戏全屏/隐藏系统菜单)

2015-06-26
阅读 6 分钟
8.4k
经过实践证明,谷歌在安卓4.4之后提出了一个Immersive Full-Screen Mode的概念(官方文档),我们需要做的是进行和它相关的设置。 你可以在AppActivity中写一个函数

cocos2d-x 2.2.0 控制lua脚本加载时的搜索路径

2014-04-02
阅读 2 分钟
12.3k
在lua语言中,require语句搜寻模块有一个内置的顺序,并且可以通过package.path来维护模块的搜索策略。 但是在cocos2d-x中,不是这样!

cocos2d-x 2.2.0 如何在lua中注册回调函数给C++

2014-04-02
阅读 4 分钟
9.8k
cocos2d-x内部使用tolua进行lua绑定,但是引擎并没有提供一个通用的接口让我们可以把一个lua函数注册给C++层面的回调事件。 翻看引擎的lua绑定代码,我们可以仿照引擎中的方法来做。 值得吐槽的是,这套流程在开发中几乎是不可避免的,而cocos2d-x竟然不把它作为一个公用接口暴露给开发者,而需要我自己动手,真是无奈。

cocos2d-x 2.2.0 如果你在iOS上使用luajit出现了 "bad header in precompiled chunk"

2014-03-22
阅读 1 分钟
9.8k
请注意cocos2d-x在iOS平台上默认并没有使用luajit运行时,而是lua运行时。 请在你的项目中移除所有对lua源文件和头文件的引用,加入luajit的头文件,并且把libluajit.a加入到你项目的链接库中。

cocos2d-x 2.2.0 如何取得安卓设备的类型

2014-03-20
阅读 2 分钟
6.5k
android SDK中有一个类android.os.Build里面提供了若干个静态成员,通过他们可以获取关于设备的各项信息。 在cocos2d-x中可以通过jni访问到它们。 下面是我使用时的代码可以作为参考。

cocos2d-x 2.2.0 CCUserDefault在安卓系统下不能正确保存的问题

2014-03-20
阅读 1 分钟
3.3k
但是—— 是我眼瞎了吗? 用于win32的CCUserDefault.cpp和用于android的CCUserDefaultAndroid.cpp中 对于flush()的实现都是空的。 好吧,总之在手机上测试确实非常立竿见影。 无论如何,请在修改数据后手动调用flush,而不依赖系统的自动flush,保持一个良好的编码习惯。