About

Posts by :

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

Unity教程之-IOS和Android Unity游戏引擎的集成AdMob

 

如果您使用Unity 游戏引擎,则可以使用官方支持的插件在 Unity 开发环境中编写脚本,以将横幅广告和插页式广告投放到 Android或 IOS游戏中。

一:要求:

1:Unity 4或更高版本

2:Google移动广告SDK

二:将插件导入到游戏中

1:在Unity 编辑器中打开您的项目。选择“Assets”(资源)→“Import Package”(导入程序包)→“Custom Package”(自定义程序包)并找到您下载的GoogleMobileAdsPlugin.unitypackage文件。

2:确保选择所有文件,然后点击Import(导入)。 More

Unity教程之-Hierarchy视图监听gameObject点击事件

 

前几天有朋友问过我怎么监听sceneview 和 hierarchy视图选择某个gameObject的事件,今天干好有时间我就研究研究。

下面的这两个代理事件大家都知道吧?其实都可以干这件事,但是不完美。因为每一帧都会调用一下,才能做判断

EditorApplication.hierarchyWindowItemOnGUI

EditorApplication.update

我觉得最好的办法,还是说当我选择某个gameObject的时候,由unity回调给我一个事件。所以我又找到了一个不完美的解决方法。在你需要监听点击的gameObject的脚本上添加如下代码。OnDrawGizmosSelected 就是选择的回调。但是它可能会回调多次,所以要进行一次判断保证它只执行一次。 More

Unity教程之-Unity5.3中新增加的特性Attribute

 

本篇文章我们来看下unity5.3中新增的特性PreserveAttribute ,PreserveAttribute可从删除的类、 方法、 字段或属性的字节代码中剥离出来 。
当你创建一个build 时,Unity 会尽量从您的项目中去掉不用的代码。这是最大限度的得到最小生成 。然而,有时你想要一些代码来不被删除,即使它看起来好像没有什么用 。如果你使用反射 来调用方法 或 实例化某个类 的对象。您可以使用[Preserve] 特性应用于 类、 方法、 字段和属性。除了使用 PreserveAttribute,你也可以使用 link.xml 文件的传统方法  来告诉链接器不删除的东西。PreserveAttribute 只在 IL2CPP 平台上运行。Link.xml 文件的工作于 Mono  和 IL2CPP 平台。 More

Unity教程之- UGUI分页效果的实现

 

今天想和大家分享的是uGUI中分页效果的实现,我们知道相对NGUI来说uGUI在功能覆盖上来讲,它并没有像NGUI那样提供较为丰富和炫酷的组件,可是因为uGUI有着较好的扩展性,因此我们可以通过编写脚本来扩展它的功能。虽然在移动开发时代以开发速度论成败,可是这并不是我们“不求甚解”的正当理由。每次看到NGUI各种”丰富”的组件在脑海中打转的时候,每次看到编译项目时弹出各种Warming的时候,我内心是如此地期望有这样一个简单高效的UI系统啊,直到有一天我遇上了uGUI。 More

Unity教程之-Unity5中的particle(粒子)缩放

 

关于Unity 5 中的例子缩放,搜索了半天竟然还有人说:As far as I know that is not possible to do from code. 后来在assetstore找到一款插件Particle Scaler,这货居然还需要10刀, 居然只能在编辑器中使用,在运行中然并卵的节奏还是让人疼,我表示很不满啊!

然后功夫不负有心人!!!找到了解决方案。废话不说,贴上代码 More