【windows测试通过】关于Godot导入外部音频文件的问题

news2025/1/11 17:04:03
file.open(filepath, file.READ)
var buffer = file.get_buffer(file.get_len())
#put data into audiostreamsample
var stream = AudioStreamSample.new()
stream.data = buffer

代码给出,还没有测试过。(godot3.2测试未通过)

在运行时轻松加载外部音频 (WAV) 文件 ·问题 #732 ·Godotengine/Godot-proposals(戈多引擎) (github.com)

我给出的办法(windos测试通过)

1. 先把外部音频文件在游戏开发的时候导入在godot的res://目录下,然后复制导入后的.imoprt/文件夹下的数据文件(核心原理:引擎底层重导入,importer)

Godot3.5.2支持的音频文件

MP3对应引擎底层类:AudioStreamMP3
OGG对应引擎底层类:AudioStreamSample
Wav对应引擎底层类: AudioStreamOGGVorbis

原理解释:

我们发现,当我们把音频文件放入res://目录下时,godot会自动生成 音频.import文件

 注意看里面的[remap]里面的path那一行,实际上,godot游戏引擎运行的时候读取的是经过godot引擎自己重导入的文件

对于mp3文件而言,引擎实际上解码播放的文件是.mp3str,而不是原始文件.mp3)

对于ogg文件而言,引擎实际上解码播放的文件是.oggstr,而不是原始文件.ogg

对于wav文件而言,引擎实际上解码播放的文件是.sample文件而不是原始文件.wav

我们只需要把这个文件放入到外部文件系统目录就可以用load()函数加载了

笔者把文件放在了C:\Users\me\Desktop\test目录下

如同搭建游戏场景

 播放用的代码(window平台测试通过、其他平台需要你们自测)

extends Node2D


func _ready():
	var stream1 = load("C:/Users/me/Desktop/test/fresh.oggstr")
	var stream2 = load("C:/Users/me/Desktop/test/雪の朝.sample")
	var stream3 = load("C:/Users/me/Desktop/test/景山将太.mp3str")
	
	$bgm1.stream = stream1
	$bgm2.stream = stream2
	$bgm3.stream = stream3

	$bgm1.play()
	$bgm1.play()
	$bgm3.play()

 如果想要加载外部文件直接播放.mp3,.wav.ogg恐怕是不行的。

这方面可以写个C++插件,就是把引擎的核心导入资源文件的那个过程自己再写一遍(适用于外部文件)也就是自己封装一个底层格式编码转换插件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/773883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据传输安全风险与预防措施

随着互联网技术的快速发展和大数据时代的到来,大数据传输已成为越来越重要的环节。但由于网络传输过程中存在着各种安全风险,这些风险极有可能会导致机密数据泄露、网络攻击等问题,对企业和个人的信息安全造成潜在的威胁。因此,保…

【个人笔记】对linux中一切皆文件的理解与ls命令

目录 Linux中一切皆文件ls命令常用参数常用命令lscpu lspci Linux中一切皆文件 理解参考:为什么说:Linux中一切皆文件? ls命令 ls(英文全拼: list directory contents)命令用于显示指定工作目录下之内容…

数据可视化组件有什么用?

数据可视化组件在数据分析中扮演着至关重要&角色。 通过图表、图形和交互式界面,数据可视化组件帮助将复杂的数据转化为易于理解的视觉展示。这种形式的数据呈现有助于发现模式、趋势和异常,并能够快速有效地传达数据的含义和洞察。 下面简单举两个…

volatile 关键字 (详细解析)

目录 前置知识 共享变量不可见性 JMM volatile 关键字 使用volatile关键字 加锁 volatile 关键字 -- 更深入的问题 volatile不保证原子性 volatile禁止指令重排序 前置知识 共享变量不可见性 在多线程并发执行下,多个线程修改共享的成员变量&#xff0…

Android自动化测试之uiautomator2使用

uiautomator2是uiautomator的升级版本,增加了对AccessibilityService服务的支持,当然在appium1.7版本以上进行支持,本篇文章介绍一下它的使用。 安装 安装方式很简单: pip install uiautomator2 进行初始化: pyth…

java版Spring Cloud+Spring Boot+Mybatis+uniapp 企业电子招投标采购系统源码

随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审计监督要…

zabbix 企业级监控(2) 监控linux主机

目录 配置开始 Zabbix添加linux主机 4.为agent.zabbix.com添加模板 环境: (隔天做的更换了IP,不影响实际操作) IP 192.168.50.50 关闭防火墙规则 更改主机名 [rootlocalhost ~]# vim /etc/hostname agent.zabbix.com [rootloca…

myAgv智能移动底盘的slam算法学习以及动态避障

前言 随着科技得越来越发达,人工智能,自动驾驶导航等字眼频频出现在我们得眼前。但是目前来说自动驾驶并没有得到很全面得普及,还在进行不断的开发和测试当中。从小就爱好车的我,对这项技术也很是感兴趣。 偶然间在上网的时候买…

spring注解开发-spring12

如果使用注解开发,就不需要了写 再测试,也无误 如果你只写类型,只写autowired 如果按照名称注入,你不仅写autowired,还要靠内fea尔 Resource也可以完成注入: 同样是注入bean中id的值 现在我们使用Value…

OpenCV+VS 环境配置(以OpenCV4.7.0+VS2022环境配置为例)

下面以4.7.0版本的OpenCV与VS2022的环境配置为例进行介绍,其他版本的OpenCV与VS的环境配置也可参考本流程。 1.安装OpenCV库 下载网址:https://opencv.org/releases/ 2.配置环境设置 2.1 系统环境变量 1.右击桌面的此电脑图标,点击属性→…

Jsonpath - 数据中快速查找和提取的强大工具

JSON(JavaScript Object Notation)在现代应用程序中广泛使用,但是如何在复杂的JSON数据中 查找和提取所需的信息呢?JSONPath是一种功能强大的查询语言,可以通过简单的表达式来快速准确地定位和提取JSON数据。本文将介绍…

HarmonyOS/OpenHarmony应用开发-Stage模型UIAbility组件使用(五)

UIAbility组件间交互(设备内) UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时,会涉及到启动特定的UIAbility,该UIAbility可以是应用内的其他UIAbility,也可以是其他应用的UIAbility(例如启动…

飞行动力学 - 第11节-纵向静稳定性及各部件贡献 之 基础点摘要

飞行动力学 - 第11节-纵向静稳定性及各部件贡献 之 基础点摘要 1. 气流角2. 操纵面偏角3. 系数的符号4. 纵向、横向、航向稳定性5. 纵向静稳定性5.1 定义5.2 准则5.3 举例5.4 假设5.5 分析5.5.1 机身贡献5.5.2 机翼贡献5.5.3 尾翼贡献 6. 参考资料 1. 气流角 迎角:…

第二章 表的操作与数据类型

第二章 表的操作 一、表的创建(1)语法(2)示例 二、查看库中所有表以及具体表结构(1)语法(2)示例 三、表的修改(1)语法(2)示例 四、表的…

cesium实战(1)、cesium 加载本地json、GeoJson数据

1、cesium加载本地图层json图层数据 并设置样式 添加图层 // 加载路网数据 wms数据服务let addRoadLayer () > {Cesium.GeoJsonDataSource.load(/cesium/layers/road_84.json, {stroke: Cesium.Color.YELLOW,//多边形或线的颜色 strokeWidth: 3,//多边形或线 宽度clampToG…

win10/win11 无线显示器 启用输入 的问题分析与解决

win10、win11系统自带了“无线显示器”应用,可以作为接收端接受其他PC或者手机等设备的投屏显示。 但是使用手机等设备投屏,尤其是三星、华为等手机的类PC模式时总会提示“要启用输入,请转到你的电脑,选择“操作中心”>“连接…

连接另一台电脑的虚拟机

在一个局域网中,ping通另一台电脑是件很容易的事。但是经常会遇到,需要ping到另一台电脑里面的虚拟机,因为我们需要连接它的数据库,或者其他服务。 假设PC A要连接PC B上的虚拟机C。 我们需要做的是: 将C与B的网络连…

C语言数据结构(链表概念讲解和插入操作)

文章目录 前言一、什么是链表二、链表的优点和缺点三、链表节点的定义四、初始化链表五、链表的插入1.头部插入2.尾部插入3.中间插入 六、遍历链表七、释放链表总结 前言 本篇文章带大家正式的来学习数据结构,数据结构是学习操作系统,和深入C语言必不可…

影响伦敦金走势的两大因素是什么?

在伦敦金市场中经历过一段时间,很多人发现,其实要精准预测伦敦金的走势,尤其是短线的走势,是非常难的。但是,判断其大势,却是有一定规律的。在投资世界中,伦敦金投资之外的一些品种的涨跌号称是…

Ubuntu22.04安装显卡驱动(高速、避错版)

关于显卡驱动安装踩坑不少坑,前前后后重装了6、7次,总结了一下目前网上的各种安装方式,整理了本文。 目录导航 1 准备工作1.1 关闭安全模式1.2 切换独显模式1.3 更新软件列表和安装必要软件、依赖1.4 禁用nouveau (nouveau是通用的驱动程序)1…