在Unity中的模式UI预制中进行缩放

问题描述

我正在Unity中开发一款具有许多UI元素的学习游戏。有时我需要显示一个模态,它是一个预制实例,我想添加一个放大效果。我已经尝试使用以下代码使用DOTween:

GameObject modalPrefab = Instantiate 
                                (
                                    Resources.Load<GameObject>(prefabName),new Vector3(0,0),Quaternion.identity
                                );
Vector3 scale = modalPrefab.transform.localScale; // Store the current scale
modalPrefab.transform.DOScale(0,0); // Set size to zero
modalPrefab.transform.DOScale(scale,0.8f); // Scale in

这种方法行之有效,但效果不是很好,因为它在缩小尺寸之前将完整尺寸的预制件显示一毫秒,这非常引人注目。关于如何更好地执行此操作的任何想法(带有或不带有DOTween)?谢谢。

解决方法

您可以将动画用于缩放效果。激活时,只需将Modal预制的比例从0更改为1,反之亦然。

,

我发现《游戏开发指南》中的教程非常有用。他在视频中使用了“瘦身补间”。看看You're Animating Your UI Wrong in Unity

,

我终于找到了解决方案,非常简单。而不是使用 DOTween 缩放到零,只需以 Unity 方式进行:

modalPrefab.transform.localScale = Vector2.zero;