我正在为Subnautica mod管理器开发更新,并且我引入了一个盗版检测器,如果检测到盗版,它会全屏播放you are a pirate歌曲并带有音频。
视频使用RawImage
在VideoPlayer
上正确播放,但我似乎无法使音频正常工作。
我已经搜索了互联网,发现了很多“修复程序”,但是没有一个起作用。
以下是我尝试过的一些方法:
videoPlayer.controlledAudioTrackCount = 1;
gameObject.AddComponent<AudioListener>().enabled = true;
audioSource.volume = 1f;
研究之后,我偶然发现了this bug report,这似乎影响了Unity 5.6。
不幸的是,由于我正在改装,因此我无法更新Unity。
我已经尝试了错误报告中提供的解决方法,该报告是
videoPlayer.renderMode = VideoRenderMode.MaterialOverride;
,
但这也不起作用。
注意:
videoPlayer.GetAudioChannelCount(0)
始终返回2
audioSource.isPlaying
始终返回false
,即使我执行audioSource.Play();
这是我的代码:
private IEnumerator PlayVideo()
{
VideoPlayer videoPlayer = gameObject.GetComponent<VideoPlayer>() ?? gameObject.AddComponent<VideoPlayer>();
AudioSource audioSource = gameObject.GetComponent<AudioSource>() ?? gameObject.AddComponent<AudioSource>();
videoPlayer.enabled = true;
audioSource.enabled = true;
videoPlayer.playOnAwake = false;
audioSource.playOnAwake = false;
videoPlayer.source = VideoSource.Url;
videoPlayer.url = videoURL;
videoPlayer.controlledAudioTrackCount = 1;
videoPlayer.waitForFirstFrame = false;
videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
videoPlayer.SetTargetAudioSource(0, audioSource);
videoPlayer.EnableAudioTrack(0, true);
videoPlayer.Prepare();
while (!videoPlayer.isPrepared)
{
yield return null;
}
GetComponent<RawImage>().texture = videoPlayer.texture;
videoPlayer.Play();
while (videoPlayer.isPlaying)
{
yield return null;
}
yield return StartCoroutine(PlayVideo());
}
您可以在GitHub
上看到完整的代码编辑:这也不起作用
audioSource.bypassEffects = true;
audioSource.bypassListenerEffects = true;
audioSource.bypassReverbZones = true;
audioSource.dopplerLevel = 0;
audioSource.priority = 100000;
audioSource.ignoreListenerPause = true;
audioSource.ignoreListenerVolume = true;
audioSource.spatialBlend = 0;
audioSource.volume = 1f;
答案 0 :(得分:0)
我发现了为什么它不起作用!
显然,游戏在项目设置中启用了“禁用Unity音频”设置。