Unity教程之-unity3d更改系统默认鼠标指针

 

最近项目需要替换鼠标的默认图标,实现的效果是初始状态为一种图标,点击鼠标左键要换成另一种图标,按网上通用的方法做了以后,隐藏鼠标指针,在指针的位置画一个图片就可以了,但不知道怎么回事,这种方法画的图标总是比真实鼠标的移动位置慢半拍,也就是有卡顿,鼠标移过去了缓一下画的图标才跟过来(这个问题在不同的电脑上卡顿程度不一样,估计是配置的问题)。 More

Unity教程之-次世代手游美术资源的优化

 

次世代,是日本流传过来的叫法,意思是下一个时代,未来的时代,常说的次世代科技,即指还未广泛应用的现金技术。后来这个名次变成了一个人们的习惯,将次世代变成一个名词,用来代表某类具备特定属性的游戏类型。

随着科技的发展,手机硬件不断升级优化,使我们可以在移动端上实现次世代游戏的画面效果。虽然如此,我们还是受到一些硬件限制的瓶颈,我们不可能像之前制作主机游戏那样“肆意浪费、随心所欲”,必须要优化处理各种美术资源,以便在不同的平台,不同的硬件终端上有一个好的游戏体验。

     性能瓶颈有哪些?

对于一个游戏来说,有两种主要的计算资源:CPU和GPU。它们会互相合作,来让我们的游戏可以在预期的帧率和分辨率下工作。CPU负责其中的帧率,GPU主要负责分辨率相关的一些东西。

总结起来,主要的性能瓶颈在于: More

Unity教程之-Unity C#内存和性能优化技巧一

 

游戏开发要学习的第一件事就是不分配不必要的内存。这样做有很充分的理由。第一,内存是一种有限资源,尤其是在移动设备上。第二,分配内存需要消耗CPU周期(在堆上分配和回收都消耗CPU周期)。第三,在C或C++中手动管理内存,每次分配内存都是引入Bug的契机,Bug会引起严重问题,任何地方的内存泄露都会引起崩溃。

Unity使用.Net或者可以说是一个开源替代品Mono。它的自动内存管理解决了大量安全问题,例如,不能在内存被释放后再使用(忽略了不安全代码)。但是,分配和释放内存变得更加难以预测。

More

Unity教程之-基于Unity3d中的Android游戏优化

 

最近项目进入收尾阶段,之前对项目做了很多优化,mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等,在IOS上还好,但是Android上,试过几款手机,从低端到高端,发现性能还是很差,所以又花了几天来研究摸索,终于把游戏性能搞定。记录下来,留作以后参考。

1.    更新不透明贴图的压缩格式为ETC 4bit,因为android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他们都兼容ETC格式,

2.   对于透明贴图,我们只能选择RGBA 16bit或者RGBA 32bit。 More

Unity教程之-Unity3d热更新动态Protobuff协议

 

首先, Proto协议文件是 服务器和客户端所共享的。 服务器根据它生成对应的语言。   客户端根据它生成对应的语言(Unity中就是C#了)

所以可以想象的是:团队的项目中包括了:服务器project、客户端project、ptotoBuff协议project(这些协议由服务器定义就行了, 然后)

ProtoBuf对于很多人而言并不陌生,应该也在很多项目中得以应用了。 那么现在我们就来看看,在Unity中使用的具体步骤。先看看批处理脚本 More

Unity教程之-Unity3d碰撞器与触发器的区别详解

 

前提:要用collider发生碰撞的话必须是使用力来移动物体。如果只是单纯的位置移动(transform.position)使用这种方法是不行的。必须有了物理的力Rigidbody或者charactercontroller移动才可以用collider的碰撞。

正文:

要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。

物体发生碰撞的必要条件:

两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体或者charactercontroller组件

在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。

碰撞器: 一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。

触发器 ,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。 More

Unity教程之-Unity3d中使用手势缩放屏幕和旋转视角

 

unity3d移动平台开发中,手势操作处处皆是,手势操作既可以很简单,也可以很复杂,那么本篇文章我们来看下Unity3d中使用手势缩放屏幕和旋转视角 ,废话不说,贴上代码 More

Unity教程之-在Unity3d中加载外部图片的两种方法

 

最近在做项目的过程中遇到这样的一个需求:玩家可以在游戏过程中进行实时存档,在存档过程中会保存当前游戏进度,同时会截取当前游戏画面并加载到游戏存档界面中。当下一次进入游戏的时候,将读取本地存档图片并加载到游戏界面中。这在单机游戏中是特别常见的一种功能,这里主要有两个关键点。首先是截取游戏画面,这个问题大家可以在《Unity教程之-Unity3d游戏开发之截屏保存精彩瞬间》这篇文章中找到答案。其次是从本地加载图片,因为这里要保证可读可写,因此传统的Resources.Load()方式和AssetBundle方式均无法实现这样的功能。那么怎样从外部加载图片到游戏中,这就是我们今天要讨论的内容啦。好了,这里介绍两种方法来实现这一目的。 More

Unity教程之-Unity3d开发中编辑器Editor的undo撤销操作

 

在Unity3d编辑器扩展中,常常需要兼容Undo的操作即:Cmd/Ctrl + z。在Unity3d对应的接口Undo.RecordObjects可以完成这项工作。

封装

由于它的参数需要我们操作对象的组件,我为他封装了一个操作类。通过托管的方式调用。 More

Unity教程之-Unity3d中光照贴图Lightmapping技术

 

最近的更新有点缓慢,中秋国庆玩的有点high,好了切入正题,今天我们来看下Unity3d中光照贴图Lightmapping技术 ,Lightmapping光照贴图技术是一种增强静态场景光照效果的技术,其优点是可以通过较少的性能消耗使静态场景看上去更加真实,丰富,更加具有立体感;缺点是不能用来实时地处理动态光照。当游戏场景包含了大量的多边形时,实时光源和阴影对游戏的性能的影响会很大。这时使用Lightmapping技术,将光线效果预渲染成贴图使用到多边形上模拟光影效果。

烘焙参数

Object选项卡

“All”组中的参数

More