Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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;
        }
Пример #4
0
 public void SetMeshMat(MeshMat mesh)
 {
     mMeshMat = mesh;
 }