像素完美的2d相机统一

时间:2018-01-31 23:40:22

标签: unity3d unity3d-2dtools

我有一个非常简单的脚本,可以在给定的分辨率下更新我的正交相机,以便精确地将视图缩放为像素完美。

以下是一些相关代码:

OrthographicSetting get_override(int size)
{
    return Overrides.FirstOrDefault(x => x.OrthographicSize == size);
}

void update_ortho()
{
    m_last_size = Screen.height;

    float ref_size = (OrthographicSize / PixelsPerUnit) * 0.5f;

    OrthographicSetting or = get_override(m_last_size);
    float ppu = or != null ? or.PixelsPerUnit : PixelsPerUnit;
    float ortho_size = (m_last_size / ppu) * 0.5f;
    float multiplier = Mathf.Max(1, Mathf.Round(ortho_size / ref_size));

    ortho_size /= multiplier;

    this.GetComponent<Camera>().orthographicSize = ortho_size;

    Debug.Log(m_last_size + " " + ortho_size + " " + multiplier + " " + ppu);
}

[System.Serializable]
public class OrthographicSetting
{
    public int OrthographicSize;
    public float PixelsPerUnit;
}

OrthographicSetting get_override(int size)
{
    return Overrides.FirstOrDefault(x => x.OrthographicSize == size);
}

有了这个,我可以为每个分辨率指定一组覆盖。

我目前的设置是每个统一单位使用100个像素。我的所有精灵都使用没有压缩的点过滤。然而,我仍然得到奇怪的结果。 90%的精灵渲染得很好,但有些似乎渲染不正确。

这是一个截图:

BEEP BOOP COMPUTER

1 个答案:

答案 0 :(得分:1)

我可能已经解决了这个问题。我正在使用带有像素快照的精灵着色器。如果我关闭像素快照,问题似乎或多或少消失了。我仍然偶尔会遇到不适合游戏对象的问题。&#34; nice&#34;职位,我不知道如何避免这个问题...