| کانال توسعهدهندگان بازی |
🎮 حرکت نرم، بدون زبالهٔ اضافه
اگر کاراکتر در هر فریم کمی مکث میکند، فقط سراغ فیزیک نرو؛ ساختن مداوم آبجکت هم میتواند باعث فعالیت بیشتر Garbage Collector شود. در یونیتی، حرکت ساده را میشود بدون تخصیص آرایه یا لیست تازه در هر فریم نوشت.
🛠 این نمونه جهت ورودی را میگیرد و حرکت را با زمان فریم هماهنگ میکند:
using UnityEngine;
public class SimpleMover : MonoBehaviour
{
[SerializeField] float speed = 5f;
void Update()
{
float x = Input.GetAxisRaw("Horizontal");
float z = Input.GetAxisRaw("Vertical");
Vector3 direction = new Vector3(x, 0f, z).normalized;
transform.position += direction * speed * Time.deltaTime;
}
}
💡 اینجا Vector3 یک ساختار مقداری است؛ ساختنش بهتنهایی تخصیص حافظه روی heap ایجاد نمیکند. نرمالسازی هم نمیگذارد حرکت مورب از حرکت مستقیم سریعتر شود. اگر از Rigidbody استفاده میکنی، جابهجایی فیزیکی را با روش مناسب فیزیک انجام بده، نه با تغییر مستقیم transform.position.
این الگو را روی حرکت ساده امتحان کن و هنگام بررسی افت فریم، بخش GC Alloc را در Profiler هم ببین. 🔍
📚 راهنمای رسمی یونیتی دربارهٔ تخصیص حافظه
🔖 #GameDev #بازیسازی #Unity #GC #Vector3 #GameDev
👤 Developix
💎 Channel: @DevelopixGame
4 · 155 ·