樱花草在线播放免费高清观看,国产成人久久综合777777麻豆,啦啦啦在线视频免费观看正在播放1,在线天堂√中文,亚洲色大成网站www永久男同,国产丰满乱子伦无码专区,日韩精品 在线 国产 丝袜 ,三级在线看中文字幕完整版
  • 您的位置:首頁 > 新聞動態 > Unity3D

    UNITY3D繪制可調整行列數的網格

    2019/6/12??????點擊:

    直接上代碼@@


    //PlaneBuilder.cs
    
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    #region Editor
    
    #if UNITY_EDITOR
    
    using UnityEditor;
    
    [CustomEditor(typeof(PlaneBuilder))]
    public class PlaneBuilderEditor : Editor
    {
        public override void OnInspectorGUI()
        {
            PlaneBuilder builder = (PlaneBuilder)target;
    
            EditorGUI.BeginChangeCheck();
    
            base.OnInspectorGUI();
    
            if (EditorGUI.EndChangeCheck())
            {
                builder.UpdateMesh();
            }
    
            if (GUILayout.Button("更新網格"))
            {
                builder.UpdateMesh();
            }
        }
    }
    
    #endif
    
    #endregion Editor
    
    [RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
    public class PlaneBuilder : MonoBehaviour
    {
        [SerializeField]
        private MeshFilter _meshFilter;
    
        [SerializeField]
        private MeshRenderer _meshRenderer;
    
        ////// 單元格大小
        ///[SerializeField]
        private Vector2 _cellSize = new Vector2(1, 1);
    
        ////// 網格大小
        ///[SerializeField]
        private Vector2Int _gridSize = new Vector2Int(2, 2);
    
        public MeshRenderer MeshRenderer
        {
            get
            {
                return _meshRenderer;
            }
        }
    
        public MeshFilter MeshFilter
        {
            get
            {
                return _meshFilter;
            }
        }
    
        private void Awake()
        {
            _meshFilter = GetComponent();
            _meshRenderer = GetComponent();
            UpdateMesh();
        }
    
        public void UpdateMesh()
        {
            Mesh mesh = new Mesh();
    
            //計算Plane大小
            Vector2 size;
            size.x = _cellSize.x * _gridSize.x;
            size.y = _cellSize.y * _gridSize.y;
    
            //計算Plane一半大小
            Vector2 halfSize = size / 2;
    
            //計算頂點及UV
            Listvertices = new List();
            Listuvs = new List();
    
            Vector3 vertice = Vector3.zero;
            Vector2 uv = Vector3.zero;
    
            for (int y = 0; y < _gridSize.y + 1; y++)
            {
                vertice.z = y * _cellSize.y - halfSize.y;//計算頂點Y軸
                uv.y = y * _cellSize.y / size.y;//計算頂點紋理坐標V
    
                for (int x = 0; x < _gridSize.x + 1; x++)
                {
                    vertice.x = x * _cellSize.x - halfSize.x;//計算頂點X軸
                    uv.x = x * _cellSize.x / size.x;//計算頂點紋理坐標U
    
                    vertices.Add(vertice);//添加到頂點數組
                    uvs.Add(uv);//添加到紋理坐標數組
                }
            }
    
            //頂點序列
            int a = 0;
            int b = 0;
            int c = 0;
            int d = 0;
            int startIndex = 0;
            int[] indexs = new int[_gridSize.x * _gridSize.y * 2 * 3];//頂點序列
            for (int y = 0; y < _gridSize.y; y++)
            {
                for (int x = 0; x < _gridSize.x; x++)
                {
                    //四邊形四個頂點
                    a = y * (_gridSize.x + 1) + x;//0
                    b = (y + 1) * (_gridSize.x + 1) + x;//1
                    c = b + 1;//2
                    d = a + 1;//3
    
                    //計算在數組中的起點序號
                    startIndex = y * _gridSize.x * 2 * 3 + x * 2 * 3;
    
                    //左上三角形
                    indexs[startIndex] = a;//0
                    indexs[startIndex + 1] = b;//1
                    indexs[startIndex + 2] = c;//2
    
                    //右下三角形
                    indexs[startIndex + 3] = c;//2
                    indexs[startIndex + 4] = d;//3
                    indexs[startIndex + 5] = a;//0
                }
            }
    
            //
            mesh.SetVertices(vertices);//設置頂點
            mesh.SetUVs(0, uvs);//設置UV
            mesh.SetIndices(indexs, MeshTopology.Triangles, 0);//設置頂點序列
            mesh.RecalculateNormals();
            mesh.RecalculateBounds();
            mesh.RecalculateTangents();
    
            _meshFilter.mesh = mesh;
        }
    
    #if UNITY_EDITOR
    
        private void OnValidate()
        {
            if (null == _meshFilter)
            {
                _meshFilter = GetComponent();
            }
            if (null == _meshRenderer)
            {
                _meshRenderer = GetComponent();
                if (null == _meshRenderer.sharedMaterial)
                {
                    _meshRenderer.sharedMaterial = new Material(Shader.Find("Standard"));
                }
            }
        }
    
    #endif
    }


    主站蜘蛛池模板: 最近免费观看在线中文2019| 亚洲欧洲日产国码久在线| 国产精品久久久久久影视不卡| 久久精品久久精品中文字幕 | 丰满少妇a级毛片| gogogo高清在线播放韩国| 欧美老肥妇做爰bbww| 丁香花在线| 欧美影院| 国产亚av手机在线观看| 你好世界在线观看| 狠狠色噜噜狠狠狠7777奇米| 国产精品va在线播放我和闺蜜| 国内精品人妻无码久久久影院| 午夜电影| 中文天堂资源| 欧洲裸毛bbbbbxxxx| 天天摸夜夜添狠狠添高潮出水| 国产午精品午夜福利757视频播放| 无码人妻一区二区三区av| 姑娘国语视频在线观看| 精品国产乱码久久久人妻| 亚洲中文无码成人影院| 午夜精品射精入后重之免费观看| 欧洲裸毛bbbbbxxxx| 亚洲高清毛片一区二区| 国产日产欧产美韩系列麻豆| 先锋影音av成人资源| 麻豆精品传媒一二三区| 国产乱人伦av麻豆网| 忘忧草www日本韩国| 欧美日韩国产精品自在自线| 亚洲精品乱码久久久久久日本| 精品国产一区二区三区香蕉| 天天躁夜夜躁狠狠综合| 国产福利日本一区二区三区| 欧美老熟妇videos极品另类| 欧美熟妇性xxxx欧美熟人多毛| 欧美激情内射喷水高潮| 特级欧美aaaaaa片| 野花日本大全免费观看6高清版|