بسم الله الرحمن الرحیم
اول از همه اشاره کنم که Object Pooling مختص به یونیتی نیست و صرفا یک روش برای بهینه کردن بازی است .
عکس پایین را در نظر بگیرید و فرض کنید یک سفینه دارید که با هر بار کلیک کردن تعدادی گلوله شلیک می کند . روش کد نویسی عادی اینطور است که شما با هر بار کلیک در نوک سفینه یک گلوله را Instantiate می کنید که حتما می دانید که Instantiate عملیاتی است که باعث افت رندمان بازی می شود زیرا هر بار باید گلوله را در رم (Heap) جاگذاری کند و بعد از نابود شدن گلوله garbage collector باید وارد کار بشود و آن قسمت از رم را پاکسازی کند . حالا فرض کنید که عملیات بارها و بارها باید انجام شود.

اگر بخواهیم همین مکانیزیم شلیک را به روش Object Pooling پیاده سازی کنیم باید در همان ابتدای بازی یک لیست درست کنیم و مقداری گلوله را (مثلا 30 عدد) را Instantiate کنیم و بلافاصله انها را غیر فعال کنیم که در بازی قابل مشاهده نباشند. حالا هر وقت پلیر دکمه شلیک را زد بجای Instantiate کردن یکی از گلوله هایی که در ابتدای بازی ساختیم را به نوک سفینه انتقال می دهیم و سپس فعال می کنیم.
حالا هر وقت آن گلوله به چیزی بر خورد کرد یا از صفحه خارج شد بجای نابود کردن گلوله آن را دوباره غیر فعال می کنیم و هروقت نیاز شد دوباره همان را به نوک سفینه انتقال می دهیم و دوباره فعال اش می کنیم.
با این روش دیگر نیاز نیست هر بار عملیات سنگین Instantiate را برای ابجکتی که قرار است به زودی نابود شود انجام دهیم و تعداد زباله هایی که این کد می سازد به شدت کمتر است .
https://learn.unity.com/tutorial/introduction-to-object-pooling#
خوشحال میشم نظرتون رو راجب این تکنیک بخونم.