以下均为开发2d游戏相关。
1、如果用unity开发2d游戏,需要将主摄像头设置为orthgrahphic正交模式,同时可以设置orthgrahphicSize为视图高度的一半,这样1像素单位等同于unity里的1单位。
Camera.main.orthographicSize = Screen.height / 2;
2、unity采用左手坐标系,如果开发2d游戏,主摄像头都是从z小的方向向z大的方向,所以看到的x y如图方向
3、如上,如果熟悉开发flash的人,就知道这个坐标系与flash的坐标系Y向是反的。
4、自己写一个矩形(两个三角形)贴图(此图尺寸768*325),以此展示unity的mesh相关。
一个gameobject需要增加meshFilter和meshRender两个component。
meshFilter中设置mesh属性,而mesh需要设置顶点坐标,uv,三角形顶点序号(顺时针)
所谓uv,是指一坨三角形顶点,对应到一张平面图中,每个顶点在这张平面图中的位置(0到1之间,代表百分比)
material需要设置shader和texture材质。
public override void Start()
{
base.Start();
//
Vector3[] vertices = { new Vector3(768,325,0), new Vector3(768,0,0), new Vector3(0,0,0), new Vector3(0,325,0) };
Vector2[] uvs = { new Vector2(1, 1), new Vector2(1, 0), new Vector2(0, 0), new Vector2(0, 1) };
int[] triangles = {0,1,2,2,3,0};
//
MeshFilter meshfilter = gameObject.AddComponent<MeshFilter>();
Mesh mesh = new Mesh();
mesh.vertices = vertices;
mesh.uv = uvs;
mesh.triangles = triangles;
//
meshfilter.mesh = mesh;
//
Shader shader = Shader.Find("Sprite/Vertex Colored, Fast");
Material mat = new Material(shader);
mat.mainTexture = Resources.Load("map") as Texture;
//
MeshRenderer render = gameObject.AddComponent(typeof(MeshRenderer)) as MeshRenderer;
render.material = mat;
}