【发布时间】:2020-06-10 13:13:51
【问题描述】:
当我的场景开始时,我会启动一个协程来生成一个向用户显示的谜题。有时,这一代可能需要几秒钟,但通常很快。因为用户也可以从场景中刷新拼图,所以我不想来回跳转到单独的加载场景,而是在协程运行时显示一个简单的动画。我在同一个精灵上测试了两个动画:精灵的动画师和更新时的简单旋转。然而,就像标题所说的,当协程运行时,这两个都没有运行。我可以看到该动画有效,因为在协程完成后,两个动画都开始了(请参阅下面注释掉的 SetActive(false))。我怎样才能让这个动画工作?
结构是这样的:
-游戏场景
--画布
---PuzzleControl 游戏对象(带有 PuzzleControl 脚本)
----动画游戏对象(带有Sprite Renderer和Animator组件)
---LoadingScreen 游戏对象(带有 LoadingAnimation 脚本)
public class PuzzleControl : MonoBehaviour
{
private PuzzleBuilder builder;
void Start()
{
builder = this.gameObject.AddComponent<PuzzleBuilder>();
LoadingScreen.SetActive(true);
StartCoroutine(builder.Refresh());
}
public void RebuildPuzzle()
{
LoadingScreen.SetActive(true);
StartCoroutine(builder.Refresh());
}
public void BuildComplete()
{
// This will be called by our builder -- currently turned off
//LoadingScreen.SetActive(false);
}
}
public class LoadingAnimation : MonoBehaviour
{
public GameObject animation;
private float rotateSpeed = 200f;
// Update is called once per frame
void Update()
{
animation.GetComponent<Transform>().Rotate(new Vector3(0f,0f, rotateSpeed * Time.deltaTime));
}
}
【问题讨论】:
标签: unity3d animation loading coroutine