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

python 复制代码
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平台测试通过、其他平台需要你们自测)

python 复制代码
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++插件,就是把引擎的核心导入资源文件的那个过程自己再写一遍(适用于外部文件)也就是自己封装一个底层格式编码转换插件。

相关推荐
程序员JerrySUN10 分钟前
Jetson边缘嵌入式实战课程第三讲:L4T 与 Jetson 系统架构
linux·服务器·人工智能·安全·unity·系统架构·游戏引擎
萌萌的提莫队长2 小时前
Unity HDRP 渲染管线 Camera 输出到RenderTexture没有Alpha通道
unity·游戏引擎
winlife_2 小时前
Unity Editor 工具不该用反射写组件字段:SerializedObject 在 4 个场景里非用不可
unity·自动化·游戏引擎
那个村的李富贵3 小时前
unity编辑器工具,输出使用的字体
unity·编辑器·游戏引擎
游乐码1 天前
Unity(十六)切换场景及鼠标相关
unity·游戏引擎
FakeEnd1 天前
Unity开发笔记6
笔记·unity·游戏引擎
游乐码1 天前
Unity(十七)Unity随机数及Unity委托
unity·游戏引擎
RPGMZ1 天前
RPGMZ游戏引擎 一个窗口 文本居中显示
开发语言·javascript·游戏引擎·rpgmz
tohand2 天前
Unity 完美假阴影实现文档
unity·游戏引擎
nnsix2 天前
Unity 动画 Avatar 笔记
笔记·unity·游戏引擎