Unity3d Unity IAP回调期间的加载程序

Unity3d Unity IAP回调期间的加载程序,unity3d,Unity3d,我想把加载器之间的对话框来购买。怎么办 因为当游戏玩家按下“购买”按钮时,他需要等待5到10秒,这取决于互联网速度和服务器响应,这个过程发生了2到3次,因为屏幕上出现了多个对话框 所以在这种情况下,可能是玩家可以离开屏幕。我想把加载器,让游戏玩家意识到一些处理是在后台运行,他需要等待一段时间 目前,我完全遵循Unity IAP设置的代码。 我假设这是针对移动平台的,但即使不是这样,也可以考虑以下几点: 简单的解决方案是在UI中创建一个全屏图像(UI/面板)对象来阻止点击。当后台进程运行时,我会使

我想把加载器之间的对话框来购买。怎么办

因为当游戏玩家按下“购买”按钮时,他需要等待5到10秒,这取决于互联网速度和服务器响应,这个过程发生了2到3次,因为屏幕上出现了多个对话框

所以在这种情况下,可能是玩家可以离开屏幕。我想把加载器,让游戏玩家意识到一些处理是在后台运行,他需要等待一段时间

目前,我完全遵循Unity IAP设置的代码。

我假设这是针对移动平台的,但即使不是这样,也可以考虑以下几点:

简单的解决方案是在UI中创建一个全屏图像(UI/面板)对象来阻止点击。当后台进程运行时,我会使用Animator组件(带触发器)在其他UI前面显示此面板

公共类加载器:MonoBehavior
{
公共静态加载程序实例;
动画师m_Animator;
公共bool加载{get;private set;}
无效唤醒()
{
Instance=this;//但是,请确保场景中始终只有一个对象包含此脚本。
}
void Start()
{
//这将获得动画师,该动画师应附加到要设置动画的游戏对象。
m_Animator=gameObject.GetComponent();
加载=假;
}
公开展览(
{
加载=真;
m_Animator.SetBool(“加载”,加载);//这将显示面板。
}
公共空间隐藏()
{
加载=假;
m_Animator.SetBool(“加载”,加载);//这将隐藏面板。
}
}
然后在任何操纵UI的脚本中:

公共作废BuyButtonClicked()
{
Loader.Instance.Show();
//处理耗时的事情
Loader.Instance.Hide();
}
您还可以使用Unity内部的简单图像和动画工具(例如旋转动画(使用fidget spinner,它很酷))创建任何类型的加载动画作为面板对象的子对象

在安卓系统中,用户可以通过按下操作系统返回按钮离开屏幕,通过以下示例检查是否正在加载,可以防止返回:

//后退按钮的代码
无效更新()
{
if(Input.GetKeyDown(KeyCode.Escape))
{ 
BackButtonPressed();
}
}
void BackButtonPressed()
{
if(Loader.Instance.Loading)
回来
//使用后退按钮事件。(例如离开屏幕)
}

希望这有帮助;)

在购买调用之前和之后,我不能将加载程序隐藏和显示方法放在单个帧中,否则所有事情都会发生,因为它不是IEnumerator。显然,您不应该这样做。这只是一个例子,让你知道在哪里调用这些方法。你可以在协同程序中调用这两种方法,兄弟,这不是确切的回答,因此我可以将其作为正确答案。你尝试过解决方案吗?我想不是。有点感激不会有什么坏处。没有提到有人花时间写一个答案的教程。还是没有确切的答复?找人帮你做这项工作。快乐编码:)是的@Umair M,我并不是说你没有通过回复做好事,但如果这不是一个完美的答案,那么你不能强迫其他人将其标记为正确。我可以说你的观点是50%的方向。所以,如果你有时间,一定要帮助别人,因为你做得很好:)