private MeshMat getMesh(SpriteRenderer sr) { MeshMat mm = new MeshMat(); mm.mMat = new Material(SceneManager.LoadPrefab <Material>(mDefalueMaterialName == "" ? ResConfig.MATERIAL_DEFAULT : mDefalueMaterialName)); Sprite sp = sr.sprite; mm.mMat.mainTexture = sp.texture; float width = sp.rect.width / sp.pixelsPerUnit; float height = sp.rect.height / sp.pixelsPerUnit; Mesh mesh = new Mesh(); Vector3[] vertices = new Vector3[4]; vertices[0] = new Vector3((-width / 2), (-height / 2), 0); vertices[1] = new Vector3((width / 2), (-height / 2), 0); vertices[2] = new Vector3((width / 2), (height / 2), 0); vertices[3] = new Vector3((-width / 2), (height / 2), 0); mesh.vertices = vertices; //Vector2[] uv = new Vector2[4]; //uv[0] = new Vector2(sp.textureRect.x, sp.textureRect.y); //uv[1] = new Vector2(sp.textureRect.width, sp.textureRect.y); //uv[2] = new Vector2(sp.textureRect.width, sp.textureRect.height); //uv[3] = new Vector2(sp.textureRect.x, sp.textureRect.height); Vector2[] uv = new Vector2[4]; uv[0] = new Vector2(0, 0); uv[1] = new Vector2(1, 0); uv[2] = new Vector2(1, 1); uv[3] = new Vector2(0, 1); mesh.uv = uv; int[] tri = new int[6]; tri[0] = 0; tri[1] = 3; tri[2] = 1; tri[3] = 1; tri[4] = 3; tri[5] = 2; mesh.triangles = tri; Color[] colors = new Color[4]; colors[0] = sr.color; colors[1] = sr.color; colors[2] = sr.color; colors[3] = sr.color; mesh.colors = colors; mm.mMesh = mesh; return(mm); }
private MeshMat getMesh(RawImage ri) { MeshMat mm = new MeshMat(); mm.mMat = new Material(SceneManager.LoadPrefab <Material>(mDefalueMaterialName == "" ? ResConfig.MATERIAL_DEFAULT : mDefalueMaterialName)); mm.mMat.mainTexture = ri.mainTexture; float width = ri.rectTransform.sizeDelta.x; float height = ri.rectTransform.sizeDelta.y; Mesh mesh = new Mesh(); Vector3[] vertices = new Vector3[4]; vertices[0] = new Vector3((-width / 2), (-height / 2), 0); vertices[1] = new Vector3((width / 2), (-height / 2), 0); vertices[2] = new Vector3((width / 2), (height / 2), 0); vertices[3] = new Vector3((-width / 2), (height / 2), 0); mesh.vertices = vertices; Vector2[] uv = new Vector2[4]; uv[0] = new Vector2(ri.uvRect.x, ri.uvRect.y); uv[1] = new Vector2(ri.uvRect.width, ri.uvRect.y); uv[2] = new Vector2(ri.uvRect.width, ri.uvRect.height); uv[3] = new Vector2(ri.uvRect.x, ri.uvRect.height); mesh.uv = uv; int[] tri = new int[6]; tri[0] = 0; tri[1] = 3; tri[2] = 1; tri[3] = 1; tri[4] = 3; tri[5] = 2; mesh.triangles = tri; Color[] colors = new Color[4]; colors[0] = ri.color; colors[1] = ri.color; colors[2] = ri.color; colors[3] = ri.color; mesh.colors = colors; mm.mMesh = mesh; return(mm); }
public void CreateClip(int xOffse, int yOffse, int xClipSize, int yClipSize, float xSize, float ySize, GameObject go) { if (mMeshMat == null) { mMeshMat = getMesh(go); } mSizeY = yClipSize; mSizeX = xClipSize; mOffseX = xOffse; mOffseY = yOffse; _meshFilter = GetComponent <MeshFilter>(); _meshFilter = _meshFilter == null?gameObject.AddComponent <MeshFilter>() : _meshFilter; mMainMesh = CreateCombineClipMesh(xOffse, yOffse, xClipSize, yClipSize, xSize, ySize, mMeshMat.mMesh); _meshFilter.sharedMesh = mMainMesh; _renderer = GetComponent <MeshRenderer>(); _renderer = _renderer == null?gameObject.AddComponent <MeshRenderer>() : _renderer; _renderer.material = mMeshMat.mMat; }
public void SetMeshMat(MeshMat mesh) { mMeshMat = mesh; }