Unity

Vào cuối ngày, khi bạn đã hoàn thành một lượng công việc tương đối, bạn muốn lưu lại tiến độ của mình. Trong Unity, nhấn Ctrl + S sẽ không trực tiếp lưu dự án của bạn.

Mọi thứ trong Unity xảy ra trong các cảnh. Lưu và tải cũng vậy; bạn phải lưu công việc hiện tại của mình dưới dạng một cảnh (phần mở rộng .unity) trong nội dung của mình.

Hãy để chúng tôi thử nó ra. Nếu chúng ta nhấn Ctrl + S và đặt tên cho cảnh của mình, chúng ta sẽ thấy một nội dung mới trong vùng Nội dung của chúng ta. Đây là tệp cảnh.

Bây giờ, chúng ta hãy thử tạo một cảnh mới. Để làm như vậy, hãy nhấp chuột phải vào Nội dung và chuyển đến Tạo → Cảnh. Đặt tên cho cảnh mới của bạn và nhấn enter.

Trong chế độ Trình chỉnh sửa (khi trò chơi không chơi), các cảnh có thể được tải vào trình chỉnh sửa bằng cách nhấp đúp vào chúng. Tải một cảnh có các thay đổi chưa được lưu trên cảnh hiện tại của bạn sẽ nhắc bạn lưu hoặc hủy các thay đổi của mình.

Tập lệnh đầu tiên của bạn

Việc nhập hình ảnh và để chúng ở yên trong trò chơi của bạn sẽ không thực sự đưa bạn đến được đâu. Có lẽ nó sẽ tạo nên một khung ảnh đẹp, nhưng không phải là một trò chơi.

Viết kịch bản là điều bắt buộc để tạo trò chơi trong Unity. Scripting là quá trình viết các khối mã được gắn giống như các thành phần vào GameObjects trong khung cảnh. Kịch bản là một trong những công cụ mạnh mẽ nhất theo ý của bạn và nó có thể tạo ra hoặc phá vỡ một trò chơi hay.

Việc viết kịch bản trong Unity được thực hiện thông qua việc triển khai JavaScript của C # hoặc Unity, được gọi là UnityScript (tuy nhiên, với chu kỳ 2018, UnityScript hiện đang bắt đầu giai đoạn ngừng sử dụng, vì vậy bạn không nên sử dụng nó). Với mục đích của loạt bài này, chúng tôi sẽ sử dụng C #.

Để tạo một tập lệnh mới, hãy nhấp chuột phải vào Nội dung của bạn và đi tới Tạo → Tập lệnh C # . Bạn cũng có thể sử dụng tab Tài sản trong thanh trên cùng của công cụ.

Unity

Khi bạn tạo một tập lệnh mới, một nội dung mới sẽ hiển thị. Trong lúc này, hãy để nguyên tên và nhấp đúp vào nó. IDE mặc định của bạn sẽ mở ra cùng với tập lệnh. Hãy để chúng tôi xem nó thực sự là gì.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {
   // Use this for initialization
   void Start() { 
   }
   // Update is called once per frame
   void Update() {

   }
}

Bạn sẽ thấy tên tập lệnh của mình dưới dạng một lớp bắt nguồn từ MonoBehaviour . MonoBehaviour là gì? Nó là một thư viện rộng lớn của các lớp và phương thức. Nó giúp tất cả các script trong Unity bắt nguồn từ cách này hay cách khác. Bạn càng viết nhiều script trong Unity, bạn sẽ càng nhận ra MonoBehaviour thực sự hữu ích như thế nào.

Khi tiếp tục, chúng tôi có hai tập lệnh riêng tư không có bất kỳ kiểu trả về nào, đó là phương thức Bắt đầu và Cập nhật . Các Bắt đầu phương pháp chạy một lần cho khung đầu tiên mà gameObject này được sử dụng vào hoạt động trong bối cảnh đó.

Các Cập nhật phương pháp chạy mỗi khung của trò chơi sau khi phương pháp Start. Thông thường, các trò chơi trong Unity chạy ở tốc độ 60 FPS hoặc khung hình / giây, có nghĩa là phương thức Cập nhật được gọi là 60 lần / giây trong khi đối tượng đang hoạt động. Tập lệnh Unity cho phép bạn tận dụng toàn bộ lớp MonoBehaviour, cũng như các tính năng cốt lõi của C # như tập hợp chung, biểu thức lambda và phân tích cú pháp XML, để kể tên một số. Trong bài học tiếp theo, chúng ta sẽ viết đoạn mã đầu tiên của mình!

Unity – Viết kịch bản chuyển động cơ bản

Trong bài học này, chúng ta sẽ viết mã làm cho một gameObject di chuyển lên, xuống, trái và phải dựa trên đầu vào của người dùng. Điều này sẽ giúp chúng tôi hiểu quy trình làm việc của Unity script dễ dàng hơn.

Hãy nhớ rằng mọi GameObject đều có ít nhất một thành phần – Transform . Điều đặc biệt là Transform của gameObject cũng hiển thị dưới dạng các biến trong phần script của Unity để chúng ta có thể sửa đổi nó thông qua mã. Điều này cũng không bị hạn chế đối với Transform; tất cả các thành phần trong Unity đều có thuộc tính, có thể truy cập được thông qua các biến trong script.

Hãy để chúng tôi bắt đầu với kịch bản chuyển động của chúng tôi. Tạo một tập lệnh mới và đặt tên là “Phong trào”.

Bây giờ, mở script và bạn sẽ thấy những thứ tương tự như bạn đã thấy trong bài học trước.

Hãy để chúng tôi tạo một biến float công khai có tên là speed . Đặt một biến công khai trong Unity có một lợi thế lớn – Biến hiển thị dưới dạng trường có thể sửa đổi bên trong trình chỉnh sửa, vì vậy bạn không phải điều chỉnh thủ công các giá trị trong mã.

public class Movement : MonoBehaviour {
   public float speed;
}

Nếu chúng ta lưu tập lệnh này mà không chạm vào các phương thức khác, thì nó sẽ được biên dịch trong Unity.

(Bạn có thể thấy khi nó đang biên dịch bằng  biểu tượng ở góc dưới cùng bên phải.)

Unity

Tiếp theo, kéo và thả tập lệnh từ Nội dung vào GameObject. Nếu bạn làm đúng, đây là những gì bạn sẽ thấy trong các thuộc tính của GameObject –

Unity

Vì giá trị tốc độ có thể điều chỉnh và không cần phải thay đổi mã mọi lúc, chúng ta có thể sử dụng phương thức update () thay vì start ().

Bây giờ chúng ta hãy xem xét các mục tiêu cho phương pháp Cập nhật –

  • Kiểm tra đầu vào của người dùng.
  • Nếu có đầu vào của người dùng, hãy đọc hướng dẫn của đầu vào.
  • Thay đổi các giá trị vị trí của chuyển đổi của đối tượng dựa trên tốc độ và hướng của nó. Để làm như vậy, chúng tôi sẽ thêm đoạn mã sau:
void Update() {
   float h = Input.GetAxisRaw(“Horizontal”);
   float v = Input.GetAxisRaw(“Vertical”);
   
   gameObject.transform.position = new Vector2 (transform.position.x + (h * speed), 
      transform.position.y + (v * speed));

Bây giờ chúng ta hãy thảo luận về mã trong breif.

Trước hết, chúng ta tạo một biến dấu phẩy động có tên là h (đối với chiều ngang) và giá trị của nó được đưa ra bởi phương thức Input.GetAxisRaw . Phương thức này trả về -1, 0 hoặc 1 tùy thuộc vào phím người chơi đã nhấn trên mũi tên lên / xuống / trái / phải.

Lớp Đầu vào chịu trách nhiệm nhận đầu vào từ người dùng dưới dạng nhấn phím, nhập chuột, nhập bộ điều khiển, v.v. Phương thức GetAxisRaw hơi khó hiểu, vì vậy chúng ta sẽ quay lại vấn đề đó sau.

Tiếp theo, chúng tôi đang cập nhật vị trí gameObject của chúng tôi lên một vị trí mới được xác định bằng cách tạo một Vector2 mới . Vector2 nhận 2 tham số, lần lượt là các giá trị x và y của nó . Đối với giá trị x, chúng tôi cung cấp tổng vị trí hiện tại của đối tượng và tốc độ của nó , thêm một số lượng vào mỗi khung hình mà phím được nhấn vào vị trí của nó.

Lưu tập lệnh này và quay lại Unity. Unity sẽ tự động cập nhật tất cả các tập lệnh khi nó biên dịch thành công, vì vậy bạn không cần phải đính kèm lại tập lệnh nhiều lần. Bây giờ bạn đã hoàn tất, hãy thay đổi giá trị của tốc độ trong thuộc tính của GameObject thành 0,8. Điều này rất quan trọng vì giá trị cao hơn sẽ khiến người chơi di chuyển quá nhanh.

Unity

Bây giờ, hãy nhấp vào Chơi và xem trò chơi nhỏ đầu tiên của bạn đang hoạt động!

Unity

Hãy thử nhấn các phím mũi tên và di chuyển xung quanh. Để dừng trò chơi, chỉ cần nhấn Play lại. Bạn thậm chí có thể điều chỉnh tốc độ trong thời gian thực để bạn không phải dừng và khởi động nó mọi lúc.

Trong bài học tiếp theo, chúng ta sẽ tìm hiểu về các vật thể cứng và va chạm

Unity – Hiểu va chạm (xem thêm)

Trả lời