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

相关推荐
笑虾几秒前
cocos2d-x lua 加载 Cocos Studio 导出的 csb
游戏引擎·lua·cocos2d
魔士于安8 分钟前
unity lowpoly 风格 城市 建筑 道路 交通标志
游戏·unity·游戏引擎·贴图·模型
mxwin11 分钟前
Unity GPU Shader 性能优化指南
unity·游戏引擎·shader
董董女友12 小时前
unity mcp 配置指南
unity·游戏引擎
垂葛酒肝汤17 小时前
Unity的可视化网格和文字标签
unity·游戏引擎
魔士于安18 小时前
Unity UI图片 复活节UI,卡通风格
游戏·ui·unity·游戏引擎·材质·贴图
weixin_4239950018 小时前
unity 团结开发小游戏,加载AssetBundles(第二种方法)
unity·游戏引擎
魔士于安19 小时前
unity 卡通风整套资源 小鸟N套带动作+一套卡通风村落 和 相关道具+落叶粒子效果 buildin
游戏·unity·游戏引擎·贴图·模型
伽蓝_游戏20 小时前
第一章:解构游戏资源
游戏·unity·性能优化·c#·游戏引擎·游戏程序·assetbundle
Sparkle Star21 小时前
Unity VRTK4包导入和依赖关系
unity·游戏引擎