我想把装载器放在对话框之间进行购买。这是什么方式?
因为当游戏玩家按购买按钮时,他应该要求等待5到10秒取决于互联网速度和服务器响应,这个过程发生了2到3次,因为屏幕内出现了多个对话框。
所以在这种情况下,可能是玩家可以离开屏幕。我想把加载器放到让玩家意识到某些处理在后台运行,他需要等待一段时间。
目前我完全关注Unity IAP设置的这段代码。 Integrating Unity IAP In Your Game
答案 0 :(得分:0)
我认为这是针对移动平台的,但即使它仍然可以考虑以下内容:
简单的解决方案是在UI中创建一个全屏图像(UI /面板)对象以阻止点击。当后台进程在运行时,我会使用Animator组件(带触发器)在其他UI前面显示此面板。
public class Loader : MonoBehaviour
{
public static Loader Instance;
Animator m_Animator;
public bool Loading {get; private set;}
void Awake()
{
Instance = this; // However make sure there is only one object containing this script in the scene all time.
}
void Start()
{
//This gets the Animator, which should be attached to the GameObject you are intending to animate.
m_Animator = gameObject.GetComponent<Animator>();
Loading = false;
}
public void Show()
{
Loading = true;
m_Animator.SetBool("Loading", Loading); // this will show the panel.
}
public void Hide()
{
Loading = false;
m_Animator.SetBool("Loading", Loading); // this will hide the panel.
}
}
然后在任何操纵UI的脚本中:
public void BuyButtonClicked()
{
Loader.Instance.Show();
// process time taking stuff
Loader.Instance.Hide();
}
您还可以使用Unity内部的简单图像和动画工具创建任何类型的加载动画作为面板对象的子项(例如旋转动画(使用fidget spinner,它很酷))。
在Android的情况下,用户可以通过按OS后退按钮选择离开屏幕,您可以通过以下示例检查是否正在进行任何加载来阻止返回:
// code for back button
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
BackButtonPressed();
}
}
void BackButtonPressed()
{
if(Loader.Instance.Loading)
return;
// use back button event. (For example to leave screen)
}
希望这会有所帮助;)