简体   繁体   English

无法将类型“UnityEngine.AudioClip”隐式转换为“UnityEngine.AudioSource”

[英]Cannot implicitly convert type 'UnityEngine.AudioClip' to 'UnityEngine.AudioSource'

Trying to make random audio play from an array but keep getting this error:尝试从数组中播放随机音频但不断收到此错误:

error CS0029: Cannot implicitly convert type 'UnityEngine.AudioClip' to 'UnityEngine.AudioSource'

This is my code:这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TonicFunction : MonoBehaviour
{
    public AudioSource TonicAudio;
    public AudioClip[] audioClipArray;
   
    void Awake()
    {
        TonicAudio = GetComponent<AudioSource>();
    }

    void Start()
    {
        TonicAudio = audioClipArray[Random.Range(0,audioClipArray.Length)];
        TonicAudio.PlayOneShot (TonicAudio.clip);
    }
}

Beginner at C# so any advice would be appreciated. C# 的初学者,因此我们将不胜感激。 Thanks in advance!提前致谢!

The problem is the following line:问题是以下行:

TonicAudio = audioClipArray[Random.Range(0,audioClipArray.Length)];

Here you're trying to assign an AudioClip to something which is an AudioSource .在这里,您尝试将AudioClip分配给AudioSource That won't work.那是行不通的。 What you instead want to do is inform the AudioSource which clip to play by assigning clip and then play it like相反,您想要做的是通过分配clip通知AudioSource要播放哪个剪辑,然后像这样播放

TonicAudio.clip = audioClipArray[Random.Range(0,audioClipArray.Length)];
TonicAudio.Play();

or use PlayOneShot() instead by using或使用PlayOneShot()代替

TonicAudio.PlayOneShot (audioClipArray[Random.Range(0,audioClipArray.Length)]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法将 `UnityEngine.AudioSource&#39; 表达式转换为类型 `UnityEngine.AudioClip&#39; - Cannot convert `UnityEngine.AudioSource' expression to type `UnityEngine.AudioClip' 无法隐式转换类型'UnityEngine.Vector2?'到'UnityEngine.Vector2' - Cannot implicitly convert type 'UnityEngine.Vector2?' to 'UnityEngine.Vector2' 无法将类型“UnityEngine.Transform”隐式转换为“UnityEngine.UI.Text” - Cannot implicitly convert type 'UnityEngine.Transform' to 'UnityEngine.UI.Text' 无法将类型&#39;UnityEngine.ScriptableObject&#39;隐式转换为&#39;T&#39; - Cannot implicitly convert type `UnityEngine.ScriptableObject' to `T' 无法将类型字符串隐式转换为“UnityEngine.UI.Text” - Cannot implicitly convert type string to `UnityEngine.UI.Text' 无法将类型`string&#39;隐式转换为`UnityEngine.GUIText&#39; - Cannot implicitly convert type `string' to `UnityEngine.GUIText' 无法将类型int&#39;隐式转换为unityengine.vector3&#39; - cannot implicitly convert type int' to unityengine.vector3' 如何修复“无法将类型'void'隐式转换为'UnityEngine.AsyncOperation”? - How to fix "Cannot implicitly convert type 'void' to 'UnityEngine.AsyncOperation"? 无法将类型“UnityEngine.GameObject”隐式转换为“GameObject” - Cannot implicitly convert type 'UnityEngine.GameObject' to 'GameObject' 无法将类型“float”隐式转换为“UnityEngine.Quaternion” - Cannot implicitly convert type 'float' to 'UnityEngine.Quaternion'
相关标签
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM