Unity3.5中内建精简字体字库方法讲解

在Unity3.5中内建了精简字体字符的功能.更加方便,也非常利于修改等等.在此之前一直用FontSbusetPack进行精简.为什么要精简字库集?最简单的一个原因就是为了让Unity发布的移动设备能文本能使用字体来定义样式.

Unity内建的用法很简单,只需选择放入的字体,修改Character项为”Custom set”,接着出现Custom Chars中输入你想使用的字符串,字符重复无所谓,因为最终会自动过滤掉重复字符.如输入”你好世界”,那么整个字体最终只包含”你好世界”这四个字的字符贴图,也就是你仅仅能用这个字库来显示”你好世界”这几个字.最简单的测试办法只选择字体,在GameObject-Create Other-GUIText创建一个使用所选字体的文本标签来测试就可以了.

这里有一个脚本,用于将一个文本文件里包含的字符串读入并赋予给Custom Chars编辑框中.这个脚本特点是可以按照字符重复次数多少排序,即用该文本文件中用的次数越多这个字符会越靠前排列提升读取速度.另外会将键盘上的字母,数字及其他符号自动包含其中.感谢 Unity郭振平 编写和分享该脚本.

首先将下列脚本(见本文附件)保存为”UnicodeTextImporter.cs”文件放项目资源目录里的Editor文件夹内.

然后找个你需要的字体放入项目中,只好选择这字体,在检视面板中设置你需要的字体尺寸,颜色等.然后选择”Character”为”Custom set”.

将你最终用来显示的文本内容以UTF-8编码保存为文本文档存于Assets/Resources(推荐的,放在任意目录下都可)中.

接着在项目视图选择这个字体文件,在Unity顶部菜单选择AssetDatabase-Import Font with Text File,会弹出打开文件对话框. 选择上面存放于Resources文件夹中的文本文件.

成功导入后会显示”ImportFontWithTextFromFile: Final Unicode String: xxxxx”字样.重新选择一次字体且选择字体的贴图会看到类似如下的精简结果.

至此精简工作完成.

如遇读取进来的不正确,有乱码现象,需检查文本编码是否为UTF-8,并且需要重启Unity才能再次正常执行该插件。

附件:点击下载此文件

转载请注明来自1Vr.Cn!

久违的更新-Unity3.5正式版发布!(中文版更新说明)

这应该是我目前翻译的最长一篇没有页数的英文文档了….够累的.就不排版加什么粗体了.

新版下载地址:http://unity3d.com/unity/download

Unity3.5是一次较大的更新.它包含的新功能和改进会让你爱不释手.

Shuriken粒子系统
内建寻路系统
升级遮挡裁切和增加LOD系统
谷歌Chrome浏览器的Native Client支持
线性空间照明和HDR

主要的新功能
Adobe Flash:现在版本支持Adobe SWF格式的Flash输出(预览版).有关Flash预览版相关问题见:http://unity3d.com/unity/publishing/flash
新的粒子系统-“Shuriken”.
可以手动控制时间线来检查,调试和编辑粒子的效果.
新的粒子系统是基于模块的,可以选择使用颜色,尺寸,粒子运动等功能模块.
在层次面板中将多个粒子组成父子关系后播放时将表现为整合后的一个粒子系统.
内建曲线编辑器可以方便通过曲线编辑粒子.
增加寻路和避障系统
NavMesh:寻路的一个API,计算活动范围的导航网格.
NavMeshAgent:角色导航,避障系统.
OffmeshLink:用于创建任意导航网格多边形间的连接.
内建LOD和LOD管理系统.
烘焙的光影图支持LOD的模型,光照贴图将用一种类似法线贴图烘焙的算法处理.
资源缓存服务器(Asset Cache server)
Asset imports用来将资源导入到项目中.Switching Platform几乎是即时切换到另外一个平台的,而不是”切换平台”一个大项目要等上很久.
内建HDR和自适应的色调映射(tonemapping)的支持.
Unity3.5的图像效果包包含了tonemapping,可对HDR进行景深,Bloom等优化处理.
多线程渲染.
在支持多核的系统上支持另外一个CPU内核的渲染和驱动.你不需要做任何处理,它就可以工作.
目前仅支持PC / Mac / Xbox 360,但还不支持Webplayer.
Light Probes:可以实现角色和其他动态对象用烘焙光影.
定向光照贴图.
免费版现在支持通用的版本控制(.meta文件).
现在已经支持谷歌浏览器Coogle Native Client.
基于SerializedProperty的对象允许讲Multi-editing用于自定义编辑器.
遮挡裁切功能重写了代码,修正了错误,速度也更快.
OcclusionPortal组件允许在计算烘焙的时候启用或关闭.
地形系统现在可以正常工作于遮挡裁切.
遮挡裁切默认的模式是”automatic portal generation”,这个处理动态物体非常准确的.
增加”Occludee Static”标志,用于标记不需要使用遮挡裁切的物体.比如没有移动动作的透明物体就要标记未Occludee Static.
基于文本格式的场景文件和预设,可用于改善团队协作流程.每个项目都可以通过Editor Settings开启或关闭该设置.
GPU Profiler:在Profiler中增加对GPU使用的探查.
内存和性能优化及多线程的一些改进.

图像功能:
SkinnedMeshRendererde边界值现在能很好的匹配root骨骼能很好的配合Ragdolls.
UpdateWhenOffscreen的边界值现在使用骨骼边界的相对量,而不是顶点计算了.大约快了100倍.
现在有WebCamTexture类支持摄像头的调用.
Application.CaptureScreenshot的superSize参数可以用来截取高分辨率截图.
给平行光源增加新的柔化阴影模式(rotated disk sampling).
Lightmapping:添加”区域光(Area Light)”灯光类型(仅用于烘焙).
Lightmapping:蒙皮网格可以被烘焙渲染了.用这个烘焙后不会改变网格结构.
高级渲染控制:
图像效果现在可以设置生效范围的使用.使用在OnRenderImage方法中的ImageEffectOpaque功能.
支持Subtractive/Min/Max混合,可以在ShaderLab用BlendOp Min|Max|Sub|RevSub.
多渲染目标支持,Graphics.SetRenderTarget能获得多个颜色的目标。
启用不同颜色目标缓冲间深度缓冲的共享.见Graphics.SetRenderTarget,RenderTexture.colorBuffer等等.

优化图形:
为OpenGL ES 2.0做优化,避免动态几何体出现性能过耗.
优化裁切和阴影的投射裁切.
通过本地代码Plugins能访问更底层的方法:
能够访问到Direct3D 9指针设备.
插件支持渲染线程的回调,所以在Unity3.5中允许多进程渲染器的存在.
Surface Shaders:添加优化颜色修改方法(finalcolor指令).当不支持自身雾效的平台上通过这个方法来使用自定义的雾效(像在Xbox360或者PS3上).
新增renderer.SetMaterialBlock方法为添加重复材质添加不同材质参数.
质量设置的修改:
可以为每个平台启用/禁用Quality settings.如果禁用在目前平台,当编译的时候会忽略Quality levels设置.
最大的LOD级别和LOD bias可以在Quality settings中设置.
如果设置了最小LOD级别将忽略最高LOD级别设置.这样在一些低端设备上能很好的处理忽略掉高模.

编辑器功能:

中间单击场景视图中任意一点都回自动将焦点定位到该点.
新增AssetModificationProcessor类为用户自己创建VCS.
增加IsOpenForEdit检查防止资源被误修改.
检视面板的预览可以单独分离到一个小窗口中.
对Cinema4D R13的C4D文件格式的支持.
改进导入材质类型的检测,当是法线贴图和透明属性的纹理将给与”Bumped Diffuse”,”Transparent/Diffuse”或”Transparent/Bumped Diffuse”.
能导入纹理的Tiling和Offset值.
支持FBX到处器导出的带有烘焙动画的C4D文件(仅支持Cinema 4D R13,旧版本的需要用IK baker来处理).
Mac:添加针对OS X Lion的FullScreen的支持.
可以用PreferenceItem改进选项窗口。
Gizmos有世界空间尺寸,所以也添加了高分辨率的图标。
变换Gizmo有个新的平面两轴变换工具,可以按住”Shift”切换回常规的变换工具.
GUI类增加了DrawTextureWithTexCoords方法用于指定纹理坐标.
可以曲线整体垂直拖动.
Gizmos现在是Depth-tested的存在于世界空间里.可以用尺寸滑块调整Gizmo的尺寸.
改进”静态”复选框,现在可以给物体不同状态做静态标记(光影图,导航网格,遮挡裁切等等).
可以查找某个资源在场景中被哪个对象引用.
PVRTC纹理压缩支持调整压缩比.
新的预设(Prefab)系统允许从实例中删除或添加组件.并保持与老预设兼容性,确保预设不会出现”missing”问题.

音频功能:
启用堆AudioClip的音频缓冲的读取和写入(Get/SetData).
在OnAudioFillterRead()上增加自定义低延迟过滤器来过滤和产生音频混频.
扩展检视面板的界面支持自定义过滤器(出增益和性能).
所有平台都支持麦克风.
可以从脚本访问混合气的设置(缓冲大小和采样率).

iOS特性:
增加对Xcode 4.x的Build&Run的支持.(但是不兼容Xcode3.x,可以从编辑器设置中关闭这个支持).
可以从PlayerSettings中设置重力感应的频率.
Application.targetFrameRate可以用了.所以删除了Xcode项目中的kFPS.默认是30FPS.
添加”Show Loading Indicator”选项,能显示载入进度.
添加Social API来支持GameCenter(不包含matchmaking和语音功能).
添加iAD支持.
添加推送支持.
添加罗盘和陀螺仪的支持.
添加摄像头的支持.
添加麦克风的支持.
贴图导入设置会根据FrameBuffer中的Render Targets来更改格式(最常见的-default Display Buffer).所以你用16位显示缓冲将得到16bit rt (RGB565).这使得图像过滤器能快点也更符合GLES的规范.如果你想使用带alpha通道的图片过滤器或banding,请设置”Use 32-bit Display Buffer”.或者使用新增的Handheld.use32bitDisplayBuffer API.

Android特性:

同样新增”Show Loading Indicator”选项来实现场景加载进度显示.
抗锯齿选项QualitySettings.antiAliasing现在可以用了,可以在运行时或者编辑器中设置AA级别.
新增”Use 32-bit Display Buffer”和”Use 24-bit Depth Buffer”选项.
新增”Screen.dpi”方法来帮助确定高/低解析度的图形的选择.
新增摇杆和USB鼠标的支持-仅在Honeycomb 3.1和新版本中支持.
改进的新文件读入的载入时间.
探查器能探查ADB.
在Gingerbread 2.3或者更新的版本中输入延迟有所改善.
添加罗盘和陀螺仪的支持.
添加摄像头的支持.
添加麦克风的支持.
在Build Settings增加ETC/RGBA16.
新增Honeycomb 3.2 (MR2) 和 Ice Cream Sandwich (4.0)的支持.

其他特点:
更新到MonoDevelop 2.8.2.
增加Social API,目前仅支持GameCenter,后面会支持 Xbox Live.有些功能在不支持的平台上不能运行,但是可以代码可以在编辑器中测试.第三方可以改进它使它支持任何平台.
物理:新增ConfigurableJoint.swapBodies来实现两个年角的刚体主体交换.
AssetPostProcessor可以获得版本.参加AssetPostProcessor.GetVersion.
可以用Cache Server替代Asset Server了.但是要注意要将服务器和项目到3.5版本才可以.旧版本将无法打开这个项目.一定要切记要备份.
添加 Application.StreamingAssetPath来指定 Assets/StreamingAssets的目录.
输入法:添加Input.isIMESelected来确定当前用户选择了输入法.
所有 Editor Settings文件已经转移到ProjectSettings文件夹中.
如果升级旧项目文件目前的设置文件将复制到新文件夹中.所以当你要在3.5中做版本控制需要添加Assets文件夹和ProjectSettings文件夹.

改进:

Android

添加AndroidJavaRunnable到脚本中给Java代码.
勾选development编译时能自动解锁设备.
当用NativeActivity时将把触摸或者键盘事件编译到native代码中
移出当从没必要的GL菜单中返回返回一个应用的延迟.
相对于项目路径储存商店的keystore文件.

音频:
可以从脚本更改混频器采样率和缓冲区尺寸.
在Webplayer下AudioClip::GetData()也进行域的安全检查.
子定义的DSPs(OnAudioFilterRead)现在遵循一起的音源设置(静音,衰减曲线等等).
可以从脚本访问麦克风的频率,可以用于Record().
多通道(大于两个)OGG文件现在能正常编码和播放.
引进non-blocking waveform渲染器(更高的分辨率和更好的前景).

文档:
在手册中添加新功能(Shuriken粒子系统,导航网格和LOD).
修正IE浏览器代码格式问题.
修正很多范例代码.

编辑器:
修正Mac/Win系统上编辑器的”Generate Lightmap UVs”差异.虽然没完全一致但是大部分是相同的了.需要重新导入网格和重烘焙.
当LOD组创建后现在会更新到场景中并且能将这些设置发回导入器.
Layer选择菜单添加”全选”和”取消选择”项.
API:添加可选参数includeChildren到PropertyField用来允许一个方法控制整个类或者一个数组.
API:开启GetIconSize 和 SetIconSize.
API:DrawDefaultInspector可以用了.
APi:PropertyField根据它所处位置做相应缩进.
优化大型项目文件夹导入.例如检测并刷新一个资源现在大约快十倍.打开一个已经导入过的项目快50倍左右.
音频片段现在用静态预览系统.这意味着音频片段现在在对象拾取器或浏览器中可以预览.
增加”Break”预设菜单项在GameObject菜单(Break按钮从检视面板中移出了).
曲线编辑器的选择改进:如果重叠的多条曲线,能保证总是选择最上面的一条线.
Debug.DrawLine 和 Debug.DrawRay 现在可以在Depth-testing时禁用或开启.
确保当选择不同对象,进入或退出播放模式时地形画笔设置不重置.
EnumPopup元素字符串现在是”nicified”.
修正各种导入项目问题,其中有种崩溃可能会导致整个项目重新导入.
改进EditorGUI的BeginChangeCheck,EndChangeCheck, BeginDisabledGroup, EndDisabledGroup作为GUI.changed 和 GUI.enabled的更高级别设置.
导入设置现在在检视面板的上部了.
提高编辑器主体配色的响应.
Lightmapping窗口, Occlusion窗口,和Navigation窗口现在有为了快速拾取相关对象基于类型的过滤器.
为SerializedProperty API增加intValue为了LayerMask类型.
检视面板能快速显示亚洲字体字距等信息,导入时也能显示进度条.
LOD组编辑器的改进.
改进网格框选的精度.
增加EditorGUIUtility.isProSkin方法.
物体能被分别编辑为occluders和occludees.
优化在层次面板更改父物体的性能.
微调导入/导出Package对话框.
场景视图的FPS默认会慢一点.还会有加速.
当Transform超过100.000单位的时候将显示警告.
在Navigation窗口可以改变选择对象的Navigation Static标志.
可以通过滑块来变换Gizmo.
启用或禁用组件可以使用撤销/重做.
Unity现在能导入大于6.5万个顶点的模型了.会自动切分为若干个小于6.5万个顶点的网格.
升级FBX SDK倒2012.2.
当很快速的用滑块,相关的数值将会做四舍五入似的大范围变化.如果是手动输入数值则不会进行四舍五入.
当多选不同类型的对象时,检视面板将自动帮助你只显示共同的属性.
现在可以在字体导入器中更改默认字体颜色了.

图像:
着色器关键字最大数量从32扩展到64.
每个着色器的编译错误都将显示已用关键字.
MaterialPropertyBlock现在可以有无限个属性.
OnWillRenderObject可以让你在渲染之前选择或稍微移动一个对象.这个可用于渲染通道.也可以只有在对象可视的时候启用”布告栏”效果.

光影图:
暴喽Padding选项可以控制烘焙UV的间距.
改进光影图的mipmap的创建,更改间隙填充,使得通过Mipmap缩小后的光影图整体感觉依旧不错.
优化烘焙光照贴图占用内存.

iOS:
增加Caching.SetNoBackupFlag 和 Caching.ResetNoBackupFlag 为给缓存设置”No Backup”标志.
增加iPhone.SetNoBackupFlag 和 iPhone.ResetNoBackupFlag 为设置”NoBackup”标志.
新添加的对象将默认设置”No_Backup”标志.

脚本:
JavaScript::创建新脚本时默认将自动添加”#pragma strict”.
JavaScript:当按位运算符是用在布尔操作时会建议用短布尔运算符.
JavaScript: @脚本属性声明可以在”import”之前.
JavaScript:可以定义和文件名同名的变量而不会再产生冲突.
Boo:支持语法提示.
Boo:Selective导入支持.
Boo:更好的Linq和扩展方法的支持用import System.Linq就可以了.
Boo:优化多维数组操作(某些情况下提速100多倍).

杂项:
资源导入:优化纹理导入的临时内存占用.
Asset Server:可以在管理视图复制项目.
Mac OS X 单机 :添加关闭按钮.
模型导入:警告四元数的警告现在包含模型名,大多数情况下能点击后在项目视图中高亮该模型.
MonoDevelop (JavaScript/Boo):添加有限的跳转到定义的支持.
遮挡剔除的烘焙现在不会耗尽内存.
遮挡剔除现在能很正常的计算遮挡并且也快了很多.并能工作于所有平台.
Player:当用Resources.Load/LoadAll时会预加载资源,避免卡帧.
Profiler:增加二进制Filedump文件的写出支持及编辑器中再读入分析的支持.
优化大型项目文件导入时内存占用.
脚本:增加Handheld.use32bitDisplayBuffer用于运行时更改显示缓冲的位深度.
脚本:添加WWW.textureNonReadable来标记下载的非可读文件.
SkinnedMeshes现在可以编辑为occluders和occludees.
Substance纹理的导入问题进行修复.
静态Batch网格的创建生长过程及编辑器播放模式都快了很多.
支持自动复制 Assets/StreamingAssets文件供Win/Mac执行文件用.
展UV:目前所有已知情况下,Win/Mac的展的UV都是一致的.不过要重新导入网格.
Webplayer:如果Unity3D文件嵌入使用Https协议,那么所有连接都将使用Https,包括插件的更新和下载,浏览器不会安全警告.
当进行遮挡剔除的烘焙时,如果标记为封堵的物体是透明的,将会发出警告告诉你哪些被错误标记.
当导入的资源被脚本修改过,它将不再导致资源重新导入.相反它将卸载资源和尽快从磁盘重载.这个修正解决关闭播放模式后很多资源是否需要重新导入取决于Unity的脚本.
Windows:当运行时检测连接的摇杆.

修正:
Android:
修正Texture2D.EncodeToPNG() / Application.CaptureScreenshot()产生错误的图片.
从OnApplicationPause()中调用Application.Quit产生异常的问题.
修正调用Network.TestConnection()导致应用程序崩溃的问题.
修正从OnApplicationPause()中调用Time.<方法>导致程序无响应的问题.
极少情况下从Java UI线程里调用游戏脚本会导致崩溃问题.
修正Broadcom芯片上GLES 2.0的一个渲染问题.
修正在Honeycomb/IceCreamSandwich设备上用自动转屏或任一个转屏导致崩溃的问题.
修正非开发版编译中对Debug.log的错误消息的处理保持运行性能.
修正视频回放用本地(file://)源的问题.
修正解码处理ETC1纹理的问题.
交换在编辑器中的HTC Legend分辨率或长宽比设置.
JDK7中可以正常签名应用程序而不会提示INSTALL_PARSE_FAILED_NO_CERTIFICATES错误.
Java中JNI编组空字符串导致虚拟机终止.
Basic/Pro版许可在一些地方不正确.
保存初始化的状态包Activity.onCreate不再转发Proxy活动.
当使用Application.internetReachability时更新AndroidManifest.xml的权限.
修正ACCESS_NETWORK_STATE返回值不正确的问题.
在专业版使用时自定义Splash画面导致的崩溃问题.
多核CPU上用Linux 3.x内核导致Unity无响应或崩溃问题.
用WWW从Https重定向到Http时失败的问题.
Tegra的Nvidia’s PerfHUD当应用程序暂停帧数越来越慢的问题.
几个按键的缺失,比如退格键,左右Ctrl键.
MonoBehaviour.OnApplicationFocus可以正常用了.
增加对Galaxy Note Stylus 笔的支持(通过KeyCode.LeftControl 和 KeyCode.Delete).
修正任何因为缺少目录导致错误编译的问题.
Android Remote:修正偶尔触摸延迟问题.
Android Remote:提高稳定性.

音频:
未压缩音频不显示”Decompress On Load”和”Compressed in memory”的问题.
不显示MPEG文件的BPS问题.
音频和视频:当检视面板查看视频停止时候音频也会停止.
修正自定义衰减曲线的问题.
修正32位过滤器.
libVorbis升级到最新版本.
检视面板中Lowpass过滤器的修正.
重置过滤器或混响区可以用了.
检视面板上查看那所有平台和所有音频类型的尺寸正确了.

调试器:
修正中止reentrant计算的问题.
修正nullable计算崩溃的问题.
修正在编辑器中调试时,调试器崩溃问题.

编辑器:
移动或者重命名当前已经打开的场景再次保存时将保存至新的位置,而不再是旧的位置.
编辑器:当拖动改变曲线时按下ESC可以正确的恢复.
编辑器:黑色主题配色的组件复选框修正了.
编辑器:黑色主题配色的对象选择器的调整.
ESC中止当前搜索更有效了.
编辑器:修正Animated窗口的移动问题.
修正颜色拾取器如原始颜色为(0,0,0,0)时不能正确初始化Alpha到255的问题
编辑器:修正拖动纹理到场景视图有时显示错误或者显示一个关不掉的进度条问题.
修正Mac版的对象拾取器按下ESC不能清空搜索框的问题.
修正当GameObject静态标记没有标记可被选择时现实”Nothing”的问题.
脚本编码可正常使用Utf-8编码.
修正有些Handle控制不符Handles.matrix的问题.
修正在Windows系统上鼠标光标有时闪烁的问题.
修正Windows系统编辑器中不能使用’,./][等快捷键的问题.
修正项目视图中返回的筛选结果没选中时按上光标键提示空引用的异常问题.
修正在项目视图中将子级别资源拽到根的时候空引用异常问题.
修正对象拾取器打开时搜索框没有焦点的问题.
修正当没有检视面板被打开时不能打开编辑器选项的问题.
修正查看或编辑界面中德大整数时导致精度丢失问题.
修正Windows编辑器界面重绘问题,鼠标拖到界面组件或者场景视图的手柄等等.
修正在OnSceneGUI中修改场景视图没有重置Handles.matrix的问题.
修正检视面板显示数组列表的问题.
修正动画视图还在动画编辑模式保存的问题.
编辑器:修正当给大于10000的多边形使用碰撞器提示”vertexCount>60000″的问题.
修正在检视面板修改数组成员数崩溃的问题.
修正导入不少于三个顶点多边形网格崩溃的问题.
修正Windows下下拉菜单重叠的问题.
修真COLLADA文件材质导入问题.
当提交很多资源到AssetServer时占用很多内存问题.
导入一个Package时候空参考问题.
导入巨大的Cubemap时内存溢出问题.
修正Webplayer模板自定义字段问题.
修正从3.4升级到3.5时模型的法线和切线被忽略的问题.
编辑器:修正一些特殊模型在一些非常特殊情况下扑杀的问题.
修正一些情况下场景视图卡住的问题.
修正从FBX导入材质贴图检测问题.
修正保存场景到新建的文件夹,保存对话框出现警告的问题.
修正画地形高度时树木隐藏的问题.
修正OnFocus时候关闭编辑器窗口导致崩溃问题.
修正在Windows中Unity有时候重编译脚本或改变资源反应迟钝的问题.
粒子系统的边界将遵循该粒子设定的边界.
修正DefaultAssets中用GetMiniThumbnail获得图标的问题.
未知类型资源的图标现在是被缓存的,避免有很多个未知资源在项目导致内存崩溃的问题.
改善用Visual Studio2010的问题.
Windows的安装包现在有大分辨率的图标了.
更强大的3DS文件加载.Unity处理无效的文件好多了.
ProceduralTextureInspector 和 ProceduralMaterialInspector支持多对象同时编辑.
修正ProceduralTextureInspector不能重绘问题.
修正EditorGUI的一些问题,入极少使用的参数修正.
多个项目视图窗口不共享搜索字符串.
去掉OSX Lion的一像素边线问题.
OSX系统上不允许特殊字符窜作为文件名.
用键盘浏览对象时不再发出”error”提示音.
在Windows上编译后不会每次都新打开一个浏览器窗口.
解决间歇性的无响应问题.
左键在场景视图中查看和处理时同时按下右键会取消处理.
设定TextureImporter.textureType需要设定所有必要的属性.
从一个高清的源图上生成Cubemap时减少内存占用,使内存移出崩溃可能性降低.
Windows编辑器菜单支持Unicode字符.
可以直接拖动编辑框来改变里面的数值(如Transform组件里的值).
Windows上Build Setting点击Cancel后不会再开.
Windows上资源进度条或编译进度条不会和其他应用程序抢焦点.
视图导入不支持的解码的视频时給于适当的错误提示.
检查场景相机的NaN旋转值和修正.
改善场景视图栅格精确度.
修正编辑器在后台时导致无响应问题.
在检视视图进行非成比缩放或旋转对象时候正确更新子物体缩放的问题.
在OnPostProcessModel时删除根游戏对象导致Unity崩溃问题.
导入含有异常纹理引用(像”.”和”..”)的FBX文件导致Unity崩溃的问题.
升级含有Modo文件的3.4.x项目文件夹时不会丢失网格引用.
Windows上修正常见的随即崩溃.
在Awake中调用SetActiveRecursively导致崩溃的问题.
修正间歇性编译提示”Moving file failed”的问题.
修正视图删除地形的错误问题.
高级纹理导入设置能正确的显示应有的纹理导入模式(例如发现贴图没有Linear设置).
设置颜色偏好在编辑器中可以即时看效果.
修正点击Unity子窗口,Unity不进行脚本编译的问题.

图像:
修正在OSX系统上如果Unity安装目录不是纯字母或数字导致Beast渲染烘焙失败问题.
Beast更智能选择性渲染,像完全布告栏组成的灌木丛.
静态网格的非成比缩放.
如果不支持线性照明将在设备上强制执行.
修正内部数组只有零个成员问题(如unity_LightPosition[0]).
修正没有灯光或者正在使用HDR时Deferred Rendering的问题.
修正雾效里用 Particles/Alpha Blend着色器变黑的问题.
修正Direct3D 9下 pow()错误编译问题.
修正Lightmap UV在游戏对象上预览的问题.
修正阴影的遮挡裁切不正确问题.
修正和改进HLSH到GLSL转换器和GLSL优化器.
修正没有指定Flares纹理图片导致崩溃的问题.
当纹理没有标记为可读时候用Texture2D.Compress提示错误信息.
给ParticleRenderer 和 MeshRenderer使用透明着色器渲染次序不正确的问题.
修正给GUITexture空纹理的错误信息.
修正当使用图像效果(Image Effects)时在Forward渲染模式下多个平行光阴影(通过fullfowardshadows)不正确的问题.
调整RGBM光影图编码,使用双线性过滤以便让黑暗的地方不会出现亮线.使用线性照明模式的最大区别使暗的更暗.亮的更亮.
Lightmapping: “Use in forward rend.”建议只用在双光影图模式上.
Lightmapping: 修正清楚光影图-会重置所有渲染器上的光影图索引,拼贴和位移.
Lightmapping:确保当阴影禁用的时候地平面下隐藏的部分能正常处理.修正一个光的问题.
Lightmapping:做GlossMap时候会从纹理(_MainTex)上获取Alpha.
Lightmapping:解决距离原点十分远的小场景光影问题.

iOS:
修正当使用自动复制native插件追加到Xcode项目问题.
修正当Remote Profiler连接到运行iOS5.0的iPhone上时导致编辑器无响应问题.
修正水平Splash屏幕图片预旋转到垂直方向的问题.
修正Mathf.Approximately和其他数学例程denormalized问题.
修正很多iOS5(GL错误,键盘等等)相关问题.
修正Remote Profiler支持.
修正带有Native插件的项目编译为模拟器的问题.
修正小内存泄露问题.
修正Xcode调试器中一些可怕的警告.
修正当开启自动旋转时启动应用程序旋转问题.
修正WebCamTexture.GetPixels问题.
icon-iPad.png改名为icon-72.png.
用SystemInfo.systemMemorySize可以正确返回内存大小了.
用SystemInfo.graphicsMemorySize可以返回估算的目前总显存.
SystemLanguage大幅修正,可以正确识别区域了(例如英国英语会返回英语,而不是未知).
改进.NET 2.0与WebRequest API兼容性.但是代码剔除仍需手动处理.

脚本:
修正一个导致循环不重用已经声明变量的Bug.
修正多位数租的操作.
脚本属性现在可以出现在”import”声明之前.

Mac OS X:
Mac编辑器:能正确识别用户设置编辑器所在的Space/Desktop.
Mac单机:修正鼠标点击窗口标题栏问题.
Mac单机:在OS X Lion系统崩溃时不会再显还原窗口对话框.
Mac单机:当窗口模式下选择取消退出可正常用.
Mac Webplayer:修正在Firefox 6浏览器一个后台标签页面载入Unity崩溃的问题.
Mac Webplayer:修正Firefox7下调整Unity内容尺寸导致崩溃的问题.
Mac Webplayer:修正CoreAnimation插件在全屏模式里滚轮事件的问题.
Mac Webplayer:在OS X Webpalyer中可以用输入法了.
Mac Webplayer: Input.inputString已经包含Backspace和delete字符.
Mac Webplayer: 修正已正确处理鼠标.修正Safari 5.1下Magic Trackpad的支持.
Mac OS X:修正一些游戏手柄开关输入问题.
Mac OS X:修正输入类中左右修饰键的区别.
Mac Webplayer: 修正用Image Effects不同的渲染问题.

Windows:
Windows 64位单机:修正设置可执行文件图标.
修正从睡眠或解锁计算机时候蒙皮网格暂时无法显示的问题.
Windows Webplayer:修正锁定电脑或者更改分辨率导致图像偶尔损坏的问题.
Windows:当网页播放器进入或退出全屏不会丢失焦点.
Windows:Joystick 0能返回正确的轴坐标值.

物理:
如果被禁用,Collider.bounds 将始终返回空边界(之前会反复无常).当胶囊碰撞盒连续旋转返回连续碰撞检测的修正.
修正CCD不能工作在游戏等第一个场景问题.
修正禁用CharacterController内调用CharacterController禁用崩溃的问题.
修正用GameObject.SetActiveRecursively()时碰撞盒创建缓慢的问题.
物理计数能正常反馈在Profiler中并不会一直递增下去.
删除物理探查器中的”Solver rigidbodies”,因为它没啥用.
修正创建一个有太多树碰撞器的地形导致崩溃问题.

杂项:
Asset Server:修正从Asset Server历史视图恢复旧版本的项目设置导致崩溃的问题.
Asset Server:当检测出是一个新项目,本地项目设置将不会提示文件不同.
AssetBundles:修正用AssetBundle.mainAsset会加载所有依赖关系的主资源问题.
AssetBundles:修正同时下载多个启用缓存的资源束导致偶尔崩溃的问题.
资源导入:修正导入名字含有”..”的资源导致崩溃问题.
资源导入:修正动画包含到(0,0,0)缩放时产生一个非常大的包围盒问题.这也同时导致阴影盒扑杀计算等问题.
AssetStore:修正在资源商店正在加载一个页面时关闭Unity或者切换项目导致崩溃的问题.
预设内容执行顺序现在和没有预设的对象执行顺序(删除OnDisable/OnEnable)是100%一致的.
修正渲染线程和GPU之间同步问题.这个可以修正和优化输入滞后的问题.
修正当Profiler在后台开启导致编辑器冻结的问题.
修正 AsyncOperation.progress显示加载进度问题.
修正用GUIStyle.fontSize时字体字距问题.
修正Cache和Application.persistentDataPath乱码问题.
使 Assembly.Location能正确返回实际位置,而不是”data-09340sdf9gsd0fg”.
修正用FindObjectsOfType查找Texture2D类型的资源时不返回Cubemap的问题.
MonoDevelop:修正当添加调试器时候出现未处理异常问题.
MonoDevelop:更强大的脚本编码检测.
MonoDevelop:不再打开脚本项目两次.
MonoDevelop:确保使所选的脚本窗口获得焦点.
联网:修正通过代理连接不能正确显示NetworkView同步状态.
联网:修正网络连接测试失败返回结果.
联网:修正当网络没有被初始化用NetworkPlayer.guid导致崩溃问题.
联网:修正在OnNetworkInstantiate内读取NetworkMessageInfo.networkView可能崩溃的问题.
联网:修正在Windows系统下用VPN/代理软件控制的浏览器使用内建的多人网络的问题.DNS和接口IP是不同的.
遮挡剔除:修正内存溢出的问题,改善闭塞计算的准确性.
探查器:GPU探查器在图像效果方面能更好的显示效果.
探查器:更可靠Player连接发现.
探查器:不能正确返回实例ID,使得与编辑器中的实例ID不符,造成探查器详细信息视图显示错误实例名称.
脚本:修正在场景销毁旗舰重定GameObject父级导致崩溃的问题.
Substance:修正修改纹理(改尺寸)属性导致崩溃问题.
不会再在一个对象上反复发送多个鼠标按下鼠标抬起的事件.
Webplayer和单机:在Windows上能正确返回Event.delta的值.
Webplayer:修正窗口卸载时导致的内存泄露问题.
Webpalyer:在Windows上调整Webplayer的尺寸减少视觉效果产生,避免不好的效果.

改变:
给KeyCode加入Joystick 4.
Android/iOS:Android Target Graphics的设置和iOS Target Graphics的设置不再关联.

Android
给Native进程添加名称便于调试.
更改Force Internet Permission为 Internet Access(Auto / Require).
更改Force SD-Card Permission权限为Write Access(Internal Only / External (SDCard)).
从Java端的开发版本也有扩展日志记录.
编辑器编译Android程序需要至少API Level 14,但是它仍旧支持早期的平台.
强制用debug.checkjni时候会使用开发版编译(防止插件错误调用JNI).
如果一直没用LVL代码将一直输出错误.
重组classes.jar里的Java代码.
模拟设备项被移出,因为Android Virtual Device (with SDK-r14) 已经支持ARMv6/ARMv7的二进制文件运行.
Splash图像解码改为32位纹理.
在Build Settings里加入纹理压缩覆盖选项,可以很方便的将所有纹理压缩成所选择的纹理压缩格式.
为了用AssetBundles流时节省内存,缓冲区压缩的并行数量做了减少.
增加了临时内存(240KB,在场景载入器)来处理大项目加载,但是浪费载入时间.

编辑器:
为EditorApplication.SaveScene增加saveAsCopy参数来实现场景另存.
资源路径不再允许以空格字符开始.
将Blender文件导入从2.56更新到2.58,实际也能很好的支持2.59.
OnSceneGUI现在能被在自定义编辑器中所有选中的对象调用,而不仅仅使在编辑器检视面板能看见的.
在编辑器中不再允许以文件名创建或导入资源.是系统不允许.
拖拽的同时按取消是无效的,所以干脆禁用了.不过可以用ESC来实现取消.

iOS:
在PlayerSettings中添加5.0SDK选择.
给iPhone.generation增加iPhone4S类型.
当图标或者闪屏使用压缩的纹理时将进行提示.
更改目标设备不需要再覆盖生成Xcode项目.
支持Screen.dpi检测.

杂项:
Mac单机:将缓存文件位置改到~/Library/Caches/bundleID为了符合Mac App Store规范。
Mac OS X:用系统事件来做到更稳定的鼠标滚轮输入,但仅工作在鼠标光标所在的窗口.
移除OS X Dashboard的支持
移除OS X PowerPC 的支持.
移除Unitron和UniSciTE的支持.
剥离:第三方库可以被剥离来缩小应用尺寸,但是要是用了 reflection和generics要格外小心.
Windows Webplayer:如果没有安装图像驱动,Unity将不会用非常糟糕的OpenGL 1.1渲染器运行游戏.会显示一个错误消息给用户.
WWW: WWW.text现在有charset属性.
WWW:www.error的字符可以获得HTTP错误.
WWW:修正HTTP头,即使发生错误也已就能添加状态代码到”STATUS”键下.

已知问题:
Android:如果用了Image Filters时,用Handheld.use32bitDisplayBuffer(或者其他方式再现GL的情况下,如更改AA设置)将导致崩溃.
Android:麦克风录音在一些设备会导致崩溃,用Samsung Galaxy Tab和Galaxy Nexus时要注意.
Lightmapping:标记为静态光照的蒙皮网格不能正确显示UV预览.
模型导入:Autodesk 3ds Max的Tiling值和Maya(或Unity)不同,Tiling在Unity中是在纹理左下角.
模型导入:已经提出修正COLLADA格式的导入,可能会影响导入后预设关联.会直接影响到Modo导出的COLLADA或Modo的直接文件导入Unity.
模型导入:不能同时从Autodesk 3ds Max导入正确的透明纹理和纹理透明度,因为Max输出透明值(TransparencyFactor).
Max OS X 10.5:在这个系统下编译Building Webplayer, Webplayer Streamed, Webplayer Offline Developmen和Mac OS Widget不能用.

升级指南
由于加入了一个新的资源版本系统,所以导入以前版本的项目时,将导致纹理,模型,材质和音频重新导入.
在3.5中给动画节点添加了一个额外的根节点,以前如果同一个角色有多个动作文件,只需要加入@命名后就可关联动画文件.但这种在3.5中有极少情况下会导致导入的动画无法播放,修正的办法是让所有动作文件都包含模型.
不再支持多个根GameObject的预设,遇到这样的预设Unity将自动创建一个带有一个根GameObject的预设.
在Mac系统上开发Webplayer,现在需要Mac 10.6系统以上,而最终用户可以继续使用10.5系统.
终止对Mac OS X 10.4的支持,不过现在的3.5发布的Webplayer仍然可以运行在旧的系统.
Unity3.5移除了对PowerPc和Dashboard的编译支持.
现在Mac OS X的Webplayer在Chrome和Firefox浏览器下支持输入法的输入.如果开启输入法,每个按键都不会有KeyUp事件,而只有KeyDown事件用于字符输入.默认情况下这个会在文本编辑框得到焦点时启用.你可以通过Input.imeCompositionMode来改变这个行为.
Unity3.5将转换已有着色器工作于定向光照贴图.但解码定向光照贴图将比计算定向光照明多耗一点资源.如果只是用Shader Model 2.0(64条指令)编写的着色器.可以会在转换时去除此指令数限制导致无法编译.为解决这个问题,你可以参考Shader model 3.0(http://unity3d.com/support/documentation/Components/SL-ShaderPrograms.html)或或者用关键字”nodirlightmap”禁用定向光照贴图(http://unity3d.com/support/documentation/Components/SL-SurfaceShaders.html).

原文:http://unity3d.com/unity/whats-new/unity-3.5
由威阿人工翻译,转载请注明来自1Vr.Cn,否则TJJTDS!哈哈.

Unity界面插件NGUI核心组件说明

UICamera-可以添加到任何相机,包含事件系统.

UICamera是每个UI的重要组成部分.它负责发送Camera中所有NGUI的活动.如果场景中仅有一个Camera,要确保它附有UICamera脚本.如果有多个相机,确保至少用来渲染UI的相机有UICamera脚本.当将这个脚本放在主相机上时,在游戏场景中的所有都将有OnClick, OnHover, OnDrag等事件.

参数
Tooltip Delay:设定悬停与对象多少秒才执行OnTooltip事件.
如果使用Orthographic Projection相机,建议将相机的Size的尺寸设置为当前分辨率高度的一半.比如针对iPad的屏幕1024*768分辨率,就设置Size为384.另外一种方法是保持Size是1,缩放UI的Root为该值的倒数,比如在iPad上获得完美尺寸你需要设置Root的缩放到1/384或者0.002604167.第二种方法比较容易实行,不过物体在场景视图中照比其他物体会比较小.

如果你仍旧不知道怎么设置正交相机的尺寸,那么尝试看看下面这图.

UIAtlas-定义精灵的纹理图

UIAtlas是一个容器,它包含了一堆sprite的坐标信息.如果你不熟悉这个概念.你可以这样认为:使用一张包含很多小贴图的大贴图比用若干张小贴图更有效率.而大贴图中的小的贴图被称作为精灵(sprite),大纹理成为图集(atlas).

你使用NGUI之前都需要创建一个图集(或使用现有的).可以从这里了解图集的做法.当然也可以直接使用UITexture,但它并不能应对所有问题.

Material:是描述绘制本图集的材料.通常推荐用unlit着色器,比如用.Unlit – Transparent Colored为NGUI.
TP Import:用于导入从TexturePacker导出的精灵.只需要拖拽输出的Txt文件和所有精灵即可.
Coordinates:这允许你从基于像素的坐标系切换为基于UV的坐标系.通常都是以像素坐标系制作,但如果你需要重新调整纹理,则要先切换为纹理坐标.
New Sprite:允许已当前选择的精灵为范本创建新的精灵.
Delete:删除所选精灵.
Sprite:可以通过下拉列表选择所有正在使用的精灵.
Edit Name:重命名精灵的名称.
Outer Rect:设置精灵的外边框.
Inner Rect 设置精灵的内边框,如果你不使用UISlicedSprite,可以跳过这个设置.
Padding:微调校正精灵的偏移量
Correction:基础的校正精灵的坐标使用完美整数像素.
Show:检查精灵在图集中的位置.

提示
可以将精灵组织成组创建多个图集.只要图集共享相同的材质,那么控件仍旧会使用很少的DrawCall.
为达到最佳效果,推荐将纹理的wrap模式设置为”Clamp”和将格式设置为”Truecolor”.
将类似的纹理做成一个图集是很好的方式,但是要尽量减少同时使用的图集数量.
如果你是使用Texture Packer工具来创建图集,要在输出设置中选择Unity3D.

如果你是用Photoshop创建图集,你能通过选择工具配合info panel面板来找出精灵的位置和尺寸.    

UIFont-字体图集
UIFont可以设置UI所使用的字体数据和材质.可以使用免费的BMFont,或使用更专业的Glyph Designer.一般只做一次字体,保存为一个预设,作为新标签所用的字体.参数:

Import Font:用于导入Glyph Designer.或BMFont输出的FNT(改后缀为TXT)数据.
UIAtlas:用来设置字体纹理所在的图集,根据是否已选定UIAtlas,你会看到一下选项
    如果UIAtlas已指定,你可以选择使用字体的精灵.
    如果没有指定UIAtlas,你可以选择用来绘制字体的材质.在NGUI中通常用”Unlit”类别下的着色器,如“Unlit – Transparent Colored”.
    你可以调整字体在材质纹理内的像素矩形.
    快速校正完美像素坐标,四舍五入到最近的像素值.
Spacing:可以调整字符之间的间距.
Show:检查字体在纹理贴图中的位置.

提示
为达到最佳效果,推荐将纹理的wrap模式设置为”Clamp”和将格式设置为”Truecolor”.
可以将多个字体合并为一个图集.这样整个UI使用这些字体,仍旧会保持一个DrawCall.
你可以给字体增加斜角,阴影,描边等效果,只要确保BMFont导出之前你设置好足够的边距和间距就可以了.

UISprite-从图集中画一个精灵

UISprite是第二个不常用的插件(第一个是UITexture),它唯一用途就是绘制地图集的一部分.

参数
Transform:是很重要的一个组件,每个控件都可以通过Transform来进行位置和大小的调整.它也会影响到”Make Pixel-Perfect”.你可以在它和UICamera之间任选一个来进行”完美像素”的调整.
UIAtlas:用来指定所使用的图集.拖拽或者按下左侧的按钮选择最近使用的图集.
Sprite:选择图集中使用的精灵.选择好精灵后.点击一下”Make Pixel-Perfect”会自动为你调整Transform的尺寸.
Depth是避免用Unity的Z排序(效率不好),而且如果你要旋转UI窗口.单纯的通过调整每个控件的Transform的Z轴来排序是不行的.所以要用这个深度来排序.
Color Tint:用来调整色调.
Make Pixel-Perfect:让你快速调整控件的尺寸到实际像素尺寸.
Pivot:选择部件的坐标原点位置.
Preview:预览精灵的纹理.

提示:
如果你看到两个控件有闪烁,意味着你设置了同样的Depth导致了重叠,你要调整不同的深度,让它们不重叠.
不要把多个控件混在一起,否则会影响到完美像素这个功能.添加新控件时要注意保持创建新的子对象.
也可以在使用完美像素按钮后再移动组合控件.

Label-用指定的字体绘制一个文本标签

UILabel被用来显示文字.支持多行,只需要用”
“换行即可.允许用[RrGgBb]来建立彩色文字.

参数:
Transform:是很重要的一个组件,每个控件都可以通过Transform来进行位置和大小的调整.它也会影响到”Make Pixel-Perfect”.你可以在它和UICamera之间任选一个来进行”完美像素”的调整.
UIFont:你可以选择用于这个标签的字体.你可以拖拽预设或者按下按钮选择最近使用的字体.
可以通过使用”
“来决定标签是多行还是单行,同样可以用16进制颜色值来定义彩色文字,以[RrGgBb]开始,以[-]结束.如”Hello [FF0000]World[-]!”,最后的结果是World是红色的文字.
Line Width:用来指定文字行的最大宽度,如果是单行文本则切掉超出的.如多行文本则会根据宽度自动换行.
Multi-line:选择该项后标签达到最大宽度后会自动换行.
Password:勾选后字符将自动转为星号.
Encoding:勾选后会关闭特殊字符处理,一般用于输入框.
Depth:改边标签控件的层级.
Color Tint:更改文本的主色调.
Make Pixel-Perfect: 让你快速调整控件的尺寸到实际像素尺寸.
Pivot:选择部件的坐标原点位置.
Preview:预览精灵的纹理.

提示:
如果你看到文本闪烁或看到被其他控件覆盖了.那么就要调整它的深度.
如果遇到复杂字符串(如斜体,标点,括号混合的)需要增加行宽度避免超宽.
用”
“和颜色,仅一个标签就可以做到下面的效果.

UIPanel-为控件分组,用于管理和优化DrawCalls

UIPanel用来负责创建实际的几何体.不必特别添加UIPanel,只要创建一个控件,它就会自动被添加.你可以创建多个Panel,用于多个菜单.

参数:
Normals:显示法线,用来检查UI正反是否正确.
Gizmos:用来显示几何体,可供选取用.
Debug:配合调试检查场景视图的几何体,如果你开启了这个.就应该取消掉上面Gizmos这个选项.
Widgets:会显示有多少个控件在这个Panel上.
Draw Calls:可以看到用了多少个DrawCall,这个越低越好.
Clipping:可以选择你要显示的部分,默认是不进行裁切的.是利用着色器进行裁切的,如果开启这个选项,NGUI将自动切换为有裁切属性的着色器.
    如果开启裁切.你可以通过Center和Size来设置裁切盒.单位为像素.
    如果选择柔化边缘裁切,将会有40像素的柔化边缘供处理柔化效果.
Material:是只读的,可以看面板用了多少个材质.一个材质将占用一个DrawCall.

提示:
默认情况下如果没有UIPanel的话,会被最根的控件创建并作为其父对象.而且最好让你多个控件都用一个父对象,便于管理.
如果Panels下没有控件.你可以放心的删除这个面板.
如果你删除一个存有控件的Panels,它和它下面的控件都会消失,但是当你播放时,所有控件又会重现,因为又自动创建了一个欣的UIPanel.
当没有变化时,几何体不会重建,这意味着如果有个完全静止的UI,不会没帧都去更新几何形状,相反它也会被重用,提高性能.

    UIAnchor-能让控件自动配合屏幕尺寸,填充满屏和保持真实像素尺寸的UI.

UIAnchor有多种用途,其中包括在多种分辨率的屏幕的相对定位.
如果你将它放在2D UI的root上,它会自动进行完美像素处理.
如果将它用于一个对象,它将辅助对象在屏幕上的定位,比如侧边或者角落.
比如放在一个精灵上,可以用来将精灵自动填满整个屏幕,比如做个背景.

参数:
HUD Camera是用来绘制该对象的相机,通常会自动选择的.
Side:设置锚点,有4个边,4个角和中心供选择.
Half Pixel Offset:让控件有半像素的位移以避免DirectX 9在Windows机器上的一个Bug.
Stretch To Fill:缩放填充,一般做背景时候会使用它.
Depth Offset:用于基于透视相机时调整计算点的深度.

提示:
如果对象有UIAnchor这个脚本,它自身的Transform将不接受你的修改,因为它受控于这个脚本.如果你希望添加基于这个锚点的位移,你可以添加一个子对象.比如你希望有个控件始终在屏幕偏移(100,100)这个位置,你应该在层次面板做这样的结构.UI->Anchor->Offset->Widget.
UIAnchor同样可用于非正交相机.
如果UIOrthoCamera附加到相机,用UIAnchor创建的界面将固定尺寸和位置,无论你将屏幕尺寸改成多大.

Events-NGUI强大的事件系统
UIEvents-事件系统
你可以添加下面的方法脚本到控件或者带有碰撞盒的游戏对象,当然也可以赋予给相机,不过需要相机同时有UICamera脚本:
void OnHover (bool isOver):当鼠标移出或者悬停在某个碰撞器上的时候返回布尔值.在触摸设备上不会有作用.
void OnPress (bool isDown):当鼠标或者触摸到碰撞器发生布尔值返回.
void OnSelect (bool selected):当鼠标或者触摸从OnPress发生后的释放将会返回这个布尔值.
void OnClick():和OnSelect的产生条件相同,当点击或触摸碰撞器并且没有发生拖拽时候触发.
void OnDrag (Vector2 delta):当移动鼠标或者触摸按下时候位移超过特定阀值时触发.
void OnDrop (GameObject drag):当鼠标或触摸释放于从发生OnDrag的不同碰撞器伤触发.传递的参数是产生OnDrag的游戏对象.
void OnInput (string text):当一个OnSelect发生后在同一个碰撞器上触发输入.一般只有UIInput用它.
void OnTooltip (bool show):当鼠标悬停超过tooltipDelay时间后触发该命令.触摸设备上不会有作用.

可以用UICamera.lastCamera找到谁发出的事件,可用UICamera.lastHit得到谁接受这个事件,以及用UICamera.lastTouchPosition得到触摸或屏幕的位置

下面的脚本赋予一个碰撞器时,点击这个碰撞器会输出HelloWorld.

原文:http://www.tasharen.com/?page_id=197
由威阿翻译,转载请注明来自1Vr.Cn

Unity界面插件NGUI基础教程

一:创建你的界面

1.创建一个新场景.
2.选择并删除场景里的MainCamera.
3.在NGUI菜单下选择Create a New UI,会打开UI创建向导.
4.在创建向导中你能更改UI的基本参数,现在我们选Default layer.点击Create Your UI 按钮.
5.就这样,你的UI创建好了.

如果在一个已存在NGUI的项目中你要跳过第二步,并且你要选择一个不同的UI层,你还要确保非GUI相机不渲染UI层.

在做具体UI控件之前,我们看看UI向导为我们做了什么.

1.在2D的根对象上有个UIRoot脚本.这个脚本会重新调整游戏对象符合你的屏幕高度,有自动和手动选择高度.
2.Camera对象包含Camera和UICamera脚本.UICamera脚本包含NGUI的时间系统.

3.Anchor包含UIAnchor脚本.虽然这个脚本可以附加给控件,但在这里可以避免Windows机器上半个像素偏移的问题.
4.Panel对象有UIPanel脚本呢,UIPanel是一个容器,它将包含所有UI小部件,并负责将所包含的部件组合优化,以减少DrawCall.

同样你可能还注意到目前自动帮你选中了Panel对象,也就是说下面添加的所有部件都将在作为它的子对象.

二:精灵Sprite

现在让我们添加一些控件,在NGUI菜单中选择Create a Widget.

这个向导会指导你建立一些基本的控件.需要选择所实用的Atlas和字体,因为是新建的项目,所有按下Atlas和Font按钮没有效果,相反会自动复制为你最近使用的元素.我们这里先选择Atlas为SciFi Atlas,字体为SciFi Font-Normal.

接下来在Template选择创建什么类型的控件.这个的模板只是帮助你开始创建,当你真正使用NGUI的时候.你会经常用这个向导创建控件的基本体.

现在,让我们创建第一个控件.

1.假设我们Atlas选择的是SciFi Atlas,我们给Sprite选择Dark.
2.点击Add To按钮,(如果按钮是灰色的,那是因为你没有选择Atlas).
3.你的Sprite现在已经创建并选中了.不过它非常小,让我们用Transform来调整它符合我们的需要.

一个值得注意的事是同一个atlas中创建控件不会响应Z轴变换,不过你可以调整Depth参数来调整他们的前后次序.如果后面你用了多个atlase或者多个UI面板,那么你就可以去调整Z轴变换.

你可以尝试添加更多的控件,比如加入一个Sliced Sprite(一个含有9个切片的Sprite,创建固定边框的控件最佳选择),一个Tiled Sprite(一个Sprite缩放填充整个区域)和Filled Sprite(每个Sprite都会有一个单独的参数来控制那些是可见的,常被用来做进度条或者滚动条).如果你找不到它们也没关系,后面的教程将讲解它们.

三:9-Slicing Sprite

1.选择Panel对象,用控件向导添加一个”Drak”的Sliced Sprite.什么叫9-slicing?查看这里:http://www.adobe.com/designcenter/video_workshop/html/vid0204.html
2.调整缩放为(500,500,1).
3.添加另外一个Sliced Sprite并设置缩放为(500,40,1).
4.更改第二个sprite的位置到(0,230,0).
5.更改Sprite的Dark为Light.
6.向下图一样调整两个sprite的颜色.
7.调整Depth,让彩色的sprite在大的sprite前面.

现在看起来像个小窗口了.

四:拼贴精灵

1.选择Panel对象,添加Tiled Sprite,并选择Honeycomb sprite.
2.设置它的位置为(0,-19,0)和缩放为(494,457,1).
3.同样你要设置深度调整前后次序.

可以按照自己的意愿调整它的颜色使他看起来更好.

你可以在任何时候通过选择Panel对象中的Debug Info的Geometry项来查看创建的控件的几何网格.

添加了这么多东西,目前依旧仅有一个Draw call.

五:标签

1.像前面讲的一样方法选择Panel对象并添加一个Label控件.
2.并点击Add To 按钮,如果Add To按钮不可用,是因为你没有指定字体,可以给Font栏指定”SciFi Font-Normal”.
3.在检视面板给刚添加的UILabel的Text项添加一些文本.比如Hello World!
4.移动标签位置到(0,234,0),让它出现在标题栏上.

可以添加多个Label并且使用16进制的值描述不同颜色.以[FF0000]开始,[-]结束,在这之间的文本都会变为红色.

因为使用了相同的字体相同的材质,所有整个场景依旧是一个DrawCall.

六:按钮

现在,你应该可以很容易的创建一个按钮了,但还不知道如何让它接受点击时间.不过这很简单,任何碰撞盒都会收到它应有的事件.所以,一个简单的按钮你只需要在NGUI下选择Attach a Collider给控件,另外NGUI的模板已经有按钮末班,让我们看看.

我们选择Panel,用向导创建一个Button.

你能看到按钮有多个部分,一个是背景,一个是文本标签还有一些脚本,这就是NGUI的特性,多个小组件像乐高积木一样组合成强大的控件.

1. UIButtonColor当鼠标悬停在按钮或者按下的颜色.
2. UIButtonScale当鼠标悬停在按钮上时按钮放大.
3. UIButtonOffset当按下按钮时按钮像右下的位移.
4. UIButtonSound当按钮按下时播放声音.

当然还有其他组件,比如UIButtonPlayAnimation 和 UIButtonMessage,你自己摸索喽.

你也可以添加自定义事件让它处理更多的事件.

现在,你应该做成这样的一个界面了.

七:滑块

下面让我们添加一个滑块.

1.用Widget Tool,选择Slider模板.
2.给Foreground用Button,给Background用Dark.Thumb可以也用Button.
3.选择Panel后点击Add To按钮.

一个滑块滚动条就做好了.你可以选择滑块的游戏对象进行颜色和尺寸的调整,但是经验建议你不要去调整控件对象下面的子对象.

你可以尝试再做一个垂直滑块.

八:复选框

接下来我们来做复选框:

1.点击蒙版用”X”,背景用”Dark”.
2.创建一个复选框后再选择Panel对象创建一个新GameObject.
3.添加更多的复选框到这个GameObject.
4.在这些复选框上选择Option项.
5.运行一下程序,点击复选框.看看效果.

有关联的复选框只需要放在同一个父游戏对象中即可.

还可以附件一些其他事件处理功能,如UICheckboxControlledComponent 和 UICheckboxControlledObject.可以用来由复选框状态来启用禁用指定的组件或者游戏对象.

尝试着做3个复选框来控制红,绿,蓝三个控件的显隐.

九:输入框

现在我们来创建一个输入框.任何文本标签通过添加碰撞盒盒UIInput脚本都可以变成输入框.不过这里我们也可以用Input模板来创建:

1.正如你掌握的,用Widget Tool创建输入框.
2.可以用”Dark”或”Highlight”作为背景.
3.将它调试正确.

播放游戏,点击输入框就可以直接输入文字,在iOS和Android设备上则会自动显示屏幕键盘.这个输入框同样也支持Unity3.4.1新增的输入法类,让你能输入中文.目前唯一不支持Flash平台,因为Unity Flash还没增加IME输入支持.

十:三维界面

上面的我们一直在做2D的界面,但我们也可以很容易的让它变成3D界面.继续跟着我做吧:

1.将Panel从Anchor的子物体中解除掉,由UI Root作为它的父对象.
2.删除Anchor(本教程我们只做静止的UI).
3.将摄影机改成透视投影.
4.将相机的Near改为0.1和Far改为4.0.
5.将相机往后移动一点,大概在(0,0,-550)的位置.
6.给Panel一点角度,我们这里设置旋转为(0,345,0).
7.另外一个霸气的东西就是添加PanWithMouse到Camera.

点击Play,试着移动鼠标.看发生了什么.如果你做的没错,你将会看到下面这样的窗口.

原文:http://www.tasharen.com/?page_id=197
由威阿翻译,转载请注明来自1Vr.Cn,否则MJJ!哈哈.

跨年度手写博客一篇呵呵

好像现在微博得便捷把大家得注意力吸引了去,我也是,想想好久没有没有写篇日记似的博客了.好像有很多事,但是又不是写什么,来.开始编..可能很乱哦.

前阵子博客的域名被和谐了,就是备案给我注销了,具体原因我也不知道,你说奇怪不?那么多xx网站都健在,什么高清啊,步兵啊都不用翻墙,我这么一个和谐的技术小博客阻碍谁了?!蛋疼吧!给别人的提示也很强,说域名未备案或者有非法内容.普通群众看到这句话什么反应?有几个能认为这站很和谐?回头来说你给我注销.我得忍着,得去备案吧,还得本人去某个办事处现场拍照,我就让我爱人帮我去的,本想带着身份证带着资料就行了呗,那承想有变了花样,要先核名,当注册公司玩呢?还核名,周期一个月,我去的了,名字核过后再来次,再浪费个20来天备案.一年有几个月啊?爷不和你们玩了.找个花钱的,不到2天就备案完了.不该支持这种活儿,但是被逼的.就像小姐一样,谁不是被逼的呢.呵呵.各位您再想想为什么花钱的就有路子一天两天甚至几个小时就可以搞定,而正规的要一个月,两个月呢?你懂的…

过春节回家去买箱子的时候给自己淘了一个工具箱,我那一堆铁家伙终于有个窝了,原来用纸箱子,被水泡的面目全非.不管做少,备点螺丝刀,钳子啥的总会有用的.灯座坏了自己动手都高兴.哈哈.这时候突然想起一句话,什么都懂一点,生活更丰富多彩一点. 🙂

不知道啥时候发烧起耳机,也不能算发烧了,因为就入了一个耳机,然后本子推不动,又买了一个耳放,没感受过的知道买个几千块钱买个耳机太烧包了.听段时间感受后就体会了.其实人的耳朵很挑剔,很细腻.

坐火车回家真是很蛋疼的事,特别大包小裹的拿东西.加上人,不管动车还是晃车,没一点爽的.回来时候坐的卧铺.好家伙,必然晚点啊,晚了一个小时,广播里一门听那非常熟练毫无诚意的表示歉意表示歉意,怎么就说为了弥补大家浪费的时间做点什么补偿呢.晃车我没遇到过不晚点的,你说你不能保证准点,你就直接说实际时长完了呗?半路停车让行,害怕说实际时长没人坐了?咋可能呢,没得选,被逼的,too!

对了,回来的车厢里暖气相当热,睡觉那汗冒的一塌糊涂,然后早晨乘务员拿着一箱廉价冰棍叫卖,很多人淘一元钱买了一根儿,我佩服列车的营销.哈哈.大冬天特意准备冰棍给乘客?为什么呢?哈哈

没公交卡.坐个地铁真是费劲,平时不方便开车的时候坐地铁还好,人不多,买个票也容易,回京出了北京站.哇靠,这地铁两条长龙队伍,一个等待安检的,一个等待买票的.大大的布告栏写着先买票再安检进站,我一看.这不是扯呢么,赶紧过天桥上马路对面另外一个口进去了,好一些了.去售票窗我说办个卡,说在什么AC口有,我说艹!留意了一下售票窗口上方的玻璃写着一个通知,有关异型公交卡的,所改造的,没有什么标识的不能充值不能使用啥的,我暗自坏笑,当年我自己DIY的迷你公交卡至今还没坏哦.

为啥其他微博都干不过新浪微博呢?欢迎加我微博 @unity3

今天早晨飘了点小雪.

好了.不说了.走着~

Unity 3.4.2发布,小问题修复.

Unity 3.4.2这个版本主要是针对对Unity3.4的修正.

编辑器:
修正编辑音源的时候崩溃的问题.

Android
修正Icecream-Sandwich收集上Splash图片错误问题.
允许仅当前应用获得焦点时候播放音频(防止在其他非应用画面时出现应用音频的问题).
使在移动设备上的探查器(Profiler)仅使用设备目前用的网络接口.
修正一些地方提示mscorlib.dll没有找到的问题.

iOS
修正使用Xcode4.2(iOS SDK 5.0)构建应用时候偶尔崩溃的问题.
修正iOS 5上自动转屏崩溃的问题.
停止有关在iPad2的iOS 5上msaa+colormask+blend问题修正工作(等Apple修正).
根据苹果的新准则更改AssetBundles的缓存路径为: /Library/Caches,原来是/Documents下.

Monodevelop
修正Javascript编译的问题.

Unity 3.4.1 小小的更新修正来了.

这个版本主要是针对Unity3.4的问题修正,更多详尽的更新可以看3.4的更新列表.http://unity3d.com/unity/whats-new/unity-3.4

文字输入法(IME)的输入处理
示例项目的改进
编辑器,运行时和MonoDevelop的修正.

输入法输入:
公开 Input.imeCompositionMode, Input.compositionString 和 Input.compositionCursorPos 的方法,运行开发者自定义GUI下有关输入法的控制.这使东亚语言,如中文输入更加可控.

Windows:当光标没有处于编辑器框的时候禁用任何输入法(或者用or Input.imeCompositionMode去设置IMECompositionMode.Off),以免有些游戏控制因为输入法而导致输入失效.
示例项目(AngryBots)做了如下的改进:

对关卡和SplashScreen做了优化减少网页和移动平台上载入时间过长的问题.
针对Android的menu/back/quit按钮的响应处理.

右上角加了一个暂停按钮,会弹出一个菜单,包含”继续”/”暂停”,全屏(单击和网络播放),静音,重新开始和推出(单击和手持设备).

未来重要改变
在Unity3.5准备终止对Win2000,Mac OS 10.4及更早的Mac版本的支持,另外,网页播放器和单机版应用也将终止在PowerPc Macs上的运行支持.

修正:
编辑器:
当从场景中删除新创建的预设,预设图标没有立刻消失的问题.
修正在Windows上与AssetStore服务器通讯错误导致的崩溃问题.
修正当AudioSource组件和AudioLowPassFilter组件同时存在的时候curves的关键帧上右键菜单的问题.
修正*.meta文件和*.meta数据文件不一致的时候导致的崩溃问题.
修正进度条进度少于1%的时候仅显示进度条的问题.
修正一些已知的内存溢出问题和加快资源导入速度.
修正纹理的重导的内存泄露可能导致的内存溢出崩溃的问题.
修正当点击播放按钮时候,卸载domains清理回收日志时候导致崩溃的问题.
修正Mac OS X下进度条的自动释放泄露的问题.
修正音源的曲线编辑会导致崩溃的问题.
修正在项目视图搜索时导致渲染纹理(render texture)创建错误的问题.

运行时:
修正Windows上偶尔崩溃的问题.
修正在iOS上选择了”Exit on Suspend”后退出崩溃问题.
修正Windows上强制OpenGL模式退出崩溃的问题.
修正在一些AMD显卡的Mac OS X Lion系统上Safari中Webplayer图像的小问题.
修正蒙皮网格无效骨骼索引或网格刚被更新导致的崩溃问题.
修正SSE2蒙皮代码读出界时的崩溃问题.
将Cubemap用的RenderTexture.GetTemporary恢复到Unity3.3时的版本.

标准资源:
添加缺失的Pro Water着色器.

Javascript
降低编写难度(比如,将一个对象类型的变量赋值为字符串类型的变量),现在会出现警告,而不是直接报错.

MonoDevelop
修正美国国际输入法,允许输入单引号和双引号.
修正一些Mac OS X Lion系统下窗口尺寸调正的问题.

原文:http://unity3d.com/unity/whats-new/unity-3.4.1
由威阿翻译,转载请注明来自1Vr.Cn

Unity3.4正式发布,新范例项目来喽

Unity刚刚发布了Unity3.4,所有3.x用户均可免费升级到这个最新版本.
通过整合Allegorithmic材质技术,Unity3.4具有高度可定制的程序化纹理,不论在Unity编辑器还是在运行时,都可以进行材质的动态调整设定.同样开发人员可以使用Unity的材质流,有了它一个高质量的纹理仅需要几KB,大大减少了下载时间.这些纹理可以在PC和Mac上实时修改创造也可以烘焙为移动平台的传统纹理.材质包含了智能滤镜,是美术人员能够更好的优化融合纹理通道.

新增的亮点功能.

有关Allegorithmic材质技术:
在运行时或者编辑器中添加了使用调整程序纹理的功能
纹理的流式加载仅会占用很少的流量.
可以将程序材质烘焙成普通贴图和材质给移动设备.

编辑器的改进更有利于提高游戏开发效率:
用户可设定场景视图中的小图标
可以调整原始碰撞器.
每个组件的Gizmo分类

特色:

集成Allegorithmic材质:
原生支持Allegorithmic程序材质.
在Unity编辑器内部可以调整材质的参数.
在Mac和PC中运行时动态改变材质参数.
在PC和Mac上,程序纹理能进一步的压缩更能缩小文件大小.
能将程序材质烘焙为普通的贴图和材质给移动设备平台使用.

Gizmo和图标管理:
可以很容易的改变赋予游戏中的对象和脚本资源自定义图标.
可以在游戏视图和场景视图中找到新添加的”Gizmos”下拉菜单来控制Gizmos和图标的显隐.

脚本执行顺序:
Unity现在可以进行每个”脚本”执行顺序的控制(Awake,OnEnable和Update).有个非常易用的对话框来定义执行顺序.

以缓存的形式下载完整场景资源和资源捆.现在在PC/Mac的独立播放器及iOS/Android上的每个程序均有4 GiB的专用高速缓存.Webplayer也有一个50M的共享缓存.一些大型项目可以去Unity公司申请更大的缓存许可.缓存不仅加快加载的速度,也会大大降低内存的使用,因为一旦将缓存的文件释放开,这部分的数据就不需要占用内存.所以我们推荐大尺寸的资源文件使用缓存API来处理.

增加了一个BuildPipeline.BuildStreamedSceneAssetBundle新方法.可以更容易创建流式资源包,根据目前所需下载所需.
进行了WWW类的内存优化,用file://协议可以从磁盘非常大的资源,无论这个资源是否大于内存容量.

编辑器:

Debug.DrawLine 和 Debug.DrawRay现在有个可选参数来控制其显示时长.
新增鼠标事件OnMouseUpAsButton.当鼠标在GUI或碰撞盒上松开鼠标按键时候会调用这个命令.
现在可以在场景视图中按住SHIFT调整碰撞盒的尺寸.
检视面板中的预览现在可以调整大小了.

阴影:
平行光现在有了新的投影模式:Stable Fit(新项目默认是这个,可以在Quality Settings中改变它).原来是Close Fit.分辨率略低.
大大改善投影的算法(更好的Drawcalls).同时也优化使用GPU.
添加”Very High”的阴影分辨率选项.

蒙皮:
在Windows和Intel Macs专门为作了SSE2的蒙皮优化,改进了Mac上的多线程蒙皮效率.

着色器:
#pragma exclude_renderers/only_renderers中现在可以用”shaderonly”(GLES2.0, 360, PS3等等)关键字了.
GLSL的交叉编译着色器支持tex2Dgrad 和 tex2Dlod了.
所有平台上均可访问到每个顶点的光照数据,包括OpenGL ES2.0.使用 float4 unity_LightPosition[4], unity_LightColor[4], unity_LightAtten[4].
添加为移动设备优化过的VertexLit和Unlit着色器.

图像效果和水:
图像效果和水上有较大的提升.这两个都做了很大的性能优化,也将效果和可调性作了处理.

图形:
当使用延迟光照渲染时,遮挡裁切可以进行点光源和射灯的显隐处理.
通过VBlank Sync Count可以获得更稳定的帧率.在Quality Settings中可以设置Framesync标志,可以设置为’Don’t Sync’ ‘Every VBlank’ 或 ‘Every Second VBlank’.
延迟光照渲染时,点光源和射灯的渲染更快了.
优化Forward渲染时的光照剔除.
优化GLES 2.0中用不变化着色器的每个顶点光照.
添加Shader.WarmupAllShaders()方法优化减少着色加载的卡顿.
增加骨骼蒙皮和动画组件的与处理边界盒的支持.这样可以用最少的CPU占用,提高性能,并让你更好的裁切优化动画盒蒙皮网格.

iOS:
新增地形系统的支持.
增加了陀螺仪的支持.
EAGLView放到UIViewController了上,使其屏幕自适应风格统一化.也增加了非动画的自适应旋转屏幕方法,这个设置在PlayerSettings中.
添加了AOT代码的检查,确保不会因为这个影响AppStore的审核.
改进了iOS上的插件自动处理.
移动平台的质量设置默认为”简单(Simple)”.
iOS的SDK版本默认选择”最新”.

Android:
同样增加地形系统的支持.
增加了新的纹理压缩格式(GL texture-compression),及增加了多APK支持.有助于减少应用程序的最终尺寸.
安卓平台现在支持BuildAdditionalStreamedScenes的资源捆及可以利用Web流的方式获取新的内容.
在多核心CPU的安卓设备上支持多线程处理蒙皮动画.
因为修正了一些很关键的问题,所以我们建议大家用新版Unity重新构建发布以前的应用程序.

Unity Xbox 360, PS3 和 Wii 版也同时发布:
开发的项目可以很容易的发布到各种平台.
Rochard时Unity的第一个PS3游戏,已经成功完成索尼的提交过程.
Unity的第一个Xbox 360游戏也成功通过预审,

编辑器的改进:
现在可以拖到任何游戏对象到项目视图来创建一个预设.
提高有很多prefabs的场景播放/停止的响应时间.
对象拾取器可以进行筛选显示.
MonoDevelop现在已经作为默认脚本编辑器.
优化PVRTC的解压缩,在iOS模式下载入速度会更快.
默认只有C#编程时启动VS.
按住Shift可以快速调整碰撞盒尺寸.
在材质面板中显示推荐到着色器帮助文本.
实现在检视面板和场景视图中的编辑动画和蒙皮网格的边界范围显示.
改进VisualStudio/MonoDevelop同步性能.,
增加RenderTexture的位深度调整编辑框.
工具类已经公开,可以更好的自定义编辑器了.

编辑器的问题修正:
从时间线上移动或者删除关键帧现在可以作撤消了.
Trail Renderers 现在始终有一个小调节手柄在原点,所以不用再在场景视图中找来找去了.
表面捕捉现在可以正确的忽略设置为trigger的碰撞器.
在场景视图中物体的顶点捕捉拖动可以用了.
修正子物体的顶点捕捉.
修正使用Painting terrain heights会出现的Bug.
检视面板中光的属性设置如果当前光源不适用”soft shadow”,该项将隐藏.
相机的视角边界预览现在是给予游戏实际的宽高比而不再是场景视图的宽高比.
Windows系统中可以在游戏视图点击右键显示菜单.
可以用点击鼠标滚轮(中键)来关闭目前选项卡.
当鼠标光标被代码”锁定”时,暂停当前游戏将会恢复光标显示,继续播放鼠标则遵循代码设定.
播放时最大化时的Screen.lockCursor修正.
改进构建到其他平台的进度指示.
卸载编辑器能正确的清理安装目录.
切换专业版皮肤不会重置脚本编辑器关联.
修正Lightcookie纹理渲染问题(case 389444).
当材质所用着色器重新编译时材质预览也将更新显示.
修正动画视图有时错误显示动画曲线的问题.
修正当导入一个空的着色器文件崩溃的问题.
MonoDevelop默认会显示行号等.
修正Mac上PostprocessBuildPlayer脚本的执行问题.
修正一个预设拖拽到场景视图崩溃的问题.
修正因为Input.mousePosition返回错误坐标而导致的编辑器暂停.
资源服务器可以检测脚本图标的变化.
去掉了Library目录的AnnotationManager.asset的.asset扩展名.
修正 TextAsset.bytes的构造问题.
修正在动画视图中删除关键帧崩溃的问题.
改进Visual Studio的项目同步.
修正材质检视面板中有些着色器错误名称的问题.
批处理模式(batch mode)可以用Yield和WaitForEndOfFrame了.
修正音源的曲线检视视图的NullRef问题.
Mac编辑器:修正用颜色拾取器时在控制台显示内存错误信息.
Mac编辑器:修正Mac OS X 10.7 Lion中用颜色拾取器崩溃的问题.
修正Vector3, Vector4 和 Rect 域的缩进问题.
项目/层次视图中搜索框字符串丢字符的问题.
修正”Clear On Play”选中时不能正确清理控制台记录的问题.
修正一些着色器的方法不能正确显示在OpenGL ES 1.1模拟环境的问题(Windows上).
禁用的碰撞器现在将以灰色显示.
现在可以从脚本来关闭一个最大化的编辑器窗口.
在播放器设置中如果设备是iPad或者iPad+iPhone时候不允许选择低于3.1.3的SDK.
Texture2D.PackTextures现在强制从右至上填充.
修正打开2.6版本的项目升级问题.
保存场景时候将清理场景中无效的预设.
修正切换平台或者图像模拟器设置时候图像效果出现的问题.
修正退出Unity时会重新导入重命名资源的问题.现在重命名立即重新导入(case 409155).
修正在编辑器中切换平台时着色器会出现的一个罕见的问题.
GameObject类添加Tooltip.
修正在构建设置菜单切换到Wii或Xbox崩溃的问题.
修正调试一个出发空引用异常的表达式导致的崩溃问题.
修正启动VisualStudio的间歇性意外问题.
场景视图到图标质量不受编辑器质量设置的影响.

图形
改进:
抗锯齿的设置现在有None, 2x, 4x, 8x(新增).移除6X和16X,因为GPUs都不支持它们.
修正Camera.RenderToCubemap渲染天空盒的错误(除非相机是90 FOV和1:1的横纵比).
修正使用很小range点光源的显示错误信息问题.
提高预防高分辨率和高度抗锯齿时候造成的显存溢出问题.例如修正了一些2560×1440的分辨率和8x的抗锯齿上的问题.
防止脚本设置无效的粒子数值(发射器上的Min/Max Size, Min/Max Energy, Min/Max Emission; 渲染器上的UV Animation)
修正当脚本去改变粒子UV动画时候粒子渲染器没有更新的问题.
修正粒子渲染器有时出现错误UV动画帧的问题.
每层的距离裁切能正确处理非平行光源的阴影投射.
SystemInfo.graphicsPixelFillrate中添加了更多GPUs的信息.
修正Application.CaptureScreenshot()在Windows平台不正确的截取到游戏视图界面的问题.
网格检视面板中有关网格压缩错误显示的问题.
实时阴影错误的变暗光影贴图问题.
当从程序创建一个渲染纹理不再需要设定为二的次幂,它将自动基于渲染纹理设置大小.
改进AnimationState.RemoveMixingTransform方法.
阴影:
调整阴影相关默认质量设置(Quality Settings).
影子投影设置现在放在了质量设置(Quality Settings)中,不再放在灯光组件上了.
着色器:
修正一些着色器在D3D9调试验证失败的问题.
修正Cg到GLSL交叉编译的一些错误.
多个物体用一个着色器的GrabPass能用相同纹理,详见GrabPass文档.
新增ComputeGrabScreenPos辅助函数在UnityCG.cginc中,用于GrabPass.
新增为移动平台优化到Diffuse,Bumped,VertexLit(仅平行光源),Unlit Lightmap着色器.
光影贴图:
正确重置物体光影图到平铺/偏移.以便再次烘焙.
修正着色器不能有 _Color到问题(像一些移动设备的着色器).

修正:
修正Windows Vista/7系统上显存的检测.
修正了一些仅工作在顶点着色器上的内建矩阵问题(_Object2World等等).
修正挡用延迟光照时camera.RenderToCubemap不能正常运行的问题.
修正着色器的材质贴图不做实际采样时纹理缩放和解析(name_ST)属性错误问题.
修正使用OpenGL ES 2.0时,一些光斑(Flares)错误UVs的问题.
修正Direct3D9下动态成批(Dynamic batching)在法线贴图的物体上不正确的问题(在OpenGl中依旧是禁用的).
修正在最新的Macbook Pro(显卡是Radeon HD 6xxx)上Batching的性能问题.
修正动态成批没执行完整问题.
修正如果用GUI.DrawTexture导致动态成批中止的问题.
修正点光源在大三角形上的阴影问题.
修正当创建一边为零长度的纹理时崩溃的问题.
光照贴图:
修正在Mac上如物体包含了多维法线材质时候导致Beast渲染莫名错误的问题.
修正了在Mac和Win上创建烘焙图UV不通的问题,需要重导入网格模型.
动画:
修正当使用层和混合变换时错误信息问题.
当用”模型@动画”的命名方式来切分动画时候,所有动画剪辑都将赋予模型,而不只有主动画.
修正AnimationClips空引用出现的问题.
标准资源:
添加,优化和改进图像效果(如Antialiasing, Fog, TiltShift, Depth of Field).
添加Water4脚本和范例预设.
水:
修正在场景视图和游戏视图(Windows)上水下折射效果问题和水的波纹网格创建.
图像效果:修正DLAA拐角问题(和添加一个锐化设置),重新启用Additive混合的支持(sun shafts,bloom中).
修正SmoothFollow和ThirdPersonController的脚本.
景深现在有了更适合的混合模式.
Water可以创建更简化的波浪模型.
为移动设备的修正:
GLES 2.0:当SeparateSpecular设置为Off时specular将被禁用.
GLES 1.1:修正anisotropic滤镜的支持.
修正一些导致iPad2设备崩溃的一些着色器.
影片:
如果影片没有音频,那么视频播放时要注意Time.captureFramerate.

音频:
修正当AudioSource附着在影片纹理上时候isPlaying不会始终为假的问题.
修正重用缓存的音频时候音源引用出现错误的音频片段问题.
当设置了ignoreListenerVolume的时候音源也可以做效果了.
WWW.audio可以在iOS上使用了.
修正重设AudioSource.clip时候一些罕见的额崩溃问题.
在3.3版本中设置的DSP buffer在3.4中可以正确读取.
修正了元文件”.meta”序列化问题.
修正用AudioSource.PlayOneShot时FMOD错误问题.

Unity iOS
改进:
网格蒙皮是多线程处理了.
当需要时会使用VFP蒙皮.
添加在播放器设置里添加AOT选项设置,
地形模块的剥离(当你不使用地形系统时,可以省去一些Monocode,减小体积).
可以使用Application.systemLanguage了.
可以正确检测GSM版iPad和其他设备.
更正视频播放和键盘的自动屏幕转向问题.
发布出来的Xcode代码更易读和更改重构,需要重发布Xcode项目.
包的标识符(Bundle identifiers)允许使用XXX.XXX格式了.

修正:
修正iOS SDK 4.3编译发布到AppStore的链接器问题添加”-all_load”链接器标志到main.mm中.
改变自动处理Xcode插件脚本的脚本,提高第三方插件集成体验.
修正iOS SDK4.3中关于”unaligned symbols”的警告.
改进了PlayPrefs和LoadLevel,防止极少数情况下App意外终止导致PlayerPrefs数据丢失的问题.
改进启用调试时AOT的编译尺寸.
防止GUI.WindowDragState被剥离.
修正调试模型复选框的小bug.
为iOS 4.3更新cpu-waits-gpu.
修正VFP单骨骼蒙皮.
修正启用MSAA启用时截图(screenshots)不正常问题.
iPhoneSettings.generation现在包含了iPad2类型.
修正WWW类的内存泄露问题.
播放器设置中添加SDK4.3的选项.
修正着色器在编辑器和iOS上看起来不相同的问题.
修正AssetBundleCreateRequest的剥离问题.
修正用WWW类下载尺寸大小未知的文件导致的内存溢出问题.
修正GUIText剥离问题.
修正库文件不能正确链接问题.
修正.cpp/.c文件的自动插入,实验证明支持.xib和.png的自动添加.
依照RFC修正了WWW.EscapeURL()的转换问题.
修正在iPad2上使用MSAA和alpha-blended的问题.请查阅有关SL-Reference/SL-AdvancedTopics/SL-PlatformDifferences资料.
修正Unity iOS基础版的输出和屏幕自旋转问题.
模拟器支持Xcode4+SDK4.3.
支持WWWForm.
模拟器支持版本到4.2.
CultureInfo代码的剥离.
修正重力传感器和触摸输入滞后的问题.
修正着色器中用”quad”导致变暗的问题.
修正kFPS设置为60用CADisplayLink的问题.
修正没有Unity的UIViews时候的触摸处理问题(为插件服务).
修正iOS上偶尔的OpenGL错误.
多核ARM设备上GC死锁的修正.
修正RegisterMonoModules.cpp中无效程序集名称问题.

已知问题:
“Build&Run”现在不能完全支持Xcode4.x.现在需要手动”Run”.现在Unity支持的最好的是Xcode3.2.6(SDK4.3).

Unity安卓:
改进:
改进载入场景和资源的时间.
网格蒙皮利用NEON优化(如果CPU支持).
网格蒙皮必要时利用VFP优化(在NVIDIA Tegra 2).
网格蒙皮用多线程处理.
资源束可以用AssetBundle.CreateFromMemory从内存载入.
添加自动屏幕旋转支持(autorotation).
一些特定的设备上纹理压缩ETC/RGBA16将由DXT/PVRTC/ATC替代.
缩短编译时间,尤其Resources文件夹里有很多预设时.
NativeActivity自动选择OS2.3和其以上的新版本.
ATC(Qualcomm Snapdragon)纹理压缩模式现在已被支持.
构建时会自动添加elements到manifest.
开放音频延迟(混合缓冲区大小)的设置.

修正:
在基于NVIDIA Tegra 2的设备商用GLES 1.1模式不会再启动卡死了.
解决大部分在基于Snapdragon的多核设备上卡死问题(比如HTC Snapdragon/HTC Evo3D等等)
修正Motorola Xoom设备上因为Android 3.1的更新导致的加载时间过长问题.
场景加载的bug修正.缩短装载时间.
修正编译App时候检查安卓SDK导致不响应的问题.
WWW获取的数据不再因为预知的内容茶长度与实际长度不一致导致的数据截断.
修正一些特殊形状的网格导致蒙皮崩溃的问题.
修正Samsung GalaxyS II (ARM Mali-400)上因为显卡驱动导致的崩溃问题.
修正JNI对象非法引用导致的崩溃问题.
Unity安卓基础版可以自定义程序图标了.
修正一些安卓上不能正确处理glPolygonOffset的问题(修正blob阴影).
修正用Object[]返回一个值导致崩溃的问题.
修正Xperia PLAY的触摸板Y轴输入问题,但这个需要重新修正游戏的触摸控制部分.
修正基于Qualcomm Snapdragon的设备上偶尔的图形显示错误问题.
修正用Application.Quit命令时清理释放资源导致的程序崩溃问题.
修正空的StreamingAssets导致的项目编译失败问题.
修正在载入关卡时导致的程序意外终止而偶尔丢失PlayerPrefs数据问题.
修正Windows上对bytecode剥离的问题.
修正Profiler的帧率显示负值问题.
修正Cultureinfo剥离.
修正用File.Delete删除SD卡上文件数据失败的问题.
修正GL ES 1.1上用RenderTexture的问题.
修正音频子系统初始化时间过长导致的崩溃问题.
CheckJNI启用时WWW类的 java.util.HashMap资源已被移除.
修正四色(quad)混合的着色器导致输出变暗的问题.

其他改进
Mac App Store:
添加一个功能用于验证是否通过Mac AppStore下载的游戏.

编程:
能够脚本的执行顺序了,在Edit->Project Settings->Script Execution order菜单中.
添加更快的图片像素操作命令:Texture2D.SetPixels32/GetPixels32.
添加Caching.MarkAsUsed函数.用来确保一些即将要用到的缓存文件被不被和谐掉.

输入:
现在完整支持Win7下的触摸屏输入.
添加Input.eatKeyPressOnTextFieldFocus用于控制输入框焦点的方法,默认时开启的,如果要和3.4以前版本一样的行为就把它设置为假.
当一个textfield有效时按键输入现在支持获取状态(比如Input.GetKeyDown)了.这个尽在3.4或以后的版本中有效.要查询在textfield中输入的按键要使用OnGUI中的”Event.current”.
修正Apple’s Magic Trackpad的支持问题.
MonoDevelop:
脚本的编译方式和Unity内建一致了.
现在支持编译Boo和UnityScript.

Profiling:
Windows独立播放器支持Intel GPA 4.0 Platform Analyzer分析器了.

Javascript的改进:
#pragma允许中文.
Array.slice(startIndex)一定可以返回从startIndex开始的所有元素.
Array.slice支持从末尾截取制定的元素,比如[1,2,3,4].slice(-2)将得到[3,4].
对do-while循环支持的修正.
对通用字典(generic dictionaries)的支持修正:
var dict = new Dictionary.();
dict[“foo”] = function() print(“foo”);
dict[“foo”](); // 打印 foo

导入器:
启用3ds max文件到Fbx自动转换的三分钟超时限制.
仅在资源的父级显示导入设置,以免个别资源的子集别不正确的出现导入设置.

其他改进:
移除批处理模式下Window版编辑器的托盘图标.
移除播放器设置中始终显示水印选项.

其他修正:
Webplayer:
修正极少数情况下造成崩溃的一些问题和改进常规错误处理方法.
修正无网络环境下网页播放器无法工作的问题.
修正苹果系统中非管理员权限上自动更新网页播放器插件的问题.
修正全屏模式下光标丢失的问题.
修正浏览器多个标签运行多个游戏导致光标消失的问题.
稳固网页播放器的帧率.
网页播放器能正确在火狐4浏览器调整窗口的大小.
去除Application.ExternalCall() 和 ExternalEval()的16k字节长度限制.
改善Mac OS X上Chrome, Safari 和 FF4 键盘输入问题.
当恢复焦点时Input.GetAxis()能返回正确的值.
修正在Mac系统上切换全屏偶尔崩溃的问题.
修正Mac系统上Unity后台运行于Dashboard时音频暂停问题.

网络:
修正读取IPV4的IP错误问题.

MonoDevelop:
修正有时无法显示API语法提示的问题.
修正网速慢的环境下调试问题.

资源管线:
导入不含mipmap的dds纹理文件错误提示信息.
导入器尝试导入3ds文件导致无响应问题.
将模型导入设置的高级模式的”Pack Margin”和其他设置更改为更公认的设置.

输入:
Mac系统上全屏网页播放器可用Shift了.
在Win7的触摸屏上可以正确获取鼠标位置了(仅在全屏模式-见已知问题).

物理:
ConfigurableJoint.configuredInWorldSpace将不会导致错误的坐标系,不过项目要重新调整.
改进没有使用法线的网格布料效果和同样网格的着色器.

其他修正:
修正文档中一些小错误.
清理一些会导致Mac App Store拒绝的非公开API.
在64位独立播放器使用涉嫌崩溃的问题.
AssetBundle.Load()现在能预载入所有关联的资源像AssetBundle.LoadAsync()一样.
修正Unity3.3中预加载资源数据写入的头文件不正确导致首次访问这个数据游戏卡的问题.
修正载入大于内存的资源束导致崩溃的问题.
修正Windows上用超过2G内存导致的播放器崩溃问题.
修正当删除内建数组最后一项崩溃的问题.
修正面板上数组列表有时不能正确显示的问题.
修正为每个项目创建一个空的缓存文件夹的问题.
修正Mac OS 10.7中卸载苹果字体导致的崩溃问题.

已知问题:
目前由于在Mac OS X 10.7中卸载字体会导致崩溃,所以暂时禁用了该功能.这意味着TTF字体文件变更在重启Unity之前不会有变化效果,字体仍旧会以旧的字体呈现在编辑器中并且”包含字体数据(‘Include Font Data)”将会被禁用且不能安装这个字体道系统中.
输入:
Windows7的触摸屏在窗口模式下鼠标位置仍旧是错误的.

JavaScript升级指南

Unity3.4改进了JavaScript编译器对Unity API的支持,如GameObject.GetComponent和Object.Instantiate有了更严格的编译模式(#pragma strict).好处是提高了错误检查和生成更高效的代码,从而能更快的执行脚本.缺点是在某些特定情况下原本在Unity3.3中正确的代码在Unity3.4中就报错了,如下:
// 在Foo.js定义一个变量
private var value = 42;
//在Bar.js脚本里引用Foo.value
GetComponent(Foo).value = 21;
在Unity3.3中上面代码是没问题的,但是在3.4中就会报类似下面的错误提示.
Assets/Scripts/Bar.js(2,18): BCE0120: ‘Foo.value’ is inaccessible due to its protection level.
这是因为Unity3.4可以推断用GetComponent能返回Foo一个实例,而Foo.value标记是私有的,而以前的版本中就不会去判断这个是否私有.解决的办法是把 Foo.value写同一个脚本中或把变量公开,去掉”private”即可.

另外一个可能导致脚本编译错误的是从全局命名空间列表中移除了Boo.Lang命名空间,

var l : List;

大多数人可能参考System.Collections.Generic.List写成这样,在Unity3.3中不会报错,但是可能不会有预期效果,而Unity3.4编译器就会报如下错误:

Assets/Scripts/WithGenericList.js(1,8): BCE0018: The name ‘List’ does not denote a valid type (‘not found’). Did you mean ‘Boo.Lang.List’?

这种问题的解决方案是引用System.Collections.Generic命名空间或者引用全部List.

import System.Collections.Generic;

var l: List.;
var m: System.Collections.Generic.List.;

由小可翻译,转载请注明来自1Vr.Cn,否则转载者MJJ.  🙂
原文:http://unity3d.com/unity/whats-new/unity-3.4