国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Unity聲音與視頻播放】播放聲音視頻、代碼控制、UI播放視頻

這篇具有很好參考價(jià)值的文章主要介紹了【Unity聲音與視頻播放】播放聲音視頻、代碼控制、UI播放視頻。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

閑談:

游戲開(kāi)發(fā)比普通軟件開(kāi)發(fā)難也是有原因的,第一 游戲功能需求變化多樣內(nèi)部邏輯交錯(cuò)縱橫, 而軟件相對(duì)固定,無(wú)非也就是點(diǎn)擊跳轉(zhuǎn)、數(shù)據(jù)存儲(chǔ) 第二,游戲需要很多3D數(shù)學(xué)知識(shí)、物理知識(shí),最起碼得有高中物理的基礎(chǔ),力、向量、射線,除了這些數(shù)據(jù)存儲(chǔ)一樣不少

但是,心態(tài)要放平,愚公移山樂(lè)此不疲的態(tài)度,一點(diǎn)點(diǎn)加,一點(diǎn)點(diǎn)玩就行了!現(xiàn)查現(xiàn)學(xué),現(xiàn)學(xué)現(xiàn)用,用完就忘是常態(tài)!

Unity 聲音控制要根據(jù)需求來(lái)說(shuō)。每個(gè)項(xiàng)目需求都不一樣!

今天實(shí)現(xiàn)一個(gè)撞金幣并且發(fā)出聲音的業(yè)務(wù)需求!

場(chǎng)景導(dǎo)入聲音到倉(cāng)庫(kù)

直接把聲音拖到Unity? 文件夾就行

unityplayoneshot,Unity零基礎(chǔ)課程,unity,游戲引擎,播放聲音

然后播放聲音的實(shí)現(xiàn)需要兩個(gè)組件,一個(gè)是聽(tīng)到聲音組件,整個(gè)場(chǎng)景只能有一個(gè),一般都在攝像機(jī)掛在好了AudioListener

unityplayoneshot,Unity零基礎(chǔ)課程,unity,游戲引擎,播放聲音

另一個(gè)就是AudioSource,這個(gè)組件就像一個(gè)播放器,里面指定一個(gè)聲音片段即可播放。也有對(duì)應(yīng)的類來(lái)控制它的一切。

unityplayoneshot,Unity零基礎(chǔ)課程,unity,游戲引擎,播放聲音

當(dāng)你播放的聲音很多的時(shí)候,可以創(chuàng)建多個(gè)這樣的組件,也可以用一個(gè)組件,通過(guò)代碼切換Audioclip,來(lái)實(shí)現(xiàn)播放不同的聲音。但是也有些聲音需要同時(shí)播放,這些Unity 在類里面都考慮到了,Playoneshot()就是疊加播放。

簡(jiǎn)單了解對(duì)應(yīng)類

  1. 聲音組件AudioSource類(可以存儲(chǔ)聲音播放組件,用來(lái)播放和控制聲音)

  2. AudioClip類 聲音片段(用來(lái)存儲(chǔ)音頻),將來(lái)可以賦值給AudioSource.clip實(shí)現(xiàn)音頻切換

一、播放聲音的函數(shù)

1.AudioSource.Play()

直接播放當(dāng)前AudioSource類對(duì)象中clip的內(nèi)容

// Assuming an AudioSource component is attached to the same GameObject
public class AudioPlayer : MonoBehaviour
{
    private AudioSource audioSource;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();
    }

    public void PlaySound()
    {
        if (audioSource.clip != null)
        {
            audioSource.Play();
        }
    }
}

AudioSource.clip 可以從外部賦值,也可以聲明變量,外部賦值,也可以用加載本地資源ResourceLoad()辦法賦值!

2下面這個(gè)代碼實(shí)現(xiàn),自己外部指定多個(gè)音頻,然后播放的時(shí)候切換音頻

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

public class PlayAudio : MonoBehaviour
{
    private AudioSource audioSource;
    public AudioClip[] OneClip=new AudioClip[3];

    void Start()
    {
        //獲取播放組件
        audioSource = GetComponent<AudioSource>();
    }
    //這個(gè)函數(shù)將來(lái)關(guān)聯(lián)按鈕
    public void PlaySound()
    {
        //把數(shù)組中存儲(chǔ)的聲音變量給聲音播放組件中作為默認(rèn)音頻
        audioSource.clip = OneClip[0];
        if (audioSource.clip != null)
        {
            audioSource.Play();//播放組件
        }
    }
}

unityplayoneshot,Unity零基礎(chǔ)課程,unity,游戲引擎,播放聲音

2.PlayOneShot:

PlayOneShot 方法是 Unity AudioSource 類的一個(gè)函數(shù),它允許你在不中斷當(dāng)前正在播放的音頻的情況下播放一個(gè)音頻剪輯。這個(gè)方法特別適合用于播放短暫的聲音效果,如爆炸聲、點(diǎn)擊聲等。它接受兩個(gè)參數(shù):一個(gè) AudioClip 對(duì)象和一個(gè)可選的音量倍數(shù)(float 類型),這個(gè)音量倍數(shù)會(huì)乘以 AudioSource 的音量。例如,如果你有一個(gè)音效用于玩家的跳躍動(dòng)作,你可以使用 PlayOneShot 來(lái)播放這個(gè)跳躍音效,即使背景音樂(lè)已經(jīng)在用同一個(gè) AudioSource 播放。這樣,跳躍音效就會(huì)與背景音樂(lè)同時(shí)播放,而不會(huì)停止或替換背景音樂(lè)。


using UnityEngine;
public class SoundManager : MonoBehaviour
{
    // 音頻源組件的引用
    public AudioSource audioSource;

    // 要播放的音頻剪輯
    public AudioClip jumpSound;

    void Start()
    {
        // 獲取當(dāng)前游戲?qū)ο笊系腁udioSource組件
        audioSource = GetComponent<AudioSource>();
    }

    // 用于播放跳躍聲音的方法
    public void PlayJumpSound()
    {
        // 使用PlayOneShot播放jumpSound音頻剪輯
        // 第二個(gè)參數(shù)是可選的,用于調(diào)整播放音量,如果省略,默認(rèn)為1(即AudioSource的當(dāng)前音量)
        audioSource.PlayOneShot(jumpSound, 1.0f);
    }
}

在這個(gè)例子中,audioSource 是附加到同一個(gè)游戲?qū)ο笊系?AudioSource 組件的引用,jumpSound 是要播放的 AudioClip 對(duì)象。PlayJumpSound 方法通過(guò) PlayOneShot 方法播放 jumpSound 音效,并將音量設(shè)置為 AudioSource 的當(dāng)前音量。這種方式不會(huì)打斷任何當(dāng)前正在 AudioSource 上播放的音頻。

3.PlayClipAtPoint

PlayClipAtPoint 是 Unity 中的一個(gè)靜態(tài)方法,用于在 3D 空間的特定位置播放一個(gè)音頻剪輯(AudioClip),而不需要音頻源(AudioSource)組件。它會(huì)在指定位置創(chuàng)建一個(gè)臨時(shí)的 AudioSource,播放音頻一次,然后銷毀該 AudioSource。這個(gè)方法非常適合播放不需要細(xì)致控制的瞬時(shí)音效,如爆炸聲或玩家收集物品的聲音。

使用 PlayClipAtPoint 方法時(shí),你需要提供音頻剪輯和一個(gè) Vector3 位置。你還可以選擇提供一個(gè)音量參數(shù),但這不是必須的。這個(gè)方法會(huì)自動(dòng)處理音頻的播放和清理工作,使得你無(wú)需在場(chǎng)景中預(yù)先放置音頻源。

using UnityEngine;

public class AudioManager : MonoBehaviour
{
    // 要播放的音頻剪輯
    public AudioClip explosionSound;

    // 在3D空間中的特定位置播放音頻剪輯
    public void PlayExplosionSound(Vector3 position)
    {
        // 使用PlayClipAtPoint在指定位置播放explosionSound音頻剪輯
        // 第二個(gè)參數(shù)是音頻的位置,第三個(gè)參數(shù)是可選的,用于調(diào)整音量,默認(rèn)值是1.0
        AudioSource.PlayClipAtPoint(explosionSound, position, 1.0f);
    }
}

在這段代碼中,我們有一個(gè)名為 explosionSound 的 AudioClip 變量。PlayExplosionSound 方法被調(diào)用時(shí),它將使用 PlayClipAtPoint 方法在指定的 position 位置播放 explosionSound 音效。這個(gè)方法自動(dòng)創(chuàng)建一個(gè)臨時(shí)的 AudioSource 來(lái)播放音效,并在音效播放結(jié)束后銷毀該 AudioSource。這種方式是處理不與特定游戲?qū)ο箨P(guān)聯(lián)的音效的理想選擇。

我的撞金幣案例

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

public class Collision222 : MonoBehaviour
{
    // 克隆金幣
    //掛在到主角上,分別檢測(cè) 金幣克隆區(qū)和障礙物克隆區(qū)
    //讓主角去觸發(fā),金幣觸發(fā)器,如果觸發(fā)了就開(kāi)始克隆金幣
    public GameObject CoinMuban;
    GameObject TempTriggerCoin;
    public Transform oneCoinParent;


    public AudioClip coinSound; // 金幣音效,從外邊拖拽賦值
    public AudioClip MonsterAudio;// 掉血音效,從外邊拖拽賦值

    private void OnTriggerEnter(Collider other)//當(dāng)我觸發(fā)到別人 就把別人的碰撞器存在other里面
    {
        TempTriggerCoin = other.transform.gameObject;
        if (other.transform.gameObject.name== "TriggerCoin01")
        {

            CloneCoin();//開(kāi)始克隆金幣
        }

        if (other.transform.gameObject.name == "TriggerStru")
        {
            CloneStruction();//開(kāi)始克隆障礙物
        }


        if (other.transform.gameObject.tag == "Coin")
        {
            //開(kāi)始加分
            Debug.Log("開(kāi)始加分");
            Destroy(other.transform.gameObject);
            AudioSource.PlayClipAtPoint(coinSound, other.transform.position);//臨時(shí)播放,完畢銷毀
        }

        if (other.transform.gameObject.tag == "Monster")
        {
            //開(kāi)始加分
            Debug.Log("開(kāi)始掉血");
         
        }
    }

    void CloneCoin()
    {
        for (int i = 0; i < 10; i++)
        {
            Vector3 clonePos = new Vector3(156, 0.5f, TempTriggerCoin.transform.position.z + 50+i*3);
            Debug.Log("開(kāi)始克隆金幣");
            GameObject.Instantiate(CoinMuban, clonePos, Quaternion.Euler(0, 0, 0), oneCoinParent);
        }       
    }
    void CloneStruction()
    {
        Debug.Log("開(kāi)始克隆障礙物");
    }
}

二、 多個(gè)聲音播放?

1.創(chuàng)建多個(gè)AudioSource組件,每個(gè)組件播放自己的clip 片段

2.多個(gè)聲音Clip,但是只有一個(gè)AudioSource組件

可以用AudioSource類中公共方法修改當(dāng)前組件的聲音片段。?

AudioSource?audioSource;

核心代碼:

audioSource.clip = clip1;

?audioSource.clip = clip2;

using UnityEngine;

public class PlayMultipleAudioClips : MonoBehaviour
{
    public AudioSource audioSource; // 你的AudioSource組件
    public AudioClip clip1; // 第一個(gè)聲音片段
    public AudioClip clip2; // 第二個(gè)聲音片段

    void Start()
    {
        // 播放第一個(gè)聲音片段
        PlaySound(clip1, 0); // 0表示從頭開(kāi)始播放

        // 在3秒后播放第二個(gè)聲音片段
        Invoke("PlaySecondSound", clip1.length + 3.0f); // 在第一個(gè)聲音片段播放結(jié)束后3秒播放第二個(gè)聲音片段
    }

    void PlaySound(AudioClip clip, float startTime)
    {
        audioSource.clip = clip;
        audioSource.time = startTime;
        audioSource.Play();
    }

    void PlaySecondSound()
    {
        PlaySound(clip2, 0); // 從頭開(kāi)始播放第二個(gè)聲音片段
    }
}

三、播放視頻

視頻的播放和聲音播放極其類似!區(qū)別是視頻播放不需要偵聽(tīng)組件,直接一個(gè)VideoPlayer(就是播放器組件)完成。

但是視頻需要一個(gè)宿主,幫助渲染視頻(這個(gè)宿主可以是3D物體、也可以是UGUI-RawImage)

視頻播放在3D物體上:比如我們應(yīng)該首先創(chuàng)建一個(gè)游戲物體,確保這個(gè)物體有Rendener組件,正常渲染。然后給這個(gè)游戲物體添加VideoPlayer組件即可。這個(gè)組件可以給任何人!

unityplayoneshot,Unity零基礎(chǔ)課程,unity,游戲引擎,播放聲音

在UGUI上創(chuàng)建視頻

首先創(chuàng)建RawImage UI物體,然后添加視頻組件

unityplayoneshot,Unity零基礎(chǔ)課程,unity,游戲引擎,播放聲音

把視頻片段拖上去之后,創(chuàng)建一個(gè)可以渲染視頻的New Render Texture

unityplayoneshot,Unity零基礎(chǔ)課程,unity,游戲引擎,播放聲音

這個(gè)渲染類型的貼圖,既需要渲染視頻,作為Video Player組件的渲染器,也作為Rawimage組件的貼圖。分別拖到為Video Player組件的Target Texture中,然后拖到Raw Image組件上的Texture中!

unityplayoneshot,Unity零基礎(chǔ)課程,unity,游戲引擎,播放聲音

unityplayoneshot,Unity零基礎(chǔ)課程,unity,游戲引擎,播放聲音

這樣就完成了在UI上播放視頻!

剩下的和聲音幾乎一致了!?

拖一個(gè)視頻到Assets 中,直接賦值給組件Video Clip 即可!現(xiàn)在游戲運(yùn)行就可以播放了!

代碼控制:

代碼可以實(shí)現(xiàn)切換不同的視頻進(jìn)行播放。

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


public class PlayVideo : MonoBehaviour
{
    // Start is called before the first frame update
    public VideoClip[] SomeVideo = new VideoClip[10];

    VideoPlayer OneVideoComp;
    void Start()
    {
        OneVideoComp = this.GetComponent<VideoPlayer>();
        OneVideoComp.frame = 10;
    }

    private void Update()
    {
        Debug.Log(OneVideoComp.frameCount/25);
    }
//下面函數(shù)關(guān)聯(lián)外部UGUI按鈕
    public void ButtonClikA()
    {
        OneVideoComp.clip = SomeVideo[0];
        OneVideoComp.Play();
    }
    public void ButtonClikB()
    {
        OneVideoComp.clip = SomeVideo[1];
        OneVideoComp.Play();
  
    }
}

unityplayoneshot,Unity零基礎(chǔ)課程,unity,游戲引擎,播放聲音文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-826267.html

到了這里,關(guān)于【Unity聲音與視頻播放】播放聲音視頻、代碼控制、UI播放視頻的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity基礎(chǔ) 視頻組件VideoPlayer,視頻的播放與控制

    Unity基礎(chǔ) 視頻組件VideoPlayer,視頻的播放與控制

    在Unity中,視頻播放功能具有廣泛的應(yīng)用,以下是一些視頻播放在Unity中的常見(jiàn)用途: ? ? ? 游戲引入和過(guò)場(chǎng)動(dòng)畫:使用視頻播放可以在游戲開(kāi)始或過(guò)場(chǎng)動(dòng)畫中添加引人注目的視頻,為游戲制造氛圍和引起玩家的興趣。這種方式可以通過(guò)播放游戲故事、游戲背景介紹或重要情

    2024年02月10日
    瀏覽(21)
  • Unity點(diǎn)擊按鈕控制視頻播放和暫停

    省流:整體腳本放在底部,需要可直接到底部 1、導(dǎo)入命名空間 2、創(chuàng)建變量 3、第一幀開(kāi)始時(shí)調(diào)用 4、每幀調(diào)用 5、定義方法OnplayorpauseVideo 6、創(chuàng)建圖像,添加視頻播放器(Video Player)組件,把腳本放到圖像,把按鈕添加到腳本。 完整代碼

    2024年02月03日
    瀏覽(19)
  • 【Springboot + Vue 視頻播放web項(xiàng)目】解決視頻播放只有聲音沒(méi)有畫面

    【Springboot + Vue 視頻播放web項(xiàng)目】解決視頻播放只有聲音沒(méi)有畫面

    使用vue-video-player作為視頻播放插件,搗鼓挺久de了一堆bug之后終于能讀取本地MP4視頻文件,但是只有聲音沒(méi)有畫面 前端也是能夠正確地根據(jù)url找到文件,音頻也是正確的 經(jīng)過(guò)前端堂哥的指點(diǎn),首先把上面這個(gè)url直接輸入到瀏覽器,看能不能正常播放,結(jié)果也是只有聲音沒(méi)有

    2024年02月16日
    瀏覽(50)
  • Unity 關(guān)于聲音(AudioSource)的播放、結(jié)束、暫停、繼續(xù)、聲音大小

    Unity 關(guān)于聲音(AudioSource)的播放、結(jié)束、暫停、繼續(xù)、聲音大小

    ????????在Unity開(kāi)發(fā)的過(guò)程中用到聲音(AudioSource)實(shí)現(xiàn)一些聲音的效果是比不可少的 接下來(lái)看看關(guān)于聲音(AudioSource)的內(nèi)容吧 ???????? 截圖的時(shí)候忘記了 那Volume是調(diào)節(jié)聲音大小的0-1? ?0表示沒(méi)有聲音,1表示完全音量?(懶得再截圖了) 聲音(AudioSource)的播放、結(jié)

    2024年02月11日
    瀏覽(30)
  • vue+螢石云ezuikit.js播放直播流視頻(聲音自動(dòng)關(guān)閉,添加控件,多個(gè)視頻播放)

    vue+螢石云ezuikit.js播放直播流視頻(聲音自動(dòng)關(guān)閉,添加控件,多個(gè)視頻播放)

    vue+螢石云ezuikit.js播放直播流視頻(聲音自動(dòng)關(guān)閉,添加控件,多個(gè)視頻播放) 實(shí)例使用 引入最新的ezuikit.js 看過(guò)官網(wǎng)的文檔都知道螢石云的文檔是多么的‘善解人意’哈,懂得都懂,很多東西沒(méi)有說(shuō)清楚的,只能靠自己去摸索或者看他們的demo來(lái)一點(diǎn)點(diǎn)測(cè)試實(shí)現(xiàn) 官網(wǎng)地址:

    2024年02月04日
    瀏覽(97)
  • Qt6 QMediaPlayer播放視頻沒(méi)有聲音或者無(wú)法播放聲音報(bào)錯(cuò)handleSourceError: 0x8007007B解決方法(無(wú)需下載解碼器)

    Qt5到Qt6時(shí)變動(dòng)了許多類QMediaPlayer也在其中。曾經(jīng)只需要這樣即可播放視頻。 而如今需要這樣 這樣寫完后運(yùn)行,發(fā)現(xiàn)視頻可以播放了,但是發(fā)現(xiàn)了個(gè)問(wèn)題,播放的視頻沒(méi)有聲音。打開(kāi)瀏覽器搜索,發(fā)現(xiàn)好像沒(méi)有類似問(wèn)題的文章。至少筆者沒(méi)找到太多類似的。有也是大部分都是

    2024年02月13日
    瀏覽(49)
  • 【方便的Opencv】實(shí)現(xiàn)播放有聲音的視頻+附帶圖片生成gif

    【方便的Opencv】實(shí)現(xiàn)播放有聲音的視頻+附帶圖片生成gif

    ????????因?yàn)樽罱鲜怯玫絆pencv這個(gè)庫(kù)來(lái)處理視頻,過(guò)程遇到了非常多的細(xì)節(jié)問(wèn)題,最后把成品干脆直接放到博客來(lái),這樣以后可以隨時(shí)過(guò)來(lái)取用。 ????????Opencv讀取視頻沒(méi)有聲音的原因是因?yàn)椋阂曨l是分為圖像與音頻的,Opencv僅僅只是讀取了一幀幀圖像,并沒(méi)有讀取

    2023年04月09日
    瀏覽(25)
  • Unity 之利用Audio Source(音頻源)組件用于播放聲音

    Unity 之利用Audio Source(音頻源)組件用于播放聲音

    Unity中的Audio Source(音頻源)是一個(gè)用于播放聲音的組件,通常附加到游戲?qū)ο笊?,以便在游戲中播放音頻效果、音樂(lè)或?qū)υ?。以下是Audio Source的詳細(xì)介紹: 添加Audio Source : 要在Unity中使用Audio Source,首先需要將其附加到一個(gè)游戲?qū)ο笊?。通常,您可以選擇場(chǎng)景中的一個(gè)空游

    2024年02月09日
    瀏覽(24)
  • 【雙核瀏覽器ChromeCore播放視頻出錯(cuò),重影、有聲音但黑屏、缺角······】

    【雙核瀏覽器ChromeCore播放視頻出錯(cuò),重影、有聲音但黑屏、缺角······】

    ? ? 目錄 一、【問(wèn)題】 二、【解決方法】? ?1、找客服【首選】 ?2、去官網(wǎng)下載新版本 安裝 (或者找客服要安裝包) ? ? ? ? ? 這兩天用 雙核瀏覽器 打開(kāi)嗶哩嗶哩播放視頻時(shí),卻發(fā)現(xiàn) 頁(yè)面很卡、視頻播放不正常 (黑屏,或者加載半天也沒(méi)反應(yīng),切換頁(yè)面后,視頻上面還

    2023年04月09日
    瀏覽(16)
  • Vue實(shí)現(xiàn)video視頻倍速播放、調(diào)節(jié)聲音、拖動(dòng)進(jìn)度條、生成智能字幕等

    前言介紹 在現(xiàn)代化的網(wǎng)站中,視頻播放已經(jīng)成為了不可或缺的一部分。而對(duì)于視頻播放的需求也越來(lái)越多樣化,比如倍速播放、調(diào)節(jié)聲音、拖動(dòng)進(jìn)度條、生成智能字幕等。本文將介紹如何使用Vue實(shí)現(xiàn)這些功能。 組件實(shí)現(xiàn)思路 首先,我們需要一個(gè)video標(biāo)簽來(lái)播放視頻。然后,

    2024年02月11日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包