4/09/2014

DEVGAME 1.5 - CẤU TRÚC CỦA MỘT TỆP MÃ - BIẾN (Phần 2)


 

Ở bài viết trước, chúng ta đã cài đặt biến kiểu số nguyên vào script SimpleRotate để điều chỉnh tốc độ quay của khối hộp. Bài viết này, chúng ta sẽ tiếp tục cài đặt biến với các kiểu dữ liệu khác nhau.

Còn nhiều thứ khác bạn cần phải tìm hiểu về biến bởi nó có vài kiểu khác nhau. Trong script SimpleRotate, chúng ta đã cài đặt tốc độ quay của khối hộp thông qua biến myDegrees = 50, chương trình sẽ mặc định biến này thuộc kiểu dữ liệu int ( số nguyên, không có phần thập phân ). Nếu bạn muốn sử dụng số thực ( số có phần thập phân ) như 50.0 thì bạn phải đổi nó sang kiểu float ( kiểu số thực ). Nhiều biến bắt buộc phụ thuộc vào cách thiết lập kiểu dữ liệu của chúng để xử lý cho các công việc tiếp theo.

Hãy mở file SimpleMove lên và thêm vài dòng script vào để tiến hành tìm hiểu.

B1. Double click vào file java SimpleMove ở thẻ Project và chèn thêm các dòng được tô đỏ như sau:

#pragma strict
var mySpeed : float;
var someString : String = "This is a test";
var someSetting : boolean = true;
var someObject : GameObject;

function Update () {
    //transform.Rotate(0,50* Time.deltaTime,0);
    transform.Translate(2* Time.deltaTime, 0,0);
}

Hãy cùng nhìn lại đoạn code vừa được thêm vào:
  • var mySpeed : float; : Định nghĩa kiểu float ( số thực ) cho biến mySpeed nhưng cài đặt giá trị.
  • var someString : String = "This is a test"; : Định nghĩa kiểu String ( chuỗi ) và cài đặt biến này mang giá trị là các ký tự nằm trong dấu ngoặc kép " ". Dạng chuỗi thường được đặt giữa dấu ngoặc kép " " và có màu đặt trưng của kiểu chuỗi trong trình biên tập code của Unity.
>>Chú ý: Nếu bạn copy và paste văn bản kể cả dấu ngoặc kép từ trình soạn thảo văn bản, các ký tự có thể bị thay đổi, khi đó chương trình biên tập code sẽ báo lỗi, buộc bạn phải tự nhập lại đoạn văn bản.
  • var someSetting : boolean = true; : Định nghĩa biến kiểu Boolean ( luận lý, chỉ mang giá trị True hoặc False) và cài đặt nó mang giá trị True. Ở thẻ Inspector, biến Boolean được hiển thị dưới dạng kiểu hộp đánh dấu checkbox.

B2. Lưu đoạn script lại và qua Unity Editor, nhấp chọn Cube Parent ở thẻ Hierarchy, qua thẻ Inspector, nhìn vào script SimpleMove đã được gắn ở bài viết trước và xem sự khác biệt.

>>Mẹo: Ngay cả khi kiểu dữ liệu của biến là bất kỳ kiểu nào cũng được và không bắt buộc phải định nghĩa. Nếu bạn quyết định định nghĩa, thì bạn nên save lại để tránh việc chương trình tự động gán kiểu dữ liệu cho biến. Nếu bạn lập trình trên nền tảng IOS hay Android, bạn nên định nghĩa rõ ràng. Trong loạt bài viết về DevGame này, mình sẽ sử dụng cả hai cách trên.

Chú ý rằng, phía trước tất cả tên biến điều có từ var. Trong Unity, var được định nghĩa cho các biến public ( biến toàn cục ). Nếu một hàm hay một biến được khai báo là public thì những lớp khác có thể gọi sử dụng trực tiếp được. Ngược lại nếu hàm hay biến đó được khai báo là private thì chỉ những thành viên trong lớp đó mới có thể sử dụng được thôi.

B3. Bây giờ thử thêm từ private vào phía trước var someSetting và save đoạn script lại.



B4. Nhấp chọn Cube Parent ở thẻ Hierarchy, qua thẻ Inspector và để ý rằng biến mang kiểu luận lý Some Setting đã biến mất.


Ngoài ra, trong đoạn script vừa được thêm vào còn có:
  • varsomeObject : GameObject; : Kiểu dữ liệu xuất hiện hầu hết trong các ngôn ngữ lập trình, Unity cho phép bạn định nghĩa biến của bất kể vật thể cấp cao như GameObject, hay thấp hơn là các Transform ( xoay, kéo, co dãn đối tượng) và thậm chí là các loại đối tượng khác như Camera hoặc Light ( đèn ).  

Một đoạn script có thể truy cập đến các biến hay hàm của đối tượng khác phải được định nghĩa như một giá trị của biến. Tuy nhiên, tên thuộc tính của vật thể là duy nhất, không được trùng nên phải đặt sao cho dễ hình dung công dụng nhất.

B6. Nhấp chọn Cube Parent ở thẻ Hierarchy. Kéo thả Camera hoặc Directional Light ở thẻ Hierarchy vào biến Some Object ở thẻ Inspector.


B7. Lưu đoạn script và qua Unity Editor lưu project của bạn lại với tên Demo.



No comments:

Post a Comment