I want to make an 8-bit like game, with the small resolution, but how do you make a resolution like 320x480 work in a standalone game?
Well, there are two ways to handle this, really.
You can either force a fixed-resolution for the game through the Standalone Player Settings or you can fix the final render resolution using a Render Texture and (optional) full-screen shader. As an example of the latter solution:
// Simple example in C#
// This script should be attached to the main camera
// Uses fixed width of "baseWidth" with square pixels matching aspect ratio
public int baseWidth = 480;
RenderTexture rt;
void Start()
{
int aspectHeight = Mathf.CeilToInt(baseWidth * ((float)Screen.height / Screen.width));
rt = new RenderTexture(baseWidth, aspectHeight, 0);
rt.filterMode = FilterMode.Point;
}
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
Graphics.Blit(source, rt);
Graphics.Blit(rt, destination);
}
Edit: As a further example of a way to perform the initial render at that reduced resolution (rather than scaling down a full-resolution render):
public int baseWidth = 480;
Rect baseRect;
Rect scaledRect;
RenderTexture rt;
Camera cam;
void Start()
{
int aspectHeight = Mathf.CeilToInt(baseWidth * ((float)Screen.height / Screen.width));
cam = GetComponent<Camera>();
baseRect = cam.rect;
scaledRect = new Rect(baseRect.x, baseRect.y, (float)baseWidth / Screen.width, (float)aspectHeight / Screen.height);
}
void OnPreRender()
{
cam.rect = scaledRect;
}
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
cam.rect = baseRect;
Graphics.Blit(source, destination);
}