gpt4 book ai didi

android - 为什么我的声音脚本会干扰我的广告

转载 作者:行者123 更新时间:2023-12-03 01:53:46 25 4
gpt4 key购买 nike

在Unity上使用admob设置奖励广告后,我在Android游戏中添加了声音效果。这是我的奖励广告脚本:

string adUnitId = "ca-app-pub-5920324855307233/4458481507";
RewardBasedVideoAd rewardBasedVideo = null;

void Start () {
managerScript = gameObject.GetComponent<GameManager>();
isCalled = false;
rewardBasedVideo = RewardBasedVideoAd.Instance;
}

public void adButton(){
isCalled = true;
AdRequest request = new AdRequest.Builder().Build();
rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
rewardBasedVideo.LoadAd(request, adUnitId);
}

void Update(){
if(isCalled == true){
adButton();
showAd();
}
}

public void showAd(){
if (rewardBasedVideo.IsLoaded()){
rewardBasedVideo.Show();
}
}

public void HandleRewardBasedVideoRewarded(object sender, Reward args){
isCalled = false;
managerScript.revival();
managerScript.Loading.SetActive(false);
rewardBasedVideo.OnAdRewarded -= HandleRewardBasedVideoRewarded;
}

这是我的声音效果脚本(声音脚本):
public AudioClip Death;
public static bool toggled;
public static Sounds Instance;

public void DeathSound(){
if(toggled == true){
GetComponent<AudioSource>().PlayOneShot(Death);
}
}

public void SoundToggle(){
if(toggled == false){
toggled = true;
}else if(toggled == true){
toggled = false;
}
}

最后,我如何在另一个脚本中发出声音:
Sounds sound;
GameObject soundManager;

public void Start(){
soundManager = GameObject.Find("Sound Manager");
sound = soundManager.GetComponent<Sounds>();
}

public void Death(){
sound.DeathSound();
}

问题是由于某些原因,当声音脚本中的 bool(boolean) 值“切换”为true时,在奖励视频广告完成后,不会发生HandleRewardBasedVideoRewarded方法。如果未切换声音,则该方法将在播发后调用,并且效果很好。声音效果如何影响广告结束后发生的方法?这个问题困扰着我。有人可以帮忙吗?

更新:
我尝试在广告加载之前禁用声音,然后在广告之后重新启用声音。问题仍然存在。我不是100%肯定,但也许切换 bool(boolean) 有一定作用,但我不知道如何。

最佳答案

问题中您的代码不完整,或者您犯了一个错误,因为在脚本的任何地方都没有调用GetComponent<AudioSource>().PlayOneShot(Death)。您正在从DeathSound()调用Death(),但是没有什么在调用Death()来调用实际播放声音的DeathSound()。仔细看看您的代码。从某个地方调用Death()函数,您的声音应该会播放。

编辑:

第一次没有很好地阅读您的问题。

在调用showAd()函数之前,请检查音频是否正在播放,然后停止播放。还要将DeathAudioClip更改为AudioSource。如果可能的话,请不要在代码中使用static。它将引入许多其他问题。如果要在场景之间共享变量,可以使用PlayerPrefs类而不是使用静态变量来实现。

public void showAd(){

if (Death.isPlaying)
{
Death.Stop();
}

if (rewardBasedVideo.IsLoaded()){
rewardBasedVideo.Show();
}
}

关于android - 为什么我的声音脚本会干扰我的广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37400853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com