【Unity入门】脚本对资源进行访问
大家好,我是Lampard~~
欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢
(一)脚本中切换背景音乐
(1)定义全局变量,引用音频资源
之前的博客中,我们有学习到AudioSource这个音频组件,我们可以利用它去播放BGM,今天第一个任务就是学习,在脚本中,控制BGM进行切换
首先我们需要再找一首BGM,比如现在肥陈很火的孤勇者吧 ,我们加到assert中
然后我们需要把音频资源当成全局变量,声明在脚本上,我们看到音频资源的类型是AudioClip,那么我们就定义两个全局的AudioClip就好了
public AudioClip BGM1;
public AudioClip BGM2;
下一步就是把资源拖到定义的全局变量中,这样我们就可以在代码中使用它了
(2)设置AudioSource的clip属性
下一步就是给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();
}
}
总结来说,访问一个资源和访问一个组件,或者结点对象是没什么差别的,都是可以通过声明为全局变量的方式去访问它
(二)数组类型的参数
(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一个个拖过去就行了
紧接着我们稍微改一下代码逻辑,每次鼠标左键点击时,就随机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);
```
最后看看效果~
好啦今天就到这里,谢谢各位感谢阅读!!!
点赞,关注!!!