2/02/2014

COOKBOOK - THAY ĐỔI MÀU SẮC CHO VẬT THỂ


  - Thay đổi màu sắc cho vật thể -

Trong các phần thiết lập giao diện hoặc các phần tùy chỉnh dành cho người dùng. Ví dụ điển hình là thay đổi màu sắc diện mạo của nhân vật. Trong bài viết này, sẽ hướng dẫn cách dùng các thanh trượt (slider) để điều chỉnh màu sắc vật liệu (material) được gán vào nhân vật dựa trên các giá trị của bảng màu RGB (Red Green Blue).

Chuẩn bị...

ColorSelector.unitypackage


Cách để làm

B1. Nhấp phải vào thẻ Project và chọn Import | Custom Package và mở file ColorSelector vừa tải ở trên.
 
B2. Double click vào scene colorSelection ở thẻ Project | ColorSelect.


B3. Nhấp phải vào thẻ Project và chọn Create | C# Script và đặt tên là ColorSelector rồi chèn đoạn code sau vào:


using UnityEngine;
using System.Collections;

public class ColorSelector : MonoBehaviour
{
    public float redValue = 1.0f;
    public float greenValue = 1.0f;
    public float blueValue = 1.0f;
    bool selectorOn = false;
    private float redReset = 1.0f;
    private float greenReset = 1.0f;
    private float blueReset = 1.0f;

    void OnMouseUp()
    {
        selectorOn = true;
    }
   
    void OnGUI()
    {
        if (selectorOn)
        {
            GUI.Label(new Rect(10, 30, 90, 20), "Red: " + Mathf.RoundToInt(redValue * 255));
            redValue = GUI.HorizontalSlider(new Rect(80, 30, 256, 20), redValue, 0.0f, 1.0f);
            GUI.Label(new Rect(10, 50, 90, 20), "Green: " + Mathf.RoundToInt(greenValue * 255));
            greenValue = GUI.HorizontalSlider(new Rect(80, 50, 256, 20), greenValue, 0.0f, 1.0f);
            GUI.Label(new Rect(10, 70, 90, 20), "Blue: " + Mathf.RoundToInt(blueValue * 255));
            blueValue = GUI.HorizontalSlider(new Rect(80, 70, 256, 20), blueValue, 0.0f, 1.0f);
            if (GUI.Button(new Rect(10, 110, 50, 20), "Ok"))
            {
                selectorOn = false;
                redReset = redValue;
                greenReset = greenValue;
                blueReset = blueValue;
            }
            if (GUI.Button(new Rect(70, 110, 80, 20), "Reset"))
            {
                redValue = redReset;
                greenValue = greenReset;
                blueValue = blueReset;
            }
            renderer.material.SetColor("_Color", new Color(redValue, greenValue, blueValue, 1));
        }
        else
        {
            GUI.Label(new Rect(10, 10, 500, 20), "========================================");
            GUI.Label(new Rect(10, 25, 500, 20), "Nhấp chọn phần thân tàu vũ trụ để chỉnh màu!");
            GUI.Label(new Rect(10, 40, 500, 20), "========================================");
        }
    }


B4. Tại thẻ Hierarchy, bấm vào hình tam giác kế bên spaceshipColor và kéo thả file C# vừa tạo ở bước trên vào ship như hình sau:


B5. Nhấp chọn ship ở thẻ Hierarchy, vào Component | Physics | Mesh Collider.


B6. Ấn nút Play để kiểm tra thành quả.

No comments:

Post a Comment