2016-06-30 4 views
0

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; 
    } 
} 

감사합니다 도움이 ;-)

답변

0

당신이 설정 UV를 누락 생각에 대한 많은 (I은 아무 효과가 꺼져/텍스처와 같은 다른 재료를 시도했다). 이 옵션을 선택합니다 : 그는 단지 4 개 버텍스을 가지고 있기 때문에, 단지 (0,0) (0,1) (1,1)와 (1,0)로 핸드셋 Unity3D answers link

: UV를 [0] 새 Vector2을 = (0,0); ....

과 같이 설정하십시오 : mesh.uv = uvs;

+0

감사합니다! 나는 정말로 uvs를 잊었다, 어리석은 질문을 유감스럽게 생각한다. 누군가이 질문을하는 경우에는 다음 줄을 추가하십시오. mesh.uv = new Vector2 [4] {Vector2.zero, 새 Vector2 (1, 0), 새 Vector2 (1, 1), 새 Vector2 (0 , 1) }; 이 기본 예제를 만들 수 있습니다. – Lunkford