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

CocosCreator3.8研究筆記(十三)CocosCreator 音頻資源理解

這篇具有很好參考價值的文章主要介紹了CocosCreator3.8研究筆記(十三)CocosCreator 音頻資源理解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


1、 Cocos Creator 支持音頻格式


目前 Cocos Creator 支持以下格式的音頻文件:

音頻格式 說明
.ogg .ogg 是一種開源的有損音頻壓縮格式,與同類型的音頻壓縮格式相比,優(yōu)點在于支持多聲道編碼,采用更加先進的聲學(xué)模型來減少損失音質(zhì),同時文件大小在相同條件下比 .mp3 格式小。目前 Android 系統(tǒng)所有的內(nèi)置鈴聲也都使用 .ogg 文件。
.mp3 .mp3 是最常見的一種數(shù)字音頻編碼和有損壓縮格式。通過舍棄 PCM 音頻資料中對人類聽覺不重要的部分,達(dá)到壓縮成較小文件的目的。但對于大多數(shù)用戶的聽覺感受來說,壓縮后的音質(zhì)與壓縮前的相比并沒有明顯的下降。MP3 被大量軟硬件支持,應(yīng)用廣泛,是目前的主流。
.wav .wav 是微軟與 IBM 公司專門為 Windows 開發(fā)的一種標(biāo)準(zhǔn)數(shù)字音頻文件,該文件能記錄各種單聲道或立體聲的聲音信息,并能保證聲音不失真,因為音頻格式未經(jīng)過壓縮。但文件占用相對較大。
.mp4 .mp4 是一套用于音頻、視頻信息的壓縮編碼標(biāo)準(zhǔn),對于不同的對象可采用不同的編碼算法,從而進一步提高壓縮效率。
.m4a .m4a 是僅有音頻的 MP4 文件。音頻質(zhì)量是壓縮格式中非常高的,同時在相同的比特率下,文件占用更小。

2、 Cocos Creator 音頻資源生成

Cocos Creator 直接將音頻文件拖拽到 資源管理器 面板, 會生成相應(yīng)的音頻資源(AudioClip)。

cocos creator 實現(xiàn)音頻播放,CocosCreator3.8,筆記,音視頻,CocosCreator,CocosCreator3.8,Cocos,javascript


cocos creator 實現(xiàn)音頻播放,CocosCreator3.8,筆記,音視頻,CocosCreator,CocosCreator3.8,Cocos,javascript


3、AudioSource 組件播放音樂

AudioSource 組件的屬性說明:

屬性 說明
Clip 添加的用于播放的音頻資源,默認(rèn)為空,點擊后面的箭頭按鈕即可選擇。
Loop 是否循環(huán)播放
PlayOnAwake 是否在游戲運行(組件激活)時自動播放音頻
Volume 音量大小,范圍在 0~1 之間

使用AudioSource 組件播放音頻步驟:

(1)、在層級管理器中,創(chuàng)建播放音頻的節(jié)點


cocos creator 實現(xiàn)音頻播放,CocosCreator3.8,筆記,音視頻,CocosCreator,CocosCreator3.8,Cocos,javascript


(2)、資源管理器中添加腳本

這里測試命名為:AudioSourceControl.ts


cocos creator 實現(xiàn)音頻播放,CocosCreator3.8,筆記,音視頻,CocosCreator,CocosCreator3.8,Cocos,javascript


(3)、在 層級管理器 中綁定腳本

將資源管理器中的腳本文件AudioSourceControl.ts 拖拽到層級管理器中:

cocos creator 實現(xiàn)音頻播放,CocosCreator3.8,筆記,音視頻,CocosCreator,CocosCreator3.8,Cocos,javascript


(4)、層級管理器中添加 AudioSource 組件

點擊 屬性檢查器 下方的 添加組件 按鈕,選擇 Audio -> AudioSource 即可添加 AudioSource 組件到節(jié)點上。


cocos creator 實現(xiàn)音頻播放,CocosCreator3.8,筆記,音視頻,CocosCreator,CocosCreator3.8,Cocos,javascript


添加節(jié)點后如下:

cocos creator 實現(xiàn)音頻播放,CocosCreator3.8,筆記,音視頻,CocosCreator,CocosCreator3.8,Cocos,javascript


將資源管理器中的音頻文件拖拽到屬性檢查器中,audiosource 組件的 clip 資源中:

cocos creator 實現(xiàn)音頻播放,CocosCreator3.8,筆記,音視頻,CocosCreator,CocosCreator3.8,Cocos,javascript


(5)、AudioSourceControl.ts 中添加AudioSource 屬性,并實現(xiàn)播放聲音


import { _decorator, Component,  AudioSource,  assert } from 'cc';
const { ccclass, property} = _decorator;

@ccclass('AudioSourceControl')
export class AudioSourceControl extends Component {
   @property(AudioSource)
   public audioSource: AudioSource = null!;

    onLoad() {
   
       // 獲取 AudioSource 組件
       const audioSource = this.node.getComponent(AudioSource)!;
       // 檢查是否含有 AudioSource,如果沒有,則輸出錯誤消息
       assert(audioSource);
       // 將組件賦到全局變量 _audioSource 中
       this.audioSource = audioSource;
       console.log(" this._audioSource==" +  this.audioSource)
   }

   start() {
       this.play()
   }

   update(deltaTime: number) {
       
   }


   play () {
       // 播放音樂
       this.audioSource.play();
       console.log(" this._audioSource play")
   }

   pause () {
       // 暫停音樂
       this.audioSource.pause();
   }
}


(6)、 播放狀態(tài)的監(jiān)聽

import { _decorator, Component,  AudioSource,  assert } from 'cc';
const { ccclass, property} = _decorator;

@ccclass('AudioSourceControl')
export class AudioSourceControl extends Component {
    
    @property(AudioSource)
    public audioSource: AudioSource = null!;

     onLoad() {

        // 獲取 AudioSource 組件
        const audioSource = this.node.getComponent(AudioSource)!;
        // 檢查是否含有 AudioSource,如果沒有,則輸出錯誤消息
        assert(audioSource);
        // 將組件賦到全局變量 _audioSource 中
        this.audioSource = audioSource;

        console.log(" this._audioSource==" +  this.audioSource)
    }

    onEnable () {
        // Register the started event callback
        this.audioSource.node.on(AudioSource.EventType.STARTED, this.onAudioStarted, this);
        // Register the ended event callback
        this.audioSource.node.on(AudioSource.EventType.ENDED, this.onAudioEnded, this);
    }

    onDisable () {
        this.audioSource.node.off(AudioSource.EventType.STARTED, this.onAudioStarted, this);
        this.audioSource.node.off(AudioSource.EventType.ENDED, this.onAudioEnded, this);
    }
    
    onAudioStarted () {
        console.log("this._audioSource onAudioStarted")
    }

    onAudioEnded () {
        console.log("this._audioSource onAudioEnded")
    }

    start() {
        this.play()
    }

    update(deltaTime: number) {
        
    }

        
    play () {
        // 播放音樂
        this.audioSource.play();
        
        console.log(" this._audioSource play")
    }

    pause () {
        // 暫停音樂
        this.audioSource.pause();
    }
}


cocos creator 實現(xiàn)音頻播放,CocosCreator3.8,筆記,音視頻,CocosCreator,CocosCreator3.8,Cocos,javascript


4、AudioSource 組件播放音效

音效播放一般有以下特點:

  • 播放時間短
  • 同時播放的數(shù)量多

AudioSource 組件提供 playOneShot 接口來播放音效。

輸入?yún)?shù):

名稱 類型 描述
volume number 音量 0-1

playOneShot 是一次性播放操作,播放后的音效無法暫停或停止播放,也無法監(jiān)聽播放結(jié)束的事件回調(diào)。

import { AudioClip, AudioSource, Component, _decorator } from 'cc';
const { ccclass, property } = _decorator;

@ccclass("AudioSourceControl")
export class AudioSourceControl extends Component {     

    @property(AudioClip)
    public clip: AudioClip = null!;   

    @property(AudioSource)
    public audioSource: AudioSource = null!;

    playOneShot () {
        this.audioSource.playOneShot(this.clip, 1);
    }
}


playOneShot 是一次性播放操作,播放后的音效無法暫?;蛲V共シ牛矡o法監(jiān)聽播放結(jié)束的事件回調(diào).


5、音頻管理器 AudioManager.ts 封裝

//AudioManager.ts
import { Node, AudioSource, AudioClip, resources, director } from 'cc';
/**
 * @en
 * this is a sington class for audio play, can be easily called from anywhere in you project.
 * @zh
 * 這是一個用于播放音頻的單件類,可以很方便地在項目的任何地方調(diào)用。
 */ 
export class AudioManager {
    private static _inst: AudioManager;
    public static get inst(): AudioManager {
        if (this._inst == null) {
            this._inst = new AudioManager();
        }
        return this._inst;
    }

    private _audioSource: AudioSource;
    constructor() {
        //@en create a node as AudioManager
        //@zh 創(chuàng)建一個節(jié)點作為 AudioManager
        let audioMgr = new Node();
        audioMgr.name = '__audioMgr__';

        //@en add to the scene.
        //@zh 添加節(jié)點到場景
        director.getScene().addChild(audioMgr);

        //@en make it as a persistent node, so it won't be destroied when scene change.
        //@zh 標(biāo)記為常駐節(jié)點,這樣場景切換的時候就不會被銷毀了
        director.addPersistRootNode(audioMgr);

        //@en add AudioSource componrnt to play audios.
        //@zh 添加 AudioSource 組件,用于播放音頻。
        this._audioSource = audioMgr.addComponent(AudioSource);
    }

    public get audioSource() {
        return this._audioSource;
    }

    /**
     * @en
     * play short audio, such as strikes,explosions
     * @zh
     * 播放短音頻,比如 打擊音效,爆炸音效等
     * @param sound clip or url for the audio
     * @param volume 
     */
    playOneShot(sound: AudioClip | string, volume: number = 1.0) {
        if (sound instanceof AudioClip) {
            this._audioSource.playOneShot(sound, volume);
        }
        else {
            resources.load(sound, (err, clip: AudioClip) => {
                if (err) {
                    console.log(err);
                }
                else {
                    this._audioSource.playOneShot(clip, volume);
                }
            });
        }
    }

    /**
     * @en
     * play long audio, such as the bg music
     * @zh
     * 播放長音頻,比如 背景音樂
     * @param sound clip or url for the sound
     * @param volume 
     */
    play(sound: AudioClip | string, volume: number = 1.0) {
        if (sound instanceof AudioClip) {
            this._audioSource.clip = sound;
            this._audioSource.play();
            this.audioSource.volume = volume;
        }
        else {
            resources.load(sound, (err, clip: AudioClip) => {
                if (err) {
                    console.log(err);
                }
                else {
                    this._audioSource.clip = clip;
                    this._audioSource.play();
                    this.audioSource.volume = volume;
                }
            });
        }
    }

    /**
     * stop the audio play
     */
    stop() {
        this._audioSource.stop();
    }

    /**
     * pause the audio play
     */
    pause() {
        this._audioSource.pause();
    }

    /**
     * resume the audio play
     */
    resume(){
        this._audioSource.play();
    }
}


6、Web 平臺的播放限制

目前 Web 平臺的音頻播放需要遵守最新的 Audio Play Policy,即使 AudioSource 組件設(shè)置了 playOnAwake,也需要在第一次用戶點擊事件發(fā)生后,才會播放:


如圖,當(dāng)音樂開始播放后,有聲音圖標(biāo)顯示:


cocos creator 實現(xiàn)音頻播放,CocosCreator3.8,筆記,音視頻,CocosCreator,CocosCreator3.8,Cocos,javascript文章來源地址http://www.zghlxwxcb.cn/news/detail-839398.html


到了這里,關(guān)于CocosCreator3.8研究筆記(十三)CocosCreator 音頻資源理解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • CocosCreator3.8研究筆記(二十四)CocosCreator 動畫系統(tǒng)-動畫編輯器實操-關(guān)鍵幀實現(xiàn)動態(tài)水印動畫效果

    CocosCreator3.8研究筆記(二十四)CocosCreator 動畫系統(tǒng)-動畫編輯器實操-關(guān)鍵幀實現(xiàn)動態(tài)水印動畫效果

    上一篇,我們介紹了動畫編輯器相關(guān)功能面板說明,感興趣的朋友可以前往閱讀: CocosCreator3.8研究筆記(二十三)CocosCreator 動畫系統(tǒng)-動畫編輯器相關(guān)功能面板說明。 熟悉了動畫編輯器的基礎(chǔ)操作,那么再使用動畫編輯器制作動畫就比較簡單了。 今天,我們來介紹動畫編輯

    2024年02月07日
    瀏覽(22)
  • CocosCreator3.8研究筆記(二)windows環(huán)境 VS Code 編輯器的配置

    CocosCreator3.8研究筆記(二)windows環(huán)境 VS Code 編輯器的配置

    一、設(shè)置文件顯示和搜索過濾步驟 為了提高搜索效率以及文件列表中隱藏不需要顯示的文件, VS Code 需要設(shè)置排除目錄用于過濾。 比如 cocoscreator 中,編輯器運行時會自動生成一些目錄:build 、 temp 、 library, 所以應(yīng)該在搜索中排除。 而 assets 目錄下的每個文件都會生成一個

    2024年02月10日
    瀏覽(20)
  • CocosCreator3.4.2源碼渲染流程解讀

    CocosCreator3.4.2源碼渲染流程解讀

    ?首先上一張腦圖鎮(zhèn)樓,有些流程還有待后續(xù)補充,但是整個刷新過程差不多都完成了。 在上一個xmind文件地址 https://download.csdn.net/download/m0_37609239/87254684 接下來就正式開始講代碼: 每幀刷新渲染還是從mainloop開始講,前面的流程可以看 ??????????????CocosC

    2023年04月08日
    瀏覽(19)
  • Unity 音頻資源優(yōu)化

    Unity 音頻資源優(yōu)化

    1、聲道設(shè)置 (1)、不設(shè)置 單聲道 音頻大小為下圖 (2)、設(shè)置單聲道 音頻大小為下圖 2、加載類型 (1)、Decompress On Load 使用內(nèi)存8.1M (2)、Compressed In Memory 占用內(nèi)存2.7M (3)、Streaming 占用內(nèi)存1.5M 但是CPU暫用提升了 3、采樣率和壓縮格式設(shè)置 4、總結(jié) 優(yōu)化前 優(yōu)化后

    2024年04月11日
    瀏覽(22)
  • 第十三屆藍(lán)橋杯大賽軟件賽省賽(C++研究生組)

    可以證明,只要首先裁剪最外圍的 4 4 4 條邊,之后無論怎樣裁剪,次數(shù)都是最少。對于 n n n 行 m m m 列的二維碼,至少需要裁剪 n m + 3 nm + 3 nm + 3 次,因此答案為 20 × 22 + 3 = 443 20times 22+3=443 20 × 22 + 3 = 443 。 證明:只需證明裁掉邊界后至少還需裁剪 n m ? 1 nm-1 nm ? 1 次。 n

    2023年04月10日
    瀏覽(25)
  • AIGC產(chǎn)業(yè)研究報告 2023——音頻生成篇

    AIGC產(chǎn)業(yè)研究報告 2023——音頻生成篇

    易觀: 今年以來,隨著人工智能技術(shù)不斷實現(xiàn)突破迭代,生成式AI的話題多次成為熱門,而人工智能內(nèi)容生成(AIGC)的產(chǎn)業(yè)發(fā)展、市場反應(yīng)與相應(yīng)監(jiān)管要求也受到了廣泛關(guān)注。為了更好地探尋其在各行業(yè)落地應(yīng)用的可行性和發(fā)展趨勢,易觀對AIGC產(chǎn)業(yè)進行了探索并將發(fā)布AIGC產(chǎn)

    2024年02月09日
    瀏覽(21)
  • AI 繪畫Stable Diffusion 研究(十三)SD數(shù)字人制作工具SadTlaker使用教程

    AI 繪畫Stable Diffusion 研究(十三)SD數(shù)字人制作工具SadTlaker使用教程

    免責(zé)聲明: 本案例所用安裝包免費提供,無任何盈利目的。 大家好,我是風(fēng)雨無阻。 想必大家經(jīng)常看到,無論是在產(chǎn)品營銷還是品牌推廣時,很多人經(jīng)常以數(shù)字人的方式來為自己創(chuàng)造財富。而市面上的數(shù)字人收費都比較昂貴,少則幾千,多則上萬。 那么如何才能免費制作屬

    2024年02月12日
    瀏覽(20)
  • Dubbo 的心臟:理解和應(yīng)用多種協(xié)議【十三】

    Dubbo 的心臟:理解和應(yīng)用多種協(xié)議【十三】

    歡迎來到我的博客,代碼的世界里,每一行都是一個故事 在分布式系統(tǒng)的世界里,協(xié)議就像是不同服務(wù)之間的共同語言。它決定了服務(wù)如何交流,影響著系統(tǒng)的性能和可靠性。Dubbo 作為一個優(yōu)秀的微服務(wù)框架,提供了多種協(xié)議選項,讓開發(fā)者能夠根據(jù)自己的需要靈活選擇。在

    2024年01月21日
    瀏覽(23)
  • 【JavaScript】后端返回的二進制流音頻數(shù)據(jù)或本地音頻資源,前端如何播放?

    如果我們要使用本地的音頻資源,在 vue3 中那么我們需要對資源的地址做一下處理 后端返回二進制流音頻數(shù)據(jù),怎么讓其可播放 前端播放二進制語音流

    2024年02月03日
    瀏覽(32)
  • 基于Stackelberg博弈的邊緣云資源定價機制研究

    摘要 移動邊緣計算(MEC)支持終端設(shè)備將任務(wù)或應(yīng)用程序卸載到邊緣云服務(wù)器處理,邊緣云服務(wù)器處理外來任務(wù)會消耗本地資源,為激勵邊緣云提供資源服務(wù),構(gòu)建向終端設(shè)備收費以獎勵邊緣云的資源定價機制尤為重要?,F(xiàn)有的定價機制依賴中間商的靜態(tài)定價,費用高且終端任務(wù)

    2024年02月05日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包