O tratamento de coordenadas 2D e o dimensionamento no Unity é bastante simples, mas não óbvio, e como você notou, é diferente de outras ferramentas de desenvolvimento. Por que isso acontece é porque o Unity era um mecanismo 3D que recentemente incorporou gráficos 2D.
Em particular, 1 unidade no Unity não é necessariamente 1 pixel na imagem. Quando você importa imagens como Sprites 2D, na verdade há uma configuração de Pixels para unidades que pode ser feita 1: 1, mas eu recomendo deixá-la no padrão 100: 1 por duas razões (o mecanismo de física não funciona corretamente em 1: 1 e o padrão é melhor para compatibilidade com o código de outras pessoas).
Essa configuração de escala significa que todas as posições são divididas por 100. É bem fácil, desde que você sempre se lembre da escala; quando você deseja mover um sprite de 256 pixels (digamos), mova-o 2.56 Você também pode escrever uma função de utilidade para arredondar números com 2 casas decimais / o pixel mais próximo: Mathf.Round (float * 100) / 100f
Quanto à configuração de uma câmera com pixel perfeito, primeiro defina-a como uma câmera ortográfica. Quando você seleciona a câmera, nas configurações há um menu suspenso para projeção em perspectiva ou ortográfica; perspectiva significa que as coisas parecerão 3D, enquanto a ortografia exibe a cena horizontalmente. Logo abaixo desse menu suspenso está o tamanho; defina o tamanho ortográfico da câmera para metade das dimensões de pixel da tela que você deseja.
Por exemplo, digamos que você queira uma tela de 1024x768 com pixel perfeito. Bem, isso significa que a altura da câmera deve ser 384 pixels. Divida isso por 100 (devido à escala de pixels em unidades) e você terá 3,84 para o tamanho da câmera. Novamente, essa matemática é simplesmente SCREEN_SIZE / 2 / 100f
(Eu estava esperando para ver quais outras respostas viriam primeiro, mas já faz alguns dias. Estou fazendo 2D no Unity há algum tempo usando o 2D Toolkit , mas sou relativamente novo nos recursos 2D integrados)