• Unity学习笔记4:声音和用户界面


    Edit->Project Settings->Audio可以设置Audio Manager的各项参数,比较简单。

    Reverb Zone:混响区,在混响区内的audio listener接收到的声音都要经过混响处理。可以通过component->Audio->Audio Reverb Zone添加。Audio effects的设置需要PRO版本的Unity。

    Audio Listener在每个场景只有一个,一般设置在主摄像头上,也可以设置在主角身上。

    Audio Source的属性设置:

    Bypass Effect:开/关Audio effect(各种滤波器等)
    Play On Awake:进入游戏即开始播放。否则要在script里使用play()来激活。
    Priority:设置多音源混杂时的播放优先权。0最高256最低,默认是128,背景音乐最好设为0以获得最高优先权。
    Volume:距音源1m处的声音音量大小。
    Pitch:通过改变播放速度来调节音调,默认1为普通速度。


    3D音效设置:

    Pan Level:3d引擎对音源的影响级别。
    Spread:3d音源的传播角度。
    Doppler Level:多普勒效应,0为没有。
    Min Distance:在此距离之内声音不会衰减,保持最大音量。
    Max Distance:在此距离之外声音的衰减过程结束,保持最小音量。
    Rolloff Mode:声音的衰减速度。三种模式:Logarithmic、Linear(指数递减、线性递减)和定制。

    声音衰减的三种模式
    声音衰减的三种模式:指数、线性和定制

    iOS中声音的导入设置里面注意一项,如果选中Hardware Decoding可以使用iphone自带的硬件解码器。
    另外移动平台中声音文件要打包成mp3格式,可能会使你辛苦做好的可完美循环的声音文件遭破坏,网上可以找到相关工具防止这种潜在的破坏。

    声音导入还有一项设置非常重要,就是Load Type,分三种:
    Decompress on load:游戏装载的同时解压到内存中,体积比压缩的音频大得多,所以最好只用于较短小的音频文件,可以避免运行时解压造成的系统开销。
    Compressed in memory:装入内存时不解压,运行时解压,对游戏性能会有小幅影响,适合背景音乐之类的较大文件。
    Stream from disc:直接从硬盘读取的音频流,占据内存的只是整个音频文件的一小部分,适合长时间的背景音乐,性能取决于硬件,建议最多同时使用两个这样的音频流。

    -------------
    Unity中建立用户图形界面的方法:新建GameObject里的GUI text和GUI texture,或者在脚本中使用UnityGUI。UnityGUI是在Unity2.0中引入的GUI脚本编程系统。

    Unity可以导入.ttf格式的字体。

    字体导入的设置:

    Character:字体编码模式,在这里可以设置大写或者小写模式,也可以设置dynamic(动态).Unity3.x引入了对字体的动态渲染,如果选择了dynamic,那么不用根据字体编码预先渲染字体纹理,而是交给操作系统在运行中进行渲染。这样做的好处是省去预先渲染字体纹理需要的内存空间,也不需要包含字体数据,另外更好支持亚洲文字和大字体。缺陷是操作系统不同字体可能会看起来不一样,比如mac和windows的差别。另外当系统没有该字体时,使用备用字体的开销会对字体纹理的渲染速度造成一定损失。Dynamic模式目前只支持桌面开发。

    Font Rendering(在非dynamic模式下):字体反锯齿(anti-aliasing)的程度。
    Include font data:在build游戏时是否包含字体文件。玩家的操作系统可能不包含你使用的字体。
    Font Names:如果前一项选择了不包含,那么这里需要列出字体名单,用逗号分隔,优先顺序从左到右。

    导入一个字体文件以后会显示两个资源:"font material"和"font texture".

    Unity支持Unicode,需要在导入字体时设置Character为Unicode或Dynamic.使用GUIText或Text Mesh时可以直接在text栏内输入Unicode字符。在脚本中使用Unicode,比如在脚本中输入一段Unicode编码的字符串,用于UnityGUI,GUIText,或者Text Mesh,需要将脚本保存为UTF-16编码。

    改变字体颜色:

    方法多种多样,依赖于使用字体的方式:
    1.GUIText & Text Mesh:定制一个字体material,把导入的字体texture贴上去,使用Unity内置的GUI/Text Shader,在颜色属性里就可以更改。
    2.UnityGUI脚本定制:Asset->Creat->GUI Skin,对不同状况下的字体颜色都可以进行控制。

    提示:GameObject->Creat Other->3D Text默认字体是Arial,该字体不支持Unicode.

    GUI Text的属性中:
    Font的优先级低于Material,如果Material中设置了相应的材质,将覆盖Font的设置。
    Pixel Correct:字体按照导入时设置的大小显示,如果关闭此项,字母大小可在transform中调整。

    GUI Layer:GUI Text是以2D形式在GUI Layer里渲染的,摄像头默认带有GUI Layer组件。GUI Layer的作用是渲染场景中所有GUI Text和GUI Texture,但不影响UnityGUI.

    GUI Texture:和GUI Text一样,以2D形式在GUI Layer里渲染。通过scipt,可以把玩家状态反馈到GUI Texture显示出来(比如角色HP条)。

    GUI Texture 边界范围
    GUI Texture 边界范围

    玩家屏幕分辨率有大有小,GUI Texture的大小就会有变动,但是Border范围内的像素是不会变大缩小的。另外如果你不希望你的GUI Texture大小随着屏幕分辨率变化,而是使用固定的像素点,调整GUI Texture属性里的Pixel Inset选项区(X,Y,Width,Height)。首先设置GUI Texture的transform为(0,0,0),然后x是相对屏幕左端的距离,y是相对屏幕底端的距离。

    GUI Texture的层次遮挡关系:由每个GUI Texture的transform属性的z值决定,大值遮挡小值。
    建议总是使用Pixel Inset来定制GUI的大小。

    使用UnityGUI可以简单快速构建GUI。以下代码实例构建一个按钮:

    JS版:

    // JavaScript
    function OnGUI () {
         if (GUI.Button (Rect (10,10,150,100), "I am a button")) {
              print ("You clicked the button!");
         }
    }

    C#版:

    // C#
    using UnityEngine;
    using System.Collections;
    public class GUITest : MonoBehaviour {
         void OnGUI () {
              if (GUI.Button (new Rect (10,10,150,100), "I am a button")) {
                   print ("You clicked the button!");
              }
         }
    }
    上面脚本创建的按钮
    上面脚本创建的按钮
    UnityGUI是Unity自带的功能强大而复杂的系统,可以用于构建复杂的GUI帮助提高用户体验,不过随着新的技术不断发展,新的工具应运而生。Autodesk的子部门Gameware已经开发出一套快速搭建游戏GUI的方案,Scaleform已经支持UE3,Vision Engine,CryEngine等引擎,并将很快支持Unity3D。
    Gameware - Scaleform
    Gameware - Scaleform
    UnityGUI官方文档给出了比较详细的学习路线:
    本blog会继续更新这方面的学习笔记。
  • 相关阅读:
    Gym
    [APIO2014] 回文串
    python选课系统
    python面向对象之类成员修饰符
    python面向对象之类成员
    python的shelve模块
    python的re模块
    python的configparser模块
    python的sys和os模块
    python的hashlib模块
  • 原文地址:https://www.cnblogs.com/definitelymaybe/p/3617782.html
Copyright © 2020-2023  润新知