UGUI教程之-UGUI 实现刮刮卡橡皮擦

 

有个朋友问我怎么在Unity中使用 UGUI 实现刮刮卡功能,之前确实没有做过,但我想了下,应该使用 Shader 可以达到。于是花了点时间实现了下改功能。看下最终效果图

UGUI 实现刮刮卡

More

Unity教程之-unity3d中的JSON序列化传输数据

 

JSON 序列化功能和从 JSON 格式 转换到 对象。与 web 服务交互,或只是为了打包和拆包数据 到一个基于文本的格式很容易,这可以非常有用。

使用简单
JSON 序列化功能是围绕一个‘structured’的 JSON,意味着你描述变量将要存储在您的 JSON 数据中通过创建一个类或结构的概念。例如: More

Unity教程之-Unity游戏技能Skill系统架构设计

 

我想把技能做的比较牛逼,所以项目一开始我就在思考,是否需要一个灵活自由的技能系统架构设计,传统的技能设计,做法都是填excel表,技能需要什么,都填表里,很死板,比如有的技能只需要1个特效,有的要10个,那么表格也得预留10个特效的字段.在代码里面也是写死一些东西,要增加和修改,就得改核心代码,如果我要把核心部分做成库封装起来,就很麻烦了.

能不能做成数据驱动的方式呢?

改技能文件就行了,即使要增加功能,也只需要扩展外部代码,而不用改核心代码,

我是这么来抽象一个技能的,技能由一堆触发器组成,比如特效触发器,动作触发器,声音触发器,摄像机震动触发器等等,这些触发器到了某个条件就执行触发,触发条件一般是时间,如果有比较复杂的浮空技能,可以增加落地触发等.

自定义一个技能文件,代替excel表格,看起来是这样:

简单的技能:

每一行都是一个触发器,这些触发器,到了某个条件会自动触发.

上面的意思就是,第0秒开始面向目标,第0秒开始播放动作1000

复杂的技能: More

Unity教程之-调整画质(贴图)质量解决锯齿问题

 

当我们在Unity中,使用图片进行2D显示时,会发现显示出来的画面有明显的模糊或者锯齿,但是美术给的原图却十分清晰。

要改善这一状况实际上很简单。

造成这样的原因,是Unity在导入图片(或者纹理)时会自动进行压缩,以便减少运行时游戏的内存占用率,提供性能。

注意:下面实例使用的Unity版本为4.3.4。版本不同的话可能某些显示不完全相同,但关键点是一样的。 More

Unity教程之-Unity3d在安卓android的更新(APK覆盖)

 

其实这并没什么技术难点,也不是完美的热更新方案,只能说是退而求其次的一个方法。

起因主要是因为公司几个U3D项目在立项之初都没有能做好热更新的规化,导致现在要去做U3D的热更新非常难,并且项目已处于中后期,大部分的方案不管是用反射,还是用Lua,或是jsbinding,都需要把项目大部分代码结构推倒重来,这是非常不现实的。于是退而求其次,选择还是直接用最小APK来更新游戏。 More

Unity教程之-解析OBJ模型并将其加载到Unity3d场景中

今天想和大家交流的是解析obj模型并将其加载到Unity3D场景中,虽然我们知道Unity3D是可以直接导入OBJ模型的,可是有时候我们并不能保证我们目标客户知道如何使用Unity3D的这套制作流程,可能对方最终提供给我们的就是一个模型文件而已,所以这个在这里做这个尝试想想还是蛮有趣的呢,既然如此,我们就选择在所有3D模型格式中最为简单的OBJ模型来一起探讨这个问题吧!

关于OBJ模型

  OBJ格式是一种3D模型文件格式,是由Alias|Wavefront公司为3D建模和动画软件 “Advanced Visualizer”开发的一种标准,适合用于3D软件模型之间的互相转换。和FBX、Max这种内部私有格式不同,OBJ模型文件是一种文本文件,我们可以直接使用记事本等软件打开进行编辑和查看,因此我们这里选择OBJ模型主要是基于它开放和标准这两个特点。需要说明的是,OBJ文件是一种3D模型文件,它主要支持多边形模型(三个点以上的面)。OBJ模型支持法线和贴图坐标,可是因为它本身并不记录动画、材质特性、贴图路径、动力学及粒子等信息,所以我们在游戏开发中基本看不到这种模型格式的,所以我们这里做下简单研究就好。 More

Unity教程之-Unity光照贴图Lightmapping

 

一直没有光照贴图的深入了解,只知道它与灯光比起可以降低drawCall,偶然看到一本外文书上有详细的资料,这里学习并分享一下,下面开始!

一:简要说明一下Unity光照贴图的概念

翻译会有各种偏差,这是外文原文的概念讲解,大概意思是:
下面,我们烘焙一些地图的阴影。因为地图比较大,大概的光照贴图烘焙可以使用光照贴图的内存空间换渲染的时间,节省性能(以空间换时间)。烘焙阴影只能烘焙静态物体,动态的不能烘焙,动态的物体可以通过灯光烘焙,但是达不到全局的配合效果而且还要计算灯光反弹。
如果你用的Unity专业版,你可以有最好的两种阴影,一种是烘焙阴影到地形上,另一种是动态阴影的双光照贴图系统。光照贴图系统会创建两张题图,一张包含所有的阴影的远阴影,和一张包含间接灯光阴影的近阴影。在指定范围内的阴影距离,近阴影贴图使用,阴影距离实时计算,超出制定距离的,则使用远阴影贴图。 More

Unity教程之-Unity中的弹道和移动目标提前量计算

 

弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺复杂的数学。网上这方面的资料还真不多,而且都是写的含含糊糊。抽空总结一下自己的方法。
讨论的前提是,假设目标是在3D空间里以匀速直线方式运动。
1.直线弹道
在不考虑重力和空气阻力影响的情况下,子弹的弹道呈直线运动。这种情况下,其实是个纯平面几何空间的问题,不需要微积分和线代知识。
分析的情况如下图:

图片:tj-1.jpg

Unity中的弹道和移动目标提前量计算
More

Unity教程之-RenderTexture实现实时阴影绘制

 

一般实时阴影主要还在出现在角色、怪物的脚底为了然场景表现的更加逼真,实现起来通常有三种方式:脚底放个阴影图片跟着主角动,通过摄像机的RenderRexture绘制显示,直接使用Unity的Projector组件。 很不幸的是在我们的游戏中直截了当的放了一坨灰背景,实现的效果虽然少了几分逼真性,但如果是2D场景的话也足够用了。
但是如果想要在3D场景绘制脚底阴影,直接放图有点粗暴。本文里的RenderTexture方式实现较为简单效果也会很逼真。
基本思路其实就是多用了一个摄像机,将照相机把你需要照到的主角的内容呈现到一张单独的面片上,这个面片就摆在人较低作为它的阴影。看起来像简单版的一个小地图:只有主角的小地图。
场景中所需要的对象如图,对于map节点显示RenderTexteure的地方只要空的材质球就行了,要呈现摄像机照射的内容。直接用Plane对象或Quad对象都可以的。
场景组件示意
More