Thứ Bảy, 15 tháng 2, 2014

COOKBOOK - TẠO ĐỒNG HỒ KĨ THUẬT SỐ BẰNG GUI

  - Tạo đồng hồ kĩ thuật số bằng GUI -

Dù rằng ở thế giới thực hay thế giới trong game, có rất nhiều game sử dụng nhiều dạng đồng hồ với nhiều kiểu hiện thị khác nhau. Hầu hết các loại đồng hồ hiển thị là một chuỗi (string) biểu diễn dạng số nguyên (integer) của giờ, phút, giây.



Cách để làm

B1. Tại thẻ Project, nhấp chọn nút Create | C# Script, đặt tên là ClockDigital và chèn đoạn code sau vào:

using UnityEngine;
using System.Collections;

using System;

public class ClockDigital : MonoBehaviour
{
    private void OnGUI ()
    {

        DateTime time = DateTime.Now;
        string hour = LeadingZero( time.Hour );
        string minute = LeadingZero( time.Minute );
        string second = LeadingZero( time.Second );

        GUI.Box(new Rect (5, 5, 100, 25), hour + ":" + minute + ":" +  second);   
    }

     // given an integer, return a 2-character string
     // adding a leading zero if required
    private string LeadingZero(int n)
    {
        return n.ToString().PadLeft(2, '0');
    }
}


B2. Kéo thả file C# này vào Main Camera ở thẻ Hierarchy.


Nguyên lí làm việc

Sử dụng thư viện System cho phép chúng ta sử dụng class Datetime để trả về thời gian hiện tại của hệ thống. Dòng đầu tiên trong hàm OnGUI ( ) sẽ trả về thời gian thực và gán nó vào biến time trong object (đối tượng) DateTime.

Giờ, phút, giây được tách ra từ object DateTime và được chuyển đổi từ dạng số nguyên (integer) sang dạng chuỗi (string) có 2 kí tự bằng hàm LeadingZero ( ). Hàm này sẽ chèn thêm số 0 vào hàng chục nếu giá trị của giờ, phút, giây chỉ có hàng đơn vị. (VD: 01, 02, 03...).

Cuối cùng, giờ, phút, giây được ngăn cách với nhau bởi dấu : và được hiển thị thông qua GUI label.


Còn nữa

Nếu bạn muốn hiển thị đồng hồ 12 số thay vì 24 số thì bạn chỉ việc lấy số giờ và chia lấy phần nguyên với 12.

string hour = LeadingZero( time.Hour % 12);

Không có nhận xét nào:

Đăng nhận xét