unity的音频、预保存、资源加载、多场景切换、协同

音频

  • Unity支持格式:aiff和wav为短音效;mp3和ogg为长音乐

  • 与音乐相关的 Audio组件

    • 组件AudioListener:收听音乐的组件
    • 组件AudioSource:播放音乐的组件
  • 组件AudioSource的主要参数:

    • Audio Clip:音乐剪辑
    • Mute:是否静音
    • Play On Awake是否自动播放
    • Loop是否循环播放
    • Volumn音量,值为0-1之间的float类型
  • 音乐的播放控制

    • 获取AudioSource组件,控制播放

    • 得到AudioClip对象,通过 AudioSource. PlayAt Point()播放

使用案例:

unity的音频、预保存、资源加载、多场景切换、协同_第1张图片

预保存

配置信息保存

  • PlayerPrefs提供了读写键值对配置信息的方法,只适合读写简单的数据。HasKey、Get***、Set***
  • 复杂的数据要使用IO操作,就是普通的.Net操作,Application. dataPath取得为应用程序分配的数据文件夹的路径

资源加载

  • 可以动态加载资源,动态加载的资源要放到 Assets的Resources路径下
  • 使用 Resources.load加载,不用指定文件扩展名:

Texture2D txt2d=(Texture2D)Resources. Load("1");

  • 如果加载FBX模型的话,使用模型的主显示名,加载出来的虽然也是 GameObiect对象,但是不会显示到 Hierarchy中,需要 Instantiate()复制一个实例才能显示出来

使用例子:

unity的音频、预保存、资源加载、多场景切换、协同_第2张图片

多场景切换

  • file→NewScene来创建新的场景, Unity只能同时打开一个场景
  • 新创建的场景需要手动添加到 BuildSettings中
  • 方法 Application.LoadLevel():通过名字(不带unity后缀)或者id加载场景
  • 方法 Application.LoadLevelAysnc():异步加载场景
  • 属性Application.loadedLevelName:获得当前场景的名字

使用案例:

unity的音频、预保存、资源加载、多场景切换、协同_第3张图片

协同

Unity中使用StartCoroutine实现同步操作的效果

  • 语法:方法返回 Enumerator类型的值
  • 使用 yield returnlenumerator能够返回的值
  • 调用:使用 StartCoroutine(方法调用)

使用例子:

播放完clip1再播放clip2:

unity的音频、预保存、资源加载、多场景切换、协同_第4张图片

类WWW

  • unity的WWW是基于HTTP协议的网络传输功能

  • 需要结合协同调用,来完成数据加载等待

  • 在构造方法中指定URL地址

  • 支持使用Get、post方式发送数据

    • get:在地址后面加?key=value
    • post:在wWW的构造方法中传递
  • 属性text、 texture、 movie、 bytes、 audioClip等,根据返回类型获取数据,不需要做类型转换

  • 上传下载图片

    • 构造WWWForm对象,再传递给WW对象

    • 通过w3.texture,可以获取返回的图片

    • 注意:OnGU中不支持协同,所以要将图片赋值后,再使用gui进行绘制

  • 下载声音文件:Www. WWW.GetAudioClip(false);(false)

  • 自定义数据流:可以是字符串,字节流,json对象等

例子:

按下W加载一张图片资源,并协同显示在GUI。

public class WWWDemo : MonoBehaviour
{
    private Texture2D pic;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.W)) {
            StartCoroutine(GetWWW());
        }
    }

    //访问网络获取图片协同相应
    IEnumerator GetWWW() {
        WWW myWWW = new WWW("https://c-ssl.duitang.com/uploads/item/201803/17/20180317211944_ZQ24P.jpeg");
        yield return myWWW;
        pic = myWWW.texture;

    }

    private void OnGUI()
    {
        if (pic != null) {
            GUI.DrawTexture(new Rect(0, 0, 100, 110),pic);
        }
    }
}

unity的音频、预保存、资源加载、多场景切换、协同_第5张图片

你可能感兴趣的:(Unity笔记)