Unity为Mesh指定uv

文章目录

各组件作用
  • 我们可以在MeshFilter组件里面获取mesh对象
  • 在mesh对象里面获取vertex,uv坐标,并且指定这些坐标
  • 下面是动态生成一个物体并且指定材质的代码
using UnityEngine;
using System.Collections;
 

public class TextureTest : MonoBehaviour
{
 
    private Mesh mh;
    private Renderer rd;
    

    public Material mat;
 

    void Awake()
    {
        GameObject obj = new GameObject();
        mh = obj.AddComponent<MeshFilter>().mesh;
        rd = obj.AddComponent<MeshRenderer>();
        CreateBar( );
    }

    //更改模型顶点位置
    public float one;
    public float two;
    public float three;

    void CreateBar()
    {
        this.barIndex = barIndex;
 
        //顶点数组
        Vector3[] vertes = new Vector3[]
        {
            new Vector3(one, 0, 0),//第一个点
            new Vector3(0, two, 0), //第二个
            new Vector3(0, 0, three), //第三个
           
        };
 
        //给网格的顶点赋值
        mh.vertices = vertes;
 
        //顶点组成的三角形
        mh.triangles = new[]
        {
            0, 1, 2,
            2, 1, 0  //正反面都要渲染
        };
 
        //UV贴图的四个点,和顶点一一对应,左下角为(0,0),右上角为(1,1)
        //如果顶点顺序没有跟UV对应,贴图就会出现问题
        Vector2[] uvs = new Vector2[]
        {
            new Vector2(0, 0),//第一个点
            new Vector2(1,1), //2
            new Vector2(0.5f , 1)//3
          
        };
 
        mh.uv = uvs;
 
        //材质
        rd.material = mat;
 
        //法线重新计算
        mh.RecalculateNormals();
 
    }

    
    private void Update() {
        if(Input.GetKeyDown(KeyCode.Space)){
            CreateBar();
        }
    }
 

}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值