Я хотел бы генерировать сетки и текстуры процедурные в Unity/C#. Однако все мои попытки с пользовательской сеткой отображают только первый тексель. Я попытался как можно больше упростить задачу и придумал следующий пример кода, который рисует белый квадрат вместо «флаг польского».Unity/C#: процедурная текстура для процедурной сетки
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
[SerializeField] Material unlitMaterial;
void Start() {
Mesh mesh = new Mesh();
mesh.vertices = new Vector3[4] { Vector3.zero, new Vector3 (1, 0, 0), new Vector3 (1, 0, 1), new Vector3 (0, 0, 1) };
mesh.triangles = new int[6] {1, 0, 3, 2, 1, 3 } ;
mesh.RecalculateNormals();
Texture2D texture = new Texture2D (2, 2);
texture.SetPixels (new Color[4] {Color.white, Color.white, Color.red, Color.red});
texture.filterMode = FilterMode.Point;
texture.Apply();
GameObject gameObject = new GameObject();
MeshRenderer meshRenderer = gameObject.AddComponent<MeshRenderer>();
if (unlitMaterial != null)
meshRenderer.material = unlitMaterial;
meshRenderer.material.mainTexture = texture;
gameObject.AddComponent<MeshFilter>().mesh = mesh;
}
}
(я пробовал различные материалы, такие как неосвещенные/текстуры при отсутствии эффекта)
Большого спасибо за любую помощь ;-)
Спасибо! Я действительно забыл урс, извините за довольно глупый вопрос. В случае, если кто-нибудь столкнется с этим вопросом, добавьте следующую строку: mesh.uv = new Vector2 [4] {Vector2.zero, new Vector2 (1, 0), новый Vector2 (1, 1), новый Vector2 (0 , 1)}; , чтобы этот базовый пример работал. – Lunkford