Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么使用小控件时图形不合适?_C#_Unity3d_Unity5 - Fatal编程技术网

C# 为什么使用小控件时图形不合适?

C# 为什么使用小控件时图形不合适?,c#,unity3d,unity5,C#,Unity3d,Unity5,我正在使用WaitForSeconds和return Wait。 在一个接一个地创建顶点之后,我得到的结果是:红色网格不在顶点上,不在适当的位置。 也许没关系,我不确定。我想它应该在它的顶点上 您没有考虑对象在空间中的位置。您可以将其从原点偏移,但顶点是相对于原点绘制的,忽略该偏移 如果将对象放置在0,5,0,则此线是顶点显示的位置: using System.Collections; using System.Collections.Generic; using UnityEngine; p

我正在使用WaitForSeconds和return Wait。 在一个接一个地创建顶点之后,我得到的结果是:红色网格不在顶点上,不在适当的位置。 也许没关系,我不确定。我想它应该在它的顶点上


您没有考虑对象在空间中的位置。您可以将其从原点偏移,但顶点是相对于原点绘制的,忽略该偏移

如果将对象放置在0,5,0,则此线是顶点显示的位置:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Grid : MonoBehaviour
{
    private MeshFilter meshf;
    private Mesh mesh;
    private Vector3[] vertices;

    private void Start()
    {
        StartCoroutine(GenerateOrigin()); 
    }

    private IEnumerator GenerateOrigin()
    {
        // You can change that line to provide another MeshFilter
        meshf = GetComponent<MeshFilter>();
        mesh = new Mesh();
        meshf.mesh = mesh;
        mesh.Clear();

        #region Vertices

        WaitForSeconds wait = new WaitForSeconds(0.05f);
        vertices = new Vector3[resX * resZ];
        for (int z = 0; z < resZ; z++)
        {
            // [ -length / 2, length / 2 ]
            float zPos = ((float)z / (resZ - 1) - .5f) * length;
            for (int x = 0; x < resX; x++)
            {
                // [ -width / 2, width / 2 ]
                float xPos = ((float)x / (resX - 1) - .5f) * width;
                vertices[x + z * resX] = new Vector3(xPos, 0f, zPos);
                yield return wait;
            }
        }
        #endregion

        #region Normales
        Vector3[] normales = new Vector3[vertices.Length];
        for (int n = 0; n < normales.Length; n++)
            normales[n] = Vector3.up;
        #endregion

        #region UVs     
        Vector2[] uvs = new Vector2[vertices.Length];
        for (int v = 0; v < resZ; v++)
        {
            for (int u = 0; u < resX; u++)
            {
                uvs[u + v * resX] = new Vector2((float)u / (resX - 1), (float)v / (resZ - 1));
            }
        }
        #endregion

        #region Triangles
        int nbFaces = (resX - 1) * (resZ - 1);
        int[] triangles = new int[nbFaces * 6];
        int t = 0;
        for (int face = 0; face < nbFaces; face++)
        {
            // Retrieve lower left corner from face ind
            int i = face % (resX - 1) + (face / (resZ - 1) * resX);

            triangles[t++] = i + resX;
            triangles[t++] = i + 1;
            triangles[t++] = i;

            triangles[t++] = i + resX;
            triangles[t++] = i + resX + 1;
            triangles[t++] = i + 1;
        }
        #endregion

        mesh.vertices = vertices;
        mesh.normals = normales;
        mesh.uv = uvs;
        mesh.triangles = triangles;

        mesh.RecalculateBounds();
    }

    private void OnDrawGizmos()
    {
        Gizmos.color = Color.black;
        for (int i = 0; i < vertices.Length; i++)
        {
            Gizmos.DrawSphere(vertices[i], 0.1f);
        }
    }
}
请注意顶点y坐标中的0。0 != 五,

您需要为对象的世界空间位置添加偏移

vertices[x + z * resX] = new Vector3(xPos, 0f, zPos);
vertices[x + z * resX] = new Vector3(xPos + transform.position.x, transform.position.y, zPos + transform.position.z);