key – Jake Tee https://jakesto.com Game Dev Blog Sun, 18 Sep 2022 12:55:30 +0000 en-US hourly 1 https://wordpress.org/?v=6.8.1 https://jakesto.com/wp-content/uploads/2022/07/cropped-pngwing.com_-32x32.png key – Jake Tee https://jakesto.com 32 32 194548219 101 Tips – Mở level kèm tham số https://jakesto.com/101-tips-mo-level-kem-tham-so/?utm_source=rss&utm_medium=rss&utm_campaign=101-tips-mo-level-kem-tham-so Sun, 18 Sep 2022 12:55:28 +0000 https://jakesto.com/?p=945 Có nhiều mục đích khi mở level kèm tham số. Ví dụ bạn cần kiểm tra xem level trước đó của người chơi là gì, hoặc chỉ đơn giản là muốn truyền một tham số để khi vừa qua level mới có thể sử dụng ngay.
Có nhiều cách để có thể truyền tham số khi mở một level mới, ví dụ như lưu vào GameInstance, rồi sau khi level đã load xong, ta lấy ra sử dụng. Nhưng thứ thế ta lại phải tạo một hay nhiều biến mới không cần thiết.

Một cách đơn giản đó là ta truyền tham số kèm với khi mở một level mới bằng hàm OpenLevel phổ biến

Nếu bạn không thấy mục Absolute và Options ở dưới, chỉ việc click vào mũi tên để xổ ra.

Vùng Options cho phép ta truyền vào một hay nhiều tham số, được ngăn cách nhau bởi dấu “?”:

?PreviousLevel=MyLevel1?MyScore=20

Ở ví dụ trên, ta sẽ truyền qua Level mới giá trị PreviousLevel (level trước đó) là MyLevel1, MyScore là 20.

Tiếp đến, để sử dụng những tham số vừa truyền, ta vào class GameMode. Nếu bạn chưa biết GameMode là gì, có thể tham khảo lại bài viết này: https://jakesto.com/index.php/2020/03/01/unreal-engine-4-framework-gamemode/

Chuột phải vào Event Graph, và tìm cụm từ Options String, đó chính là đoạn Options mà bạn truyền vào ở trên. Tiếp đó ta chỉ cần Parse đoạn string đó với key tương ứng:

Như vậy đã xong, với cách này, bạn đã có thể thoải mái đem giá trị từ level này sang level khác mà không cần lo việc tạo quá nhiều biến.

]]>
945
101 Tips – Thay đổi biến trong sequencer https://jakesto.com/101-tips-thay-doi-bien-trong-sequencer/?utm_source=rss&utm_medium=rss&utm_campaign=101-tips-thay-doi-bien-trong-sequencer Tue, 15 Jun 2021 17:19:14 +0000 https://jakesto.com/?p=788 Chúng ta có một actor, với một biến là số tiền (Money) trong tài khoản (dạng integer) như sau

và được set Instance Editable để có thể sửa đổi giá trị trên các instance đã được đặt trong world.

Giả sử ta muốn rằng, trong Sequencer, ta muốn thay đổi giá trị đó theo các khung thời gian cụ thể. Thông thường cách nhanh nhất đó là ta tìm kiếm các kí hiệu + để thêm key vào sequencer:

Tuy nhiên, trong trường hợp của Money, ta không thể thay đổi được.

Cách để có thể làm xuất hiện dấu + đó là:

Blueprints

Tạo một hàm với tên theo cú pháp “Set” + tên của biến, trong trường hợp này là SetMoney, nhận đầu vào như trên

Như vậy ta đã có thể thêm key vào Sequencer được rồi

C++

Với C++, trong thông số trong UPROPERTY, ta chỉ cần thêm tham biến Interp

UPROPERTY(EditAnywhere, BlueprintReadWrite, Interp)
int32 Money

Như vậy đã xong!

]]>
788