Unity教程之-Unity3d Auto Create Editable Copy Font

 

Unity中咱们经常对字体做Create Editable Copy,虽然已经非常方便了,但是实际使用场景中,有时候会有不方便的地方。

  1. 我们经常对同一个字体做不同字体大小的Copy,这个时候,每次都去修改font的属性,非常之蛋疼。
  2. 本地化翻译文件导出的文字需要手工加到字体属性中,如果同一个字体还有不同大小,更蛋疼了。
  3. 以上你都可以忍了,但是你再次Create Editable Copy之后,你发现场景中已经使用了改字体的Text组件全显示Miss Font

已经不能忍了……

咱们脚本搞定这事,具体实现后效果
1. 用配置文件指明需要使用的font name,font size,导出的字符集内容
2. 根据配置文件Create Editable Copy,同时保证场景中已存在的组件不丢失字体 More

Unity教程之-Unity3d 帧事件管理器

 

大家在开发 Unity 的时候,肯定使用过 MonoBehaviour 中的 Update 函数,在每个类中调用 Update 有很多优点,当然也有非常多的缺点,下面我们说说他的优点与缺点。

优点部分(不完全)

1、方便,每个逻辑单独处理,比如每个子弹对象控制每个子弹的移动轨迹等等。

缺点部分(不完全)

1、每个类的 Update 函数都会自动运行,禁止自动运行一是禁用脚本,但是禁用脚本之后,其他的固定执行函数将无法继续进行,二是添加状态判断,这样又会增加每个类的执行效率开销。
2、每个类的 Update 执行顺序不能统一,比如一个子弹每帧移动 5 像素,另一个子弹每帧移动 5 像素,但是不能保证他们能在同帧中同时到达目标位置。
3、暂停比较麻烦,比如我们希望场景中的某些角色停止一分钟,这个时候我们最常用的就是添加一个状态,然后在 Update 中判断这个状态值,但是这样会增加每个类的执行效率开销。

因为以前在开发 FLASH 游戏的时候,会经常使用帧管理器来统一管理游戏的运行,因为这样可以保证游戏对象都有统一的节奏,在一个帧中可能执行的逻辑有些复杂,但是这会确保游戏对象都有统一的时间延迟,根据以前的经验,用 Unity 实现了一个帧管理器,这样做的好处是只需要几个少数的 Update 函数就可以管理游戏中所有的对象节奏,保证逻辑统一,并且有序。

主要的类只有两个,一个是 FrameItem.cs 类,代码如下:

More

Unity教程之-unity3d扩展NGUI限制UI点击响应间隔

 

游戏开发中,当某个按钮按下后给服务器发送某条消息,

如果玩家短时间内疯狂点击按钮很多次,这将会给服务器发送很多条无用数据

不但增加了服务器的压力,发送数据还浪费流量,甚至可能引发一些莫名其妙的bug

所以,限制UI点击相应间隔的小东西就诞生了

当然,你也可以用其他一些方法来实现,不一定非要用我这种方法 More

Unity教程之- iTween插件用法总结

iTween是一个动画库,用它可以轻松实现各种动画、晃动、旋转、移动、褪色、上色、控制音频等

iTween 支持的功能:
  • 控制音频:AudioFrom、AudioTo、AudioUpdate、Stab
  • 控制相机:CameraFadeAdd、CameraFadeDepth、CameraFadeDestroy、CameraFadeSwap、CameraFadeFrom、CameraFadeTo、CameraTexture
  • 变色控制:ColorFrom、ColorTo、ColorUpdate
  • 绘制相关:DrawLine、DrawLineGizmos、DrawLineHandles、DrawPath、DrawPathGizmos、DrawPathHandles
  • 淡入淡出:FadeFrom、FadeTo、FadeUpdate
  • 视角控制:LookFrom、LookTo、LookUpdate、LookType
  • 移动控制:MoveAdd、MoveBy、MoveFrom、MoveTo、MoveUpdate
  • 路径操作:PutOnPath、PointOnPath
  • 旋转操作:RotateAdd、RotateBy、RotateFrom、RotateTo、RotateUpdate
  • 缩放操作:ScaleAdd、ScaleBy、ScaleFrom、ScaleTo、ScaleUpdate
  • 震动控制:ShakePosition、ShakeRotation、ShakeScale
  • 其他:Count、PathLength、EaseType(衰减类型)、FloatUpdate、Hash、Init、Pause、Resume、Stop、StopByName、PunchPosition、PunchRotation、PunchScale、RectUpdate、ValueTo、Vector2Update、Vector3Update

More

Unity教程之-Unity3d人工智能确定性AI算法之追踪算法三

 

继续前两篇文章《Unity教程之-Unity人工智能确定性AI算法之追踪算法二》、《Unity教程之-Unity人工智能学习确定性AI算法之追踪算法(一 )》,本篇文章我们来学习下接下来就是要进行更为精准更智能的追踪。首先看下效果图

Unity3d人工智能确定性AI算法之追踪算法

在接下来的代码演示Demo中我重新设计了几个类,一个是PlayObject,这个类其实也没有什么新的东西,都是之前已经介绍过的,无非就是速度向量、位置以及移动控制等它的代码设计如下: More

Unity教程之-Unity3d自动计算所有包围盒的中心点

 

在unity3d开发中,相信程序有时候拿到的模型transform中心点远离模型十万八千里,美术在做场景的时候可能会出现这个,与其相信美术或者策划我觉得程序要更相信自己!下面我们来看下在Unity3d自动计算所有包围盒的中心点来使模型transform中心点居中!贴上代码先 More

Unity教程之-Unity5.x版本AssetBundle加载研究

 

之前说了 “unity4.x版本AssetBundle打包研究”,没看过的请先看一下《Unity教程之-Unity3d打包Assetbundle并加载》,再来看本文,有一定的连接性。

先梳理一下思路:
要加载一个资源A,必须先去加载它的所有依赖资源
要知道这个资源A依赖了哪些资源,必须先去加载AssetBundleManifest
通过AssetBundleManifest对象的GetAllDependencies(A)方法,获取它依赖的所有资源。
依赖资源都加载了,就可以去真正加载资源A了。 More

Unity优化之-Unity3d游戏场景优化之批处理

 

一、什么是批处理?

我们知道Unity3D在屏幕上绘制一个图形本质上调用OpneGL或者DirectX这样的API,因此在这个过程中会产生一定程度上的性能消耗。DrawCall是OpenGL中描述绘制次数的一个量,例如一个基本的OpenGL绘制流程是设置颜色->绘图方式->顶点坐标->绘制->结束,在绘制的过程中每帧都会重复这个过程,这就是一次DrawCall,所以当游戏中的绘制过程变得复杂的时候,就会带来DrawCall的急剧增加,进而带来游戏的性能问题,反映到游戏表现上就变成了优化问题。那么在Unity3D中采取了什么样的措施来降低DrawCall呢?这就是我们今天要说的批处理,换句话说Unity3D使用了批处理来达到降低DrawCall的目的,批处理希望通过对物体网格的重组来获得更高的绘制效率,试想以下如果将多个物体合并为一个物体,那么在绘制的时候只需要绘制一次就够了,因此从这个角度上来讲这样做肯定是可以降低DrawCall的,更深刻的一种理解是这里体现了一种资源循环调用的思想,接触过Android开发的朋友们一定知道ListView控件可以对其元素进行“缓存”从而提高效率,因为我们可以发现其实ListView是对列表项进行某种程度上的“复用”从而提高了效率,在Unity3D这里同样遵循了这个原理。在Unity3D中进行批处理的一个前提是相同材质的物体可以被合并,如果这些物体使用不同的材质,那么当我们把这些材质对应的纹理打成“图集”以后可以对其进行合并,并且在合并的时候应该是用Renderer.sharedMaterial 而非 Renderer.material以保证材质是可以共享的。关于DrawCall的相关细节大家从这里来了解,博主并未对图形学领域有过深入的研究,因此就不在这里班门弄斧了啊,哈哈! More

Unity教程之-鼠标右键点击文件夹用Unity5打开项目的实现

 

写了这个小小的 reg 注册表 文件,因为我厌倦了必须通过Unity导航到文件夹 来打开它们。  如果文件夹很容易接近,比如在桌面上 就很不方便。
不必经过Unity打开,导航到一个文件夹中的所有工作的日子已经一去不复返了。现在使用此 注册表文件,你只需右键单击文件夹 就会用Unity自动打开这个项目。如果您使用了先前版本的Unity (4 或更早 ) 请注意,您的文件夹将是  c:\program files(x86) 不是  c:\program files ,先看下最终效果!

More

Unity教程之-游戏人工智能开发之6种决策方法

 

人工智能遵循着:感知->思考->行动
决策方法:有限状态机(Finite-State Machines),分层状态机(Hierarchical Finite-State Machines),行为树(Behavior Trees),效用系统(Utility Systems),目标导向型行动计划(Goal-Oriented Action  Planners),分层任务网络(Hierarchical Task Networks)
More