【Unity入门】脚本对资源进行访问

    大家好,我是Lampard~~

  

(一)脚本中切换背景音乐

(1)定义全局变量,引用音频资源

    之前的博客中,我们有学习到AudioSource这个音频组件,我们可以利用它去播放BGM,今天第一个任务就是学习,在脚本中,控制BGM进行切换

unity 音乐导入格式 unity怎么导入背景音乐_unity 音乐导入格式

    首先我们需要再找一首BGM,比如现在肥陈很火的孤勇者吧 ,我们加到assert中

unity 音乐导入格式 unity怎么导入背景音乐_游戏引擎_02

音频资源的类型是AudioClip,那么我们就定义两个全局的AudioClip就好了

public AudioClip BGM1;
    public AudioClip BGM2;

    下一步就是把资源拖到定义的全局变量中,这样我们就可以在代码中使用它了

unity 音乐导入格式 unity怎么导入背景音乐_Source_03

(2)设置AudioSource的clip属性

首先需要引用到AudioSource组件,使用上节课学习到的GetComponent方法,然后监听鼠标按下事件,如果是左键(参数是0)则播放BGM1,如果是右键(参数是1)则播放孤勇者

    代码如下:

void Update()
    {
        AudioSource audio = this.GetComponent<AudioSource>();
        if (Input.GetMouseButtonDown(0))
        {
            audio.clip = BGM1;
            Debug.Log("歌曲名字为" + BGM1.name);
            audio.Play();
        }

        if (Input.GetMouseButtonDown(1))
        {
            audio.clip = BGM2;
            Debug.Log("歌曲名字为" + BGM2.name);
            audio.Play();
        }

    }

unity 音乐导入格式 unity怎么导入背景音乐_unity_04

    总结来说,访问一个资源和访问一个组件,或者结点对象是没什么差别的,都是可以通过声明为全局变量的方式去访问它 

(二)数组类型的参数

(1)数组类型的参数[]

    长时间关注的小伙伴知道我去年写了一个弹琴的玩法,那里的音效资源可不是一般的多,如果我们一个个定义成为BGM1,BGM2...那会很麻烦且难看,因此我们自然而然的就想到了更好的数据结构去存储,比如数组

    在C#中我们用[]括号去声明一个数组,在实例化的时候new来创建,比如下面的代码:

声明一个包含 10 个整数的数组:

```
int[] myIntArray = new int[10];
```

声明一个包含 3 个字符串的数组:

```
string[] myStringArray = new string[3];
```

声明一个包含 5 个布尔值的数组,并初始化其元素:

```
bool[] myBoolArray = new bool[5] { true, false, true, false, true };

    同样的,在声明全局参数的时候,也可以把参数定义为数组类型,只需要加一个[]就可以了

(2)随机播放车载音乐

    举个栗子,比如我们现在需要鼠标点击的时候,随机切换一首BGM那要怎么做呢?

    首先我们定义一个全局的AudioClip数组

public AudioClip[] BGMS;

    然后我们可以看到编译器中多了一个这样的东西,我们可以把BGM一个个拖过去就行了


unity 音乐导入格式 unity怎么导入背景音乐_unity 音乐导入格式_05

    紧接着我们稍微改一下代码逻辑,每次鼠标左键点击时,就随机0~2一个整数,然后把数组该位置的BGM赋值给AudioSource的clip属性就行

void Update()
    {
        AudioSource audio = this.GetComponent<AudioSource>();
        if (Input.GetMouseButtonDown(0))
        {
            int randomNum = Random.Range(0, 3);
            audio.clip = BGMS[randomNum];
            Debug.Log("歌曲名字为" + audio.clip.name);
            audio.Play();
        }

    }

    随机需要用到Random.Range函数,它的语法如下:

生成一个介于 0 和 1 之间的随机小数:


```

float randomFloat = Random.Range(0f, 1f);

```


生成一个介于 1 和 10 之间的随机整数:


```

int randomInt = Random.Range(1, 11);

```

    最后看看效果~

unity 音乐导入格式 unity怎么导入背景音乐_unity_06