Ngân hàng câu hỏi của chương

Câu hỏi: PRU213 - Chương 2: Lập trình C# trong Unity

46 câu trắc nghiệm kèm lời giải của môn Game Programming with C# - Lập trình Game với C#, xếp theo thứ tự nhập vào ngân hàng. Trang 2/3 — câu 21–40.

Danh sách câu hỏi

40/46 câuCòn 6
21In Unity, how are GameObjects' behavior primarily controlled?4 lựa chọnKhó0% trả lời đúng
AThrough attached Scripts
BThrough external plugins
CThrough built-in Components exclusively
DThrough visual scripting tools
Lời giải
Trong Unity, hành vi của GameObjects được kiểm soát chủ yếu thông qua các script được gắn vào chúng. Các script này có thể được viết bằng nhiều ngôn ngữ lập trình khác nhau như C#, UnityScript, Boo, v.v. Các script có thể được sử dụng để tạo ra các hành vi phức tạp cho GameObjects, chẳng hạn như di chuyển, quay, tương tác với người dùng, v.v. Ngoài ra, các script cũng có thể được sử dụng để tạo ra các hệ thống logic phức tạp, chẳng hạn như hệ thống trò chơi, hệ thống quản lý tài nguyên, v.v. Vì vậy, các script đóng vai trò quan trọng trong việc kiểm soát hành vi của GameObjects trong Unity.
Mở trang câu hỏi này →
22What is the primary purpose of the FixedUpdate function in Unity scripts?4 lựa chọnKhó33% trả lời đúng
AExecuting game logic updates once per frame
BHandling frame updates for physics-related updates
CInitializing variables for script execution
DExecuting late updates after all other functions have been called
Lời giải
Hàm FixedUpdate trong Unity được sử dụng để cập nhật logic vật lý trong trò chơi. Nó được gọi một lần mỗi frame, nhưng không phụ thuộc vào tốc độ khung hình. Điều này giúp đảm bảo rằng các cập nhật vật lý được thực hiện một cách đều đặn và chính xác, ngay cả khi tốc độ khung hình thay đổi. Hàm FixedUpdate thường được sử dụng để cập nhật vị trí, tốc độ và quán tính của các đối tượng vật lý trong trò chơi. Nó cũng có thể được sử dụng để cập nhật các hệ thống vật lý khác, chẳng hạn như hệ thống va chạm và hệ thống lực hấp dẫn. Tóm lại, hàm FixedUpdate là một phần quan trọng của Unity và được sử dụng để tạo ra các trò chơi có hiệu ứng vật lý chân thực.
Mở trang câu hỏi này →
23When is the FixedUpdate() method called in Unity?4 lựa chọnTrung bình50% trả lời đúng
AOnce per frame
BAfter LateUpdate()
CWhen the object becomes enabled
DAt a fixed time interval
Lời giải
FixedUpdate() là một phương thức đặc biệt trong Unity, được gọi tại một khoảng thời gian cố định. Điều này có nghĩa là phương thức này sẽ được thực hiện một cách đều đặn, bất kể khung hình (frame) hiện tại đang được cập nhật hay không. FixedUpdate() thường được sử dụng để thực hiện các tác vụ cần được cập nhật tại một khoảng thời gian cố định, chẳng hạn như cập nhật vị trí của các vật thể trong một trò chơi.
Mở trang câu hỏi này →
24What is the purpose of the OnEnable() method in Unity?4 lựa chọnTrung bình67% trả lời đúng
ATo update game logic continuously after the object becomes enabled
BTo perform actions when the object becomes disabled
CTo initialize variables when the object becomes enabled
DTo perform actions when the object becomes enabled and active
Lời giải
Mục đích của phương thức OnEnable() trong Unity là để thực hiện các hành động khi đối tượng trở nên có hiệu lực và hoạt động. Phương thức này được gọi một lần khi đối tượng được bật lên và hoạt động, cho phép bạn thực hiện các hành động cần thiết như khởi tạo các biến, tải tài nguyên, hoặc thực hiện các hành động khác. Điều này giúp bạn có thể kiểm soát và quản lý các hoạt động của đối tượng một cách hiệu quả. Ngoài ra, phương thức OnEnable() cũng có thể được sử dụng để cập nhật logic trò chơi liên tục sau khi đối tượng được bật lên.
Mở trang câu hỏi này →
25Which of the following best describes events in C#?4 lựa chọnDễ75% trả lời đúng
ADelegate that enables one object to notify other objects about actions
BObjects that hold data and methods that operate on the data
CType definitions that specify the methods signature
DSpecial methods used for asynchronous programming and store data
Lời giải
Trong lập trình C#, sự kiện (events) là một khái niệm quan trọng giúp cho các đối tượng (objects) có thể thông báo cho nhau về các hành động (actions) cụ thể. Một sự kiện thường bao gồm một hoặc nhiều hành động, và các đối tượng có thể đăng ký (subscribe) để nhận thông báo khi sự kiện đó xảy ra. Điều này cho phép các đối tượng có thể tương tác và giao tiếp với nhau một cách linh hoạt và hiệu quả. Trong câu hỏi này, sự kiện được mô tả là một đại diện (delegate) cho phép một đối tượng thông báo cho các đối tượng khác về các hành động. Đây là một định nghĩa chính xác và phù hợp với khái niệm sự kiện trong lập trình C#.
Mở trang câu hỏi này →
26Which of the following statements about delegates in C# is NOT true?4 lựa chọnTrung bình50% trả lời đúng
ADelegates are essentially a reference type that holds the reference to a method.
BDelegates allow one object to call methods on another object without knowing its specific type.
CDelegates can be used to create callback mechanisms.
DDelegates cannot be invoked like a regular method.
Lời giải
Các câu hỏi về các đại diện trong C# thường liên quan đến tính chất và cách sử dụng của chúng. Trong số các lựa chọn trên, câu 'Các đại diện không thể được gọi như một phương thức thông thường' là không đúng. Các đại diện thực sự là một loại tham chiếu, chúng giữ một tham chiếu đến một phương thức. Điều này cho phép chúng được gọi như một phương thức thông thường. Ngoài ra, các đại diện cho phép một đối tượng gọi phương thức của một đối tượng khác mà không cần biết loại cụ thể của đối tượng đó. Điều này giúp tăng tính linh hoạt và khả năng mở rộng của mã. Cuối cùng, các đại diện có thể được sử dụng để tạo cơ chế gọi lại (callback mechanism). Vì vậy, câu 'Các đại diện không thể được gọi như một phương thức thông thường' không phải là một tuyên bố đúng về các đại diện trong C#.
Mở trang câu hỏi này →
AOnMouseOver
BOnMouseEnter
COnMouseExit
DOnTriggerEnter
Lời giải
Để xử lý sự kiện chuột rời khỏi đối tượng trong Unity, bạn cần sử dụng phương thức OnMouseExit trong các script của mình. Phương thức này được gọi khi chuột rời khỏi vùng diện tích của đối tượng. Điều này giúp bạn có thể thực hiện các hành động cụ thể khi chuột rời khỏi đối tượng, chẳng hạn như thay đổi màu sắc, kích hoạt hiệu ứng âm thanh, v.v. Để sử dụng OnMouseExit, bạn cần thêm một script vào đối tượng của mình và sử dụng phương thức này trong đó. Ví dụ, bạn có thể tạo một script để thay đổi màu sắc của đối tượng khi chuột rời khỏi nó.
Mở trang câu hỏi này →
28In Unity, what is the purpose of the LateUpdate method in game logic scripts?3 lựa chọnDễ100% trả lời đúng
AExecuting code after the Update method, useful for camera adjustments
BEnhancing audio playback
CSimulating keyboard input
Lời giải
Mục đích của phương thức LateUpdate trong các script logic trò chơi Unity là thực hiện các hành động sau khi phương thức Update đã được thực hiện. Điều này đặc biệt hữu ích khi cần điều chỉnh camera trong trò chơi. Khi Update được gọi, Unity sẽ cập nhật các biến và trạng thái của trò chơi, sau đó LateUpdate sẽ được gọi để thực hiện các hành động cần thiết. Điều này cho phép các nhà phát triển tạo ra các hiệu ứng camera mượt mà và chính xác hơn. Ví dụ, bạn có thể sử dụng LateUpdate để cập nhật vị trí của camera sau khi các đối tượng trong trò chơi đã được cập nhật.
Mở trang câu hỏi này →
AIt handles one-time initialization tasks.
BIt ensures consistent physics updates, independent of frame rate.
CIt triggers actions when a collider enters a trigger volume.
DIt executes code over multiple frames with pauses in between.
Lời giải
Khi tích hợp lập trình với vật lý trong Unity, hàm FixedUpdate đóng vai trò quan trọng. Nó đảm bảo cập nhật vật lý một cách nhất quán, độc lập với tốc độ khung hình. Điều này có nghĩa là vật thể trong trò chơi sẽ được cập nhật vật lý theo một chu kỳ nhất định, bất kể tốc độ khung hình của trò chơi. Điều này rất quan trọng vì nó giúp đảm bảo rằng vật thể sẽ được cập nhật vật lý một cách chính xác và nhất quán, ngay cả khi tốc độ khung hình thay đổi. Ngoài ra, hàm FixedUpdate cũng giúp giảm thiểu sự gián đoạn trong cập nhật vật lý, giúp trò chơi trở nên mượt mà và ổn định hơn.
Mở trang câu hỏi này →
AOnMouseOver
BInput.GetKeyUp
CInput.GetKey
DOnMouseEnter
Lời giải
Để xử lý chuyển động liên tục dựa trên đầu vào từ bàn phím trong Unity, chúng ta thường sử dụng hàm Input.GetKey. Hàm này cho phép kiểm tra xem phím nào đang được nhấn và thực hiện hành động tương ứng. Ví dụ, nếu bạn muốn di chuyển nhân vật theo hướng trái/phải lên/xuống dựa trên việc nhấn phím A/D hoặc W/S, bạn có thể sử dụng Input.GetKey để kiểm tra xem phím nào đang được nhấn và thực hiện chuyển động tương ứng.
Mở trang câu hỏi này →
31In Unity, what is the primary purpose of scripting mouse and keyboard input?4 lựa chọnDễ100% trả lời đúng
AAdjusting lighting settings
BHandling audio playback
CEnabling user interaction and control in the game
DSimulating physics interactions
Lời giải
Trong Unity, mục đích chính của việc lập trình nhập liệu chuột và bàn phím là cho phép người dùng tương tác và kiểm soát trong trò chơi. Điều này bao gồm việc nhận và xử lý các sự kiện nhập liệu từ người dùng, chẳng hạn như nhấn phím, di chuyển chuột, v.v. Việc lập trình nhập liệu chuột và bàn phím giúp tạo ra trải nghiệm người dùng mượt mà và thân thiện, đồng thời cho phép người dùng điều khiển nhân vật, thực hiện các hành động và tương tác với môi trường trò chơi.
Mở trang câu hỏi này →
AUsing [HideInInspector]
BMarking it as public
CUsing [NonSerialized]
DAdjusting lighting settings
Lời giải
Để làm cho một biến có thể nhìn thấy trong Inspector nhưng không được serialize bởi Unity, bạn có thể sử dụng attribute [NonSerialized]. Attribute này cho phép biến được nhìn thấy trong Inspector nhưng sẽ bị bỏ qua khi Unity serialize dữ liệu. Điều này rất hữu ích khi bạn muốn biến được sử dụng để lưu trữ dữ liệu tạm thời hoặc để sử dụng trong thời gian chạy mà không muốn nó được lưu trữ trong file dự án.
Mở trang câu hỏi này →
ATo check if a mouse button is pressed
BTo check if a keyboard key is held down
CTo get the current mouse position
DTo handle audio playback
Lời giải
Hàm Input.GetKey trong Unity được sử dụng để kiểm tra xem một phím nào đó trên bàn phím đang được giữ xuống hay không. Hàm này sẽ trả về giá trị True nếu phím được giữ xuống và False nếu không. Điều này rất hữu ích trong việc tạo ra các trò chơi hoặc ứng dụng cần kiểm tra trạng thái của các phím trên bàn phím. Ví dụ, bạn có thể sử dụng hàm này để tạo ra một nhân vật di chuyển khi người chơi giữ phím di chuyển xuống. Ngoài ra, bạn cũng có thể sử dụng hàm này để tạo ra các hiệu ứng đặc biệt khi người chơi nhấn vào các phím khác nhau.
Mở trang câu hỏi này →
ACreating 3D models
BManaging scenes
CWriting scripts to control game behavior
DDesigning user interfaces
Lời giải
C# trong bối cảnh phát triển Unity chủ yếu được sử dụng để viết các script để kiểm soát hành vi của trò chơi. Điều này bao gồm việc tạo ra các logic, xử lý sự kiện và tương tác giữa các đối tượng trong trò chơi. C# cung cấp một môi trường lập trình mạnh mẽ và linh hoạt, cho phép các nhà phát triển tạo ra các trò chơi phức tạp và đa dạng. Việc sử dụng C# trong Unity cũng giúp tăng tốc độ phát triển và giảm thiểu thời gian debug, nhờ vào các tính năng như mã hóa và kiểm tra lỗi.
Mở trang câu hỏi này →
AHides the GameObject in the Scene view
BAdjusts lighting settings
CPrevents a serialized field from being displayed in the Inspector
DSimulates physics interactions
Lời giải
Trong Unity, attribute [HideInInspector] được sử dụng để ẩn một trường được serial hóa khỏi cửa sổ Inspector. Điều này có nghĩa là trường đó sẽ không được hiển thị trong cửa sổ Inspector, mặc dù nó vẫn có thể được truy cập và sử dụng trong mã. Điều này thường được sử dụng để ẩn các trường không quan trọng hoặc không cần thiết khỏi người dùng, giúp giảm thiểu sự phức tạp và cải thiện trải nghiệm người dùng. Ví dụ, bạn có thể sử dụng [HideInInspector] để ẩn một trường được sử dụng để lưu trữ một giá trị tạm thời hoặc một giá trị không quan trọng.
Mở trang câu hỏi này →
AAdjusting lighting settings
BUsing a Collider component
CBy accessing Input.mousePosition or Input.GetTouch
DSimulating physics interactions
Lời giải
Để xác định vị trí của một chạm hoặc nhấp chuột trong Unity, bạn có thể sử dụng các phương thức sau. Đầu tiên, bạn có thể sử dụng Input.mousePosition để lấy vị trí của chuột. Phương thức này sẽ trả về một Vector2 đại diện cho vị trí của chuột trên màn hình. Ngoài ra, bạn cũng có thể sử dụng Input.GetTouch để lấy vị trí của một chạm trên màn hình. Phương thức này sẽ trả về một Touch đối tượng, từ đó bạn có thể lấy vị trí của chạm bằng cách sử dụng Touch.position. Để sử dụng các phương thức này, bạn cần đảm bảo rằng bạn đã bật tính năng Input trong Unity Editor.
Mở trang câu hỏi này →
37What is the primary difference between Update() and FixedUpdate() in Unity?4 lựa chọnDễ100% trả lời đúng
AUpdate() runs every frame, while FixedUpdate() runs at a fixed time step.
BUpdate() is used for physics calculations, while FixedUpdate() is not.
CFixedUpdate() is called only when physics objects collide.
DUpdate() stops running when the game is paused, while FixedUpdate() doesn't.
Lời giải
Câu hỏi này yêu cầu bạn hiểu sự khác biệt giữa hai hàm Update() và FixedUpdate() trong Unity. Hàm Update() chạy mỗi khung hình, trong khi FixedUpdate() chạy theo bước thời gian cố định. Điều này có nghĩa là Update() sẽ chạy nhanh hơn khi khung hình chạy nhanh hơn, trong khi FixedUpdate() sẽ chạy đều đặn bất kể khung hình chạy nhanh hay chậm. Điều này rất quan trọng trong việc đảm bảo tính ổn định và chính xác của các tính toán vật lý trong trò chơi. Ví dụ, nếu bạn sử dụng Update() để cập nhật vị trí của một vật thể, nó có thể chạy nhanh hơn khi khung hình chạy nhanh hơn, dẫn đến vị trí không chính xác. Trong khi đó, nếu bạn sử dụng FixedUpdate(), vị trí của vật thể sẽ được cập nhật đều đặn và chính xác.
Mở trang câu hỏi này →
AIt reduces code complexity by centralizing all object references.
BIt allows for easier testing and reduces coupling between components.
CIt increases runtime performance by removing dependencies.
DIt simplifies debugging by throwing runtime errors when dependencies are missing.
Lời giải
Tập trung vào việc sử dụng dependency injection trong dự án Unity thay vì sử dụng tham chiếu trực tiếp đến đối tượng giúp giảm độ phức tạp của mã nguồn. Điều này được thực hiện bằng cách tập trung tất cả các tham chiếu đối tượng vào một vị trí duy nhất, giúp dễ dàng quản lý và bảo trì mã nguồn. Ngoài ra, sử dụng dependency injection còn giúp dễ dàng thử nghiệm và giảm độ kết nối giữa các thành phần. Khi sử dụng dependency injection, bạn có thể dễ dàng thay thế các đối tượng phụ thuộc bằng các đối tượng giả lập trong quá trình thử nghiệm, giúp tăng hiệu suất và giảm thời gian thử nghiệm. Điều này giúp giảm độ kết nối giữa các thành phần và tăng tính linh hoạt của mã nguồn.
Mở trang câu hỏi này →
39What is the primary purpose of delegates in C# programming?4 lựa chọnKhó17% trả lời đúng
ATo encapsulate data within classes
BTo define abstract classes and interfaces
CTo enable type-safe function pointers
DTo handle exceptions and errors
Lời giải
Trong lập trình C#, đại diện (delegate) là một khái niệm quan trọng giúp chúng ta có thể ánh xạ một hàm (method) vào một biến. Mục đích chính của đại diện là để cho phép chúng ta tạo ra các hàm trỏ (function pointers) an toàn về kiểu dữ liệu. Điều này cho phép chúng ta truyền các hàm vào các biến và tham số như các đối tượng khác. Đại diện cũng giúp chúng ta có thể xử lý các hàm phức tạp và tạo ra các giao diện lập trình (API) dễ dàng hơn. Ngoài ra, đại diện còn giúp chúng ta có thể xử lý các sự kiện và các luồng dữ liệu trong ứng dụng.
Mở trang câu hỏi này →
AThey execute synchronously and block the program until completion
BThey allow for non-blocking execution and can be paused and resumed
CThey are used only for mathematical calculations
DThey require manual memory management
Lời giải
Coroutines là một tính năng quan trọng trong lập trình máy tính. So với các hàm hoặc phương thức thông thường, coroutines cho phép thực hiện không chặn và có thể tạm dừng và tiếp tục. Điều này có nghĩa là một coroutine có thể thực hiện một số công việc, sau đó tạm dừng và chuyển quyền cho một coroutine khác thực hiện công việc khác mà không cần chờ đợi công việc trước đó hoàn thành. Điều này giúp cải thiện hiệu suất và giảm thiểu thời gian chờ đợi trong các ứng dụng đa nhiệm. Ngoài ra, coroutines cũng giúp giảm thiểu việc sử dụng tài nguyên hệ thống và tăng cường khả năng mở rộng của ứng dụng.
Mở trang câu hỏi này →