Đã kiểm tra với phiên bản: 5
- -
Khó khăn: Người mới bắt đầu
Đếm, hiển thị văn bản và kết thúc trò chơi.Đếm, hiển thị văn bản và kết thúc trò chơi.
00:05 - 00:07
Chúng tôi cần một công cụ để lưu trữ giá trị
00:07 - 00:09
của tập hợp được tính của chúng tôi.
00:09 - 00:11
Và một công cụ khác để thêm vào giá trị đó
00:11 - 00:13
khi chúng tôi thu thập và đếm chúng.
00:13 - 00:16
Hãy thêm công cụ này vào kịch bản PlayerController của chúng tôi.
00:17 - 00:19
Chọn đối tượng trò chơi Người chơi và mở
00:19 - 00:21
Kịch bản PlayerController để chỉnh sửa.
00:24 - 00:27
Hãy thêm một biến riêng để giữ số đếm của chúng ta.
00:27 - 00:29
Đây sẽ là một int, vì số lượng của chúng ta sẽ là
00:29 - 00:33
một số nguyên, chúng tôi sẽ không thu thập một phần đối tượng,
00:33 - 00:35
và hãy gọi nó là Count.
00:36 - 00:38
Vì vậy, trong trò chơi của chúng tôi, chúng tôi sẽ bắt đầu
00:38 - 00:39
với tổng số là 0.
00:39 - 00:41
Sau đó, chúng tôi sẽ cần tăng giá trị đếm
00:41 - 00:44
1 khi chúng tôi chọn một đối tượng mới.
00:44 - 00:47
Trước tiên, chúng ta cần đặt giá trị đếm là 0.
00:47 - 00:49
Vì biến này là riêng tư, chúng tôi không có
00:49 - 00:51
bất kỳ quyền truy cập vào nó trong Thanh tra.
00:51 - 00:55
Biến này chỉ có sẵn để sử dụng trong tập lệnh này
00:55 - 00:58
và như vậy, chúng tôi sẽ cần đặt giá trị bắt đầu
00:58 - 00:59
ở đây trong kịch bản.
00:59 - 01:01
Có một số cách chúng tôi có thể đặt giá trị bắt đầu
01:01 - 01:03
Bá tước, nhưng trong nhiệm vụ này, chúng ta sẽ
01:03 - 01:05
làm điều đó trong chức năng Bắt đầu.
01:06 - 01:10
Trong Bắt đầu, số lượng của chúng tôi bằng 0.
01:11 - 01:13
Tiếp theo, chúng ta cần phải thêm vào Đếm khi chúng tôi nhận
01:13 - 01:16
các đối tượng trò chơi có thể thu thập của chúng tôi.
01:16 - 01:19
Chúng tôi sẽ nhận các đối tượng của chúng tôi trong OnTriggerEnter
01:19 - 01:23
nếu đối tượng trò chơi khác có thẻ Pickup.
01:23 - 01:25
Vì vậy, đây là nơi chúng tôi thêm mã đếm của chúng tôi.
01:25 - 01:27
Sau khi thiết lập các đối tượng trò chơi khác
01:27 - 01:32
trạng thái hoạt động thành False, chúng tôi thêm giá trị mới của Count
01:32 - 01:36
bằng với giá trị cũ của chúng tôi là Đếm cộng 1.
01:37 - 01:40
Có nhiều cách khác để thêm, đếm hoặc tăng
01:40 - 01:41
giá trị khi mã hóa cho Unity,
01:41 - 01:43
nhưng cái này rất dễ hiểu và
01:43 - 01:46
đây là cái mà chúng ta sẽ sử dụng trong bài tập này.
01:47 - 01:49
Lưu tập lệnh này và trở về Unity.
01:51 - 01:53
Bây giờ chúng tôi có thể lưu trữ và tăng số lượng của chúng tôi
01:53 - 01:55
nhưng chúng tôi không có cách nào để hiển thị nó.
01:56 - 01:57
Nó cũng sẽ là tốt để hiển thị một tin nhắn
01:57 - 01:59
khi trò chơi kết thúc.
01:59 - 02:01
Để hiển thị văn bản trong bài tập này, chúng tôi sẽ
02:01 - 02:04
sử dụng UI Toolset của Unity
02:04 - 02:06
để hiển thị văn bản và giá trị của chúng tôi.
02:07 - 02:10
Trước tiên, hãy tạo phần tử văn bản giao diện người dùng mới
02:10 - 02:13
từ trình đơn Tạo của cấp bậc.
02:18 - 02:20
Hãy nhìn vào những gì chúng tôi đã thêm vào hệ thống phân cấp.
02:20 - 02:23
Chúng tôi dường như đã nhận được nhiều hơn chúng tôi mặc cả cho.
02:24 - 02:26
Chúng tôi không chỉ có phần tử văn bản giao diện người dùng,
02:26 - 02:28
nhưng chúng tôi cũng đã tạo một phụ huynh
02:28 - 02:32
yếu tố canvas và đối tượng trò chơi hệ thống sự kiện.
02:32 - 02:35
Tất cả đều được yêu cầu bởi bộ công cụ UI.
02:36 - 02:38
Điều quan trọng nhất cần biết về
02:38 - 02:42
các mục bổ sung này là tất cả các phần tử giao diện người dùng phải
02:42 - 02:45
là con của canvas để hoạt động chính xác.
02:46 - 02:48
Để biết thêm thông tin về các công cụ giao diện người dùng,
02:48 - 02:51
bao gồm canvas và hệ thống sự kiện
02:51 - 02:54
vui lòng xem thông tin được liên kết bên dưới.
02:56 - 02:59
Đổi tên thành phần văn bản CountText.
03:00 - 03:03
Vì vậy, hãy tùy chỉnh yếu tố này một chút.
03:03 - 03:05
Văn bản mặc định hơi tối.
03:07 - 03:09
Hãy làm cho chữ màu trắng,
03:09 - 03:11
để dễ nhìn hơn.
03:11 - 03:13
Kích thước và căn chỉnh là tốt.
03:14 - 03:16
Và hãy thêm một số văn bản giữ chỗ
03:16 - 03:18
Đếm văn bản.
03:20 - 03:23
Chúng tôi muốn văn bản của chúng tôi hiển thị ở phía trên bên trái
03:23 - 03:25
của màn hình khi trò chơi đang chơi.
03:26 - 03:28
Chúng ta có thể thấy rằng văn bản giao diện người dùng hiện tại
03:28 - 03:31
hiển thị ở giữa màn hình trong giao diện trò chơi.
03:32 - 03:34
Điều này là do phần tử văn bản được neo
03:34 - 03:36
đến trung tâm của cha mẹ,
03:36 - 03:39
trong trường hợp này là canvas.
03:39 - 03:43
Cần lưu ý rằng thành phần biến đổi trên các phần tử giao diện người dùng
03:43 - 03:45
khác với các đối tượng trò chơi khác trong Unity.
03:46 - 03:50
Đối với các phần tử giao diện người dùng, biến đổi tiêu chuẩn đã được thay thế
03:50 - 03:52
với biến đổi trực tiếp,
03:52 - 03:55
tính đến nhiều tính năng chuyên dụng
03:55 - 03:57
cần thiết cho một hệ thống giao diện người dùng linh hoạt,
03:57 - 04:00
bao gồm cả neo đậu và định vị.
04:00 - 04:03
Để biết thêm thông tin về biến đổi trực tiếp
04:03 - 04:05
vui lòng xem thông tin được liên kết bên dưới.
04:06 - 04:08
Một trong những cách dễ nhất để di chuyển
04:08 - 04:10
đếm phần tử văn bản ở phía trên bên trái
04:10 - 04:12
là để neo nó vào góc trên bên trái của
04:12 - 04:15
canvas, chứ không phải là trung tâm.
04:15 - 04:19
Để thực hiện việc này, hãy mở menu Anchors và Presets
04:19 - 04:22
bằng cách nhấp vào nút hiển thị giá trị đặt trước neo hiện tại.
04:19 - 04:22
bằng cách nhấp vào nút hiển thị giá trị đặt trước neo hiện tại.
04:23 - 04:25
Khi chúng ta neo lại phần tử văn bản này
04:25 - 04:27
chúng tôi cũng muốn đặt trục
04:27 - 04:30
và vị trí dựa trên neo mới.
04:31 - 04:34
Vì vậy, chúng tôi sẽ giữ phím Shift và Alt
04:34 - 04:37
và chọn nút góc trên bên trái.
04:37 - 04:39
Đó là thực hiện nó, nó ở trong góc.
04:41 - 04:43
Nhưng bây giờ nó trông có vẻ nhô lên chống lại
04:43 - 04:44
góc của chế độ xem trò chơi.
04:45 - 04:47
Hãy cho nó một khoảng trống giữa văn bản
04:47 - 04:49
và các cạnh của màn hình.
04:50 - 04:53
Khi chúng tôi được neo vào góc trên bên trái của canvas
04:53 - 04:56
và chúng tôi cũng đã đặt trục của chúng tôi ở góc trên bên trái
04:56 - 05:00
cách dễ nhất để cung cấp cho văn bản một phòng hơi thở
05:00 - 05:02
là thay đổi biến đổi trực tiếp
05:02 - 05:04
Giá trị Pos X và Pos Y.
05:05 - 05:08
10 và -10 có vẻ đúng,
05:08 - 05:12
với một số phòng xung quanh nó, nhưng nó vẫn lên và ra khỏi con đường.
05:16 - 05:19
Vì vậy, hãy kết nối thành phần văn bản giao diện người dùng
05:19 - 05:21
để hiển thị giá trị đếm của chúng tôi.
05:21 - 05:25
Bắt đầu bằng cách mở tập lệnh PlayerController để chỉnh sửa.
05:27 - 05:31
Trước khi chúng tôi có thể mã bất cứ điều gì liên quan đến bất kỳ yếu tố giao diện người dùng
05:31 - 05:33
chúng ta cần nói kịch bản của mình nhiều hơn về chúng.
05:34 - 05:37
Chi tiết về bộ công cụ giao diện người dùng
05:37 - 05:39
được tổ chức trong những gì được gọi là một không gian tên.
05:40 - 05:43
Chúng ta cần sử dụng không gian tên này
05:43 - 05:47
giống như chúng ta đang sử dụng UnityEngine và System.Collections.
05:47 - 05:51
Vì vậy, để làm điều này, ở trên cùng của kịch bản của chúng tôi viết
05:51 - 05:54
sử dụng UnityEngine.UI.
05:55 - 05:58
Với điều này tại chỗ chúng ta có thể viết mã của chúng tôi.
05:59 - 06:03
Đầu tiên tạo một biến văn bản công khai mới
06:03 - 06:05
được gọi là countText
06:05 - 06:07
để giữ tham chiếu đến văn bản giao diện người dùng
06:07 - 06:09
thành phần trên giao diện người dùng của chúng tôi
06:09 - 06:11
đối tượng trò chơi văn bản.
06:11 - 06:13
Chúng ta cần đặt giá trị bắt đầu của
06:13 - 06:15
Thuộc tính Văn bản của văn bản giao diện người dùng.
06:16 - 06:18
Chúng ta cũng có thể làm điều này trong Start.
06:19 - 06:27
Viết countText.Text = "Count:"
06:27 - 06:32
+ count.ToString và chúng ta cần dấu ngoặc đơn.
06:32 - 06:34
Bây giờ dòng mã này phải được viết
06:34 - 06:37
sau khi dòng thiết lập giá trị đếm của chúng tôi.
06:37 - 06:41
Đếm phải có một số giá trị để chúng tôi đặt văn bản.
06:42 - 06:44
Bây giờ chúng tôi cũng cần cập nhật thuộc tính văn bản này
06:44 - 06:47
mỗi khi chúng tôi chọn một bộ sưu tập mới
06:47 - 06:50
vì vậy trong OnTriggerEnter sau khi chúng tôi tăng số lượng của chúng tôi
06:50 - 06:52
giá trị hãy viết lại
06:52 - 06:59
countText.Text = 'Count:' + count.ToString ();
07:00 - 07:03
Hmm, giờ chúng ta đã viết cùng một dòng mã
07:03 - 07:05
hai lần trong cùng một tập lệnh.
07:05 - 07:07
Đây thường là hình thức xấu.
07:08 - 07:10
Một cách để làm điều này một chút thanh lịch hơn
07:10 - 07:13
là tạo một hàm hoạt động ở một nơi
07:13 - 07:16
và chúng ta chỉ cần gọi hàm này mỗi lần chúng ta cần nó.
07:17 - 07:21
Hãy tạo một hàm mới với void SetCountText
07:21 - 07:24
và sau đó là một tập hợp dấu ngoặc đơn và dấu ngoặc đơn trống.
07:25 - 07:28
Bây giờ hãy di chuyển một thể hiện của dòng mã này
07:28 - 07:30
vào chức năng bằng cách cắt và dán nó.
07:32 - 07:34
Và ở vị trí của nó, hãy đặt một dòng mã
07:34 - 07:35
chỉ cần gọi hàm.
07:37 - 07:39
Cuối cùng, hãy thay thế dòng khác bằng
07:39 - 07:41
chức năng gọi là tốt.
07:43 - 07:47
Xuất sắc. Lưu và trao đổi lại thành Unity.
07:49 - 07:51
Bây giờ chúng ta thấy kịch bản PlayerController của chúng ta đã
07:51 - 07:53
một thuộc tính văn bản mới.
07:54 - 07:56
Chúng tôi có thể liên kết tham chiếu đến văn bản Đếm
07:56 - 07:58
đơn giản bằng cách kéo và thả
07:58 - 08:01
Đếm trò chơi đối tượng CountText vào khe.
08:02 - 08:04
Unity sẽ tìm thấy thành phần văn bản
08:04 - 08:09
trên đối tượng trò chơi và liên kết chính xác tham chiếu.
08:10 - 08:13
Bây giờ hãy lưu, vào chế độ chơi và kiểm tra.
08:17 - 08:19
Ah-ha! Chúng tôi không chỉ thu thập
08:19 - 08:21
những đối tượng này nhưng chúng tôi đếm chúng ngay bây giờ.
08:22 - 08:24
Hãy thoát khỏi chế độ chơi.
08:26 - 08:28
Chúng tôi cần hiển thị thông báo khi chúng tôi có
08:28 - 08:30
thu thập tất cả các hình khối.
08:30 - 08:34
Để làm điều này, chúng ta sẽ cần một đối tượng văn bản giao diện người dùng khác.
08:35 - 08:37
Một lần nữa, bằng cách sử dụng trình đơn Tạo của hệ thống phân cấp
08:37 - 08:39
tạo một đối tượng trò chơi văn bản giao diện người dùng mới.
08:42 - 08:44
Đổi tên nó Win Text.
08:45 - 08:47
Lưu ý cách phần tử văn bản giao diện người dùng mới
08:47 - 08:49
được tự động thêm vào canvas của chúng tôi.
08:50 - 08:54
Một lần nữa, như trước đây, chúng ta hãy tùy chỉnh các giá trị trên thành phần.
08:55 - 08:58
Hãy tô màu chữ trắng để dễ nhìn hơn.
08:59 - 09:01
Hãy làm cho văn bản lớn hơn một chút,
09:01 - 09:03
hãy thử khoảng 24.
09:05 - 09:09
Cuối cùng, chúng ta hãy điều chỉnh căn chỉnh đến giữa và giữa.
09:10 - 09:12
Và một lần nữa, hãy thêm văn bản trình giữ chỗ
09:12 - 09:14
Win Text.
09:17 - 09:21
Chúng tôi muốn văn bản này hiển thị ở chính giữa màn hình trò chơi
09:21 - 09:24
nhưng lên một chút để nó không bao gồm đối tượng trò chơi người chơi.
09:25 - 09:28
Để làm điều này chỉ cần điều chỉnh các biến đổi của rect
09:28 - 09:32
Giá trị Pos Y theo mặc định là thành phần văn bản giao diện người dùng này
09:32 - 09:35
được neo vào giữa khung hình.
09:36 - 09:39
Một giá trị khoảng 75 cảm thấy tốt.
09:39 - 09:42
Lưu cảnh và trao đổi lại cho trình chỉnh sửa tập lệnh của chúng tôi.
09:43 - 09:47
Chúng tôi cần thêm tham chiếu cho phần tử văn bản giao diện người dùng này.
09:47 - 09:52
Tạo biến văn bản công khai mới
09:53 - 09:56
và gọi nó là winText.
09:56 - 09:59
Bây giờ hãy đặt giá trị bắt đầu cho
09:59 - 10:01
Thuộc tính văn bản của văn bản giao diện người dùng.
10:02 - 10:05
Điều này được đặt thành một chuỗi rỗng hoặc hai
10:05 - 10:08
dấu ngoặc kép không có nội dung.
10:08 - 10:10
Thuộc tính văn bản này sẽ bắt đầu trống.
10:10 - 10:13
Sau đó, trong hàm SetCountText, hãy viết
10:13 - 10:18
nếu Đếm lớn hơn hoặc bằng 12,
10:18 - 10:20
đó là tổng số đối tượng chúng ta có trong
10:20 - 10:28
trò chơi để thu thập, sau đó winText.Text của chúng tôi bằng You Win.
10:28 - 10:31
Lưu tập lệnh này và trở về Unity.
10:33 - 10:35
Một lần nữa trên trình phát của chúng tôi,
10:35 - 10:39
PlayerController của chúng tôi có thuộc tính văn bản giao diện người dùng mới.
10:39 - 10:41
Chúng ta có thể kết hợp thành phần
10:41 - 10:46
một lần nữa bằng cách kéo đối tượng trò chơi WinText vào khe.
10:47 - 10:49
Lưu cảnh và chơi.
10:55 - 10:57
Vì vậy, chúng tôi đang chọn các đối tượng trò chơi của mình,
10:59 - 11:01
chúng tôi đang đếm tập hợp của chúng tôi,
11:02 - 11:02
và
11:03 - 11:04
chúng ta thắng rồi!
11:04 - 11:07
Và như chúng ta có thể thấy khi chúng ta thu thập được 12 vật thể
11:07 - 11:10
chúng tôi hiển thị văn bản 'Bạn thắng'.
11:11 - 11:14
Trong bài tập tiếp theo và cuối cùng của loạt bài này
11:14 - 11:18
chúng tôi sẽ xây dựng trò chơi và triển khai trò chơi bằng trình phát độc lập.
PlayerController
Expand view
Copy code
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float speed;
public Text countText;
public Text winText;
private Rigidbody rb;
private int count;
void Start ()
{
rb = GetComponent<Rigidbody>();
count = 0;
SetCountText ();
winText.text = "";
}
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.AddForce (movement * speed);
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag ( "Pick Up"))
{
other.gameObject.SetActive (false);
count = count + 1;
SetCountText ();
}
}
void SetCountText ()
{
countText.text = "Count: " + count.ToString ();
if (count >= 12)
{
winText.text = "You Win!";
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
No comments:
Post a Comment