您现在的位置是:首页 >技术交流 >【Unity入门】18.脚本对资源进行访问网站首页技术交流

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

Lampard猿奋 2023-06-10 12:00:02
简介【Unity入门】18.脚本对资源进行访问

【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);

```

    最后看看效果~

 

好啦今天就到这里,谢谢各位感谢阅读!!!
点赞,关注!!!

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。