Quản lý Level of Detail (LOD)
C# Code
// Hướng dẫn sử dụng:
// 1. Gắn script này vào một GameObject rỗng trong Scene, ví dụ [LODManager].
// 2. Kéo Player (hoặc camera chính) vào ô 'target'.
// 3. Trong Scene, tìm tất cả các GameObject có component 'LOD Group' và kéo chúng vào danh sách 'lodGroups'.
using UnityEngine;
using System.Collections.Generic;
public class LODManager : MonoBehaviour
{
public Transform target; // Thường là Player hoặc Camera
public List<LODGroup> lodGroups; // Danh sách các LOD Group cần quản lý
public float checkInterval = 0.5f; // Thời gian giữa mỗi lần kiểm tra khoảng cách
private float timer;
void Start()
{
if (target == null)
{
target = Camera.main.transform;
Debug.LogWarning("LODManager: Target not set, defaulting to Main Camera.");
}
}
void Update()
{
timer += Time.deltaTime;
if (timer >= checkInterval)
{
timer = 0f;
UpdateAllLODs();
}
}
void UpdateAllLODs()
{
if (target == null || lodGroups == null) return;
foreach (LODGroup group in lodGroups)
{
if (group != null)
{
// ForceRecalculateBounds() cập nhật lại vị trí và kích thước của group
// Hữu ích nếu các đối tượng trong group có thể di chuyển
group.ForceRecalculateBounds();
// Unity sẽ tự động chọn LOD phù hợp dựa trên khoảng cách từ 'target'
}
}
}
}Một script đơn giản để quản lý các nhóm LOD (Level of Detail) trong scene, giúp tự động giảm chất lượng model khi ở xa để tối ưu hiệu năng, đặc biệt hữu ích cho các màn chơi rộng lớn.