我有一个非常简单的脚本,可以在给定的分辨率下更新我的正交相机,以便精确地将视图缩放为像素完美。
以下是一些相关代码:
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%的精灵渲染得很好,但有些似乎渲染不正确。
这是一个截图:
答案 0 :(得分:1)
我可能已经解决了这个问题。我正在使用带有像素快照的精灵着色器。如果我关闭像素快照,问题似乎或多或少消失了。我仍然偶尔会遇到不适合游戏对象的问题。&#34; nice&#34;职位,我不知道如何避免这个问题...