在Unity中达到条件时显示和隐藏游戏对象?

时间:2019-06-10 17:33:57

标签: c# unity3d

我有一个统一的登录场景,在该场景中,我要获取用户的详细信息,然后根据想要显示和隐藏gameobject的条件进行处理。

我有一个Loading游戏对象,不过是加载动画。

这就是我正在做的(并尝试过):

void Start()  //Start Of Scene
{
Loading = GameObject.Find("CircleGlass");
Loading.SetActive(false);
}

单击按钮时:

public void Clicked()
{
Loading.SetActive(true);
//Rest of code fetching data from api using UnityEngine.Networking
if(condition)
 {
 Loading.SetActive(false);
 //Redirect to another page
 }
}

问题Loading游戏对象,当我单击按钮时才显示。需要花费时间,但不显示加载程序。 这是所附的屏幕截图: enter image description here

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:3)

根据您发布的代码,我假设代码是同步执行的。这意味着在执行SetActive(true)之后,在执行SetActive(false)之前没有更新帧,因此没有时间更新实际对象的状态。

您可以使用协同程序来更改它:

private final Supplier<List<Client>> getClientsSupplier = Suppliers.memoizeWithExpiration(ClientsDao::getClients, Server.CACHE_REFRESH_DURATION, Server.CACHE_REFRESH_TIMEUNIT);

public List<Client> getClients() {
  return getClientsSupplier.get();
}