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

相关推荐
玖玥拾18 小时前
Unity 3D 基础(一)Unity基础架构、物理系统、视觉渲染、空间变换与对象查询
笔记·游戏·3d·unity·游戏引擎
玖玥拾3 天前
C# 语言进阶(十四)Unity UI界面开发 + 网络消息联动
服务器·开发语言·网络·ui·unity·c#·游戏引擎
野区捕龙为宠3 天前
Unity 持久化数据
unity·游戏引擎·lucene
郝学胜-神的一滴3 天前
[简化版 GAMES 101] 计算机图形学 17:纹理技术从基础原理到多场景实战应用
c++·unity·游戏引擎·图形渲染·three.js·opengl·unreal
_ZHOURUI_H_4 天前
MyFramework: 同样是 Unity 游戏开发框架,和 HTFramework 的设计取向有什么不同?(下)
unity·游戏引擎·游戏开发·游戏ui·手游开发
KillJUMP4 天前
SDF函数
godot·着色器
丁小未6 天前
基于MVVM框架的XUUI HelloWorld 新手教程
unity·性能优化·c#·游戏引擎
松树戈6 天前
【Godot4精进之路】03~Godot编辑器常用界面介绍
编辑器·游戏引擎·godot
YigAin6 天前
Unity Spine 资源出现白边的解决办法
unity·游戏引擎·spine