我最近更新了项目以使用Unity 2019,并且在大多数情况下这是无缝过渡。但是,在运行时更新和映像的精灵时遇到了一个问题。
我正在开发的游戏在每个关卡开始时都有一个倒数计时(3、2、1,GO!)。倒数计时文本是一系列在计时器上更新的子画面,所有子画面均具有相同的分辨率。
在更新到Unity 2019之前,此方法运行良好,但是现在当倒数计时变为“开始!”时,看起来好像已经被水平挤压了。
我还进行了一次倒数倒计时(GO!,1、2、3)的测试,结果出现了相反的效果。在这种情况下,“ GO!”看起来很正常,而1 2和3看起来像是水平展开的。
我设置了一个仅包含画布/图像的最小测试场景,并附加了以下脚本。如下面的gif所示,也会发生相同的行为。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ImageSwapTest : MonoBehaviour
{
Image image; //Image component
[SerializeField] Sprite[] countDownSprites; //Array of sprites used to populate the image component
void Start()
{
image = GetComponent<Image>();
StartCoroutine(UpdateImage());
}
IEnumerator UpdateImage()
{
int counter = 0;
while (counter < sprites.Length)
{
yield return new WaitForSeconds(1); //Wait 1 second
image.sprite = countDownSprites[counter]; //Update the image to the next sprite
counter++;
}
}
}
预期:
实际:
如果我撤消命令,则“ GO!”是正常大小,并且数字会扩展:
图片属性:
如您所见,所有4个精灵具有相同的分辨率(我意识到它们都是1920x1280有点奇怪,但这不在此问题的范围内)。我不确定是什么原因导致它们在运行时像这样调整大小。
在Unity 2019中处理图像/精灵的方式是否有所改变?也许这只是一个错误?
答案 0 :(得分:2)
我也发生了同样的事情。解决方法是:
答案 1 :(得分:1)
在将精灵设置为null之前,也可以按照此答案进行操作-https://stackoverflow.com/a/55827303
将图像类型从“简单”设置为“填充”也为我修复了该问题。