Posts

Showing posts from September, 2019

Object Pooling - Các bước cần làm

Image
B1 . Tạo file ObjectPooler có nhiêm vụ quản lý tất cả các object pool bạn muốn tạo trong project. Dưới đây là đoạn code của file script : using UnityEngine; using System.Collections; using System.Collections.Generic; [System.Serializable] public class ObjectPoolItem {     public GameObject objectToPool;     public int amountToPool;     public bool shouldExpand; } public class ObjectPooler : MonoBehaviour {     public static ObjectPooler SharedInstance;     public List<ObjectPoolItem> itemsToPool;     public List<GameObject> pooledObjects;     void Awake()     {         SharedInstance = this;     }     // Use this for initialization     void Start()     {         pooledObjects = new List<GameObject>();   ...

2D Lights trong Unity

Image
Hôm nay tôi sẽ hướng dẫn các bạn làm thế nào để tạo ánh sáng trong một game 2D.\ link: https://www.youtube.com/watch?v=nkgGyO9VG54 Để tạo ra nguốn sáng 2D chúng ta sẽ sử dụng một thư viện được cung cấp sẵn bởi Unity.  Sau khi download thư viện về, chúng ta sẽ cần cài đặt trong Unity. Làm theo các bước sau để tạo 1 file Pipeline Asset và đặt tên là LWRP Asset. Sau đó kéo file LWRP vào trong ProjectSettings > Graphics Tạo một file 2D Renderer trong file Asset. Click double vào trong file LWRP, chọn sang custom. Sau đó kéo file 2D Renderer vào tạo vào trong Data: Bây giờ màn hình sẽ cần một nguồn sáng. Những sprite được sử dụng sau khi thiết lập sẽ chỉ có một màu đen, những sprite sử dụng trước khi thiết lập vẫn có màu sắc của nó, chính vì vậy chúng ta sẽ phải update lại màn hình : Sau khi update tất cả sprite sẽ chuyển sang 1 màu đen giống như thế này: Bây giờ chúng ta sẽ tạo các nguồn sáng trên màn hình: Có 5...

Object Pooling - Tại sao phải sử dụng

Image
Design pattern object pooling là một trong những pattern phổ biến nhất trong ngành công nghiệp game. Đó là một design pattern bạn phải biết nếu như bạn muốn trở thành một lập trình game. What is the object pooling? Object pooling là một design pattern được dùng để tái sử dụng object trong game của bạn. Recycling có ý nghĩ gì ? Chúng ta hãy lấy ví dụ cơ bản về bullet. Chúng ta có một tình huống đơn giản, khi mà bạn đang bắn những viên đạn. Mỗi lần bạn nhấn nút bắn, một viên đạn sẽ được tạo ra. Nếu trong suốt trận chiến của bạn, bạn nhấn 1000 lần thì 1000 viên đạn sẽ được tao ra. Nếu bạn suy nghĩ kỹ hơn về vấn đề này, bạn sẽ thấy không hiệu quả vì mỗi lần bắn, một đối tượng sẽ được chỉ định một vùng nhớ cái sẽ bị huỷ đi sau đó. Vậy có cách nào khác tốt hơn không ? Sử dụng Object pooding Đây là cách mà nó làm việc: 1. Tạo một vùng chứa (pool) những viên đạn ở nơi nào đó trong game của bạn 2. Mỗi lần chúng ta bắn, chúng ta sẽ lấy một viên đạn từ vùng chứa đó 3. Bắn viên đạn vử...