Unity - B.unity - New Unity Project 27 - PC, Mac & Linux Standalone DX11

1. 我們先建立一個空物件,把以下腳本拖入。 
2. 我們建立一個 含貼圖 的 Material,把該材質拖入該腳本的 public Material myMaterial; 中
3. 執行遊戲,並拖動該腳本的 public float uvValue = 0.9f; 即可看見變化

using UnityEngine;
using UnityEditor;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour {

    public Material myMaterial;

    [Range(-10, 10)]
    public float uvValue = 0.9f;

    Mesh m;

    void Start () {

        // 初始化
        gameObject.AddComponent ("MeshRenderer");
        gameObject.AddComponent ("MeshFilter");

        MeshRenderer mr = GetComponent <MeshRenderer>();
        mr.material = myMaterial;

        MeshFilter mf = GetComponent <MeshFilter>();
        m = new Mesh ();
        mf.mesh = m;

        // 建立頂點
        Vector3 [] v = new Vector3[4];
        v [0] = new Vector3 (0, 0, 0);
        v [1] = new Vector3 (1, 0, 0);
        v [2] = new Vector3 (0, 1, 0);
        v [3] = new Vector3 (1, 1, 0);

        // 建立三角形
        int [] t = new int[6];
        t [0] = 2;
        t [1] = 1;
        t [2] = 0;

        t [3] = 1;
        t [4] = 2;
        t [5] = 3;

        // 建立法線
        Vector3 [] n = new Vector3[4];
        n [0] = new Vector3 (0, 0, -1);
        n [1] = new Vector3 (0, 0, -1);
        n [2] = new Vector3 (0, 0, -1);
        n [3] = new Vector3 (0, 0, -1);

        // 套用
        m.vertices = v;
        m.triangles = t;
        m.normals = n;
    }

    // 動態改變 UV 貼圖
    void Update(){
        Vector2 [] uv = new Vector2[4];
        uv [0] = new Vector2 (0, 0);
        uv [1] = new Vector2 (uvValue, 0);
        uv [2] = new Vector2 (0, uvValue);
        uv [3] = new Vector2 (uvValue, uvValue);
        m.uv = uv;
    }

}

arrow
arrow
    全站熱搜

    黃彥霖 發表在 痞客邦 留言(1) 人氣()