Friday, September 14, 2018

Hiển thị điểm và văn bản

Hiển thị điểm và văn bản
Đã 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

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