在运行时更新其精灵后图像失真(Unity 2019)

时间:2019-04-23 04:15:02

标签: c# unity3d

我最近更新了项目以使用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++;
        }
    }
}

预期:

enter image description here

实际:

enter image description here

如果我撤消命令,则“ GO!”是正常大小,并且数字会扩展:

enter image description here

图片属性:

enter image description here

enter image description here

如您所见,所有4个精灵具有相同的分辨率(我意识到它们都是1920x1280有点奇怪,但这不在此问题的范围内)。我不确定是什么原因导致它们在运行时像这样调整大小。

在Unity 2019中处理图像/精灵的方式是否有所改变?也许这只是一个错误?

2 个答案:

答案 0 :(得分:2)

我也发生了同样的事情。解决方法是:

  1. 在Unity中选择纹理
  2. 将“精灵模式”>“网格类型”从“紧”更改为“全矩形”

答案 1 :(得分:1)

在将精灵设置为null之前,也可以按照此答案进行操作-https://stackoverflow.com/a/55827303

将图像类型从“简单”设置为“填充”也为我修复了该问题。