unity3d学习(一)
原文
以下均为开发2d游戏相关。
1、如果用unity开发2d游戏,需要将主摄像头设置为orthgrahphic正交模式,同时可以设置orthgrahphicSize为视图高度的一半,这样1像素单位等同于unity里的1单位。
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材质。
以下均为开发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; }