و از همه بد تر وقتی دوباره از level 1 به menu برگردید این حجم باز هم افزایش پیدا میکنه!
با وجود اینکه یک بار دیتا های تکسچر ، مدل و Asset bundle در Memory ذخیره شدن , ولی ازشون استفاده نمیکنه و دوباره دیتا ها رو در RAM تولید میکنه! و اگر این حرکت چند دور تکرار بشه حافظه Memory RAM پر میشه و شاهد افت فریم خواهید بود!
با وجود اینکه یک بار دیتا های تکسچر ، مدل و Asset bundle در Memory ذخیره شدن , ولی ازشون استفاده نمیکنه و دوباره دیتا ها رو در RAM تولید میکنه! و اگر این حرکت چند دور تکرار بشه حافظه Memory RAM پر میشه و شاهد افت فریم خواهید بود!
❤1
پس در یک نتیجه کلی:
وقتی SceneManager.LoadScene() رو صدا میزنی، Unity به طور پیشفرض همه GameObjectها رو نابود میکنه، اما:
❌ تکسچرها و مدلها تو مموری میمونن
❌ Asset Bundleها آزاد نمیشن
❌ منابعی که بهشون reference دارن باقی میمونن
❌ Garbage Collection به طور خودکار کار نمیکنه
وقتی SceneManager.LoadScene() رو صدا میزنی، Unity به طور پیشفرض همه GameObjectها رو نابود میکنه، اما:
❌ تکسچرها و مدلها تو مموری میمونن
❌ Asset Bundleها آزاد نمیشن
❌ منابعی که بهشون reference دارن باقی میمونن
❌ Garbage Collection به طور خودکار کار نمیکنه
کد اصلی:
using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections;
public class SquirrelySceneManager : MonoBehaviour
{
// به جای LoadScene معمولی، از این استفاده کن
public void LoadSceneWithMemoryCleanup(string sceneName)
{
StartCoroutine(LoadSceneAndCleanup(sceneName));
}
IEnumerator LoadSceneAndCleanup(string sceneName)
{
// 1. Load Scene جدید
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(sceneName);
// 2. نگهداری Scene قبلی رو غیرفعال کن (برای جلوگیری از Drop فریم)
asyncLoad.allowSceneActivation = false;
// 3. منتظر بمون تا Loading تموم شه
while (!asyncLoad.isDone)
{
// فریم ریت رو نگه دار - اینجا میتونی Loading Screen نشون بدی
yield return null;
}
// 4. حالا Scene جدید رو فعال کن
asyncLoad.allowSceneActivation = true;
// 5. بعد از Load، Cleanup رو شروع کن
yield return new WaitForSeconds(0.1f); // کمی صبر کن
// 6. مهمترین قسمت - آزاد کردن منابع استفادهنشده
Resources.UnloadUnusedAssets();
// 7. فراخوانی اجباری Garbage Collection
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.GC.Collect();
Debug.Log("✅ Scene loaded & memory cleaned!");
}
// برای آنلود کردن دستی Assetهای بزرگ
public void UnloadBigAssets()
{
// مثال: آنلود تکسچرهای بزرگ که دیگه نیاز نداری
var bigTextures = Resources.FindObjectsOfTypeAll<Texture2D>();
foreach (var tex in bigTextures)
{
if (tex.name.Contains("Squirrely_Large"))
{
Resources.UnloadAsset(tex);
}
}
}
}
نگه داری فریم ریت:
public class SquirrelyLoadingScreen : MonoBehaviour
{
public Image loadingBar;
public Text loadingText;
public string[] squirrelFacts = {
"سنجابها میتونن 15 ساعت بخوابن...",
"دندونای سنجاب همیشه در حال رشدن..."
};
void Update()
{
// نمایش فکتهای ترسناک سنجابی
loadingText.text = squirrelFacts[Random.Range(0, squirrelFacts.Length)];
}
}
دیباگ مموری:
void Update()
{
if (Input.GetKeyDown(KeyCode.M))
{
// نمایش مموری فعلی
long memory = System.GC.GetTotalMemory(false) / 1024 / 1024;
Debug.Log($"Memory Usage: {memory} MB");
// نمایش تعداد Textureهای لود شده
var textures = Resources.FindObjectsOfTypeAll<Texture2D>();
Debug.Log($"Loaded Textures: {textures.Length}");
}
}
این سه کد تو تست اولیه هست تا بتونم این مشکل رو تو بحث Memory RAM حل کنم!
❤1🔥1
🚨اینترنت ها هم داره ضعیف میشه ناجور 🚨
🛜 حالا باید دوباره بگردیم دنبال فیلترشکن جوابگو📉
🛜 حالا باید دوباره بگردیم دنبال فیلترشکن جوابگو📉
امروز اومدم کارکتر جدید بازی رو از روی مدل پروتوتایپش که خیلی زیادی سنگینه تکمیل کنم! 50 درصد کار رفته! بنظرتون تا امشب تکمیل میشه؟
Shield Aryan
https://youtube.com/shorts/GIpe8tGAhN8?si=z5TXuaAUcsurZ111
من بعد دیدن این شورتی☺️
Forwarded from بازیسازان مستقل ایران | IGD (Shahab Subziz)
بیانیه بازیسازان مستقل ایران
به نام خدا
بازیسازان محترم، درود!
در این روزهای دشوار که بسیاری از جوانان همنسل ما با چالشهای اقتصادی و فشارهای زندگی مواجه هستند، ما همواره با دلهای خود در کنار مردم ایران هستیم. به عنوان بازیسازان مستقل و علاقهمندان به حوزه بازیهای دیجیتال، بر اهمیت همبستگی و کار تیمی تأکید میکنیم. همانطور که در دشوارترین مراحل بازیها، اتحاد تنها راه پیروزی است.
از تمام اعضای محترم کانال، به ویژه جوانان خلاق و پرانرژی نسل Z، دعوت میکنیم تا با روحیه اتحاد و همدلی که در دنیای بازیها نشان میدهیم، در کنار یکدیگر به عنوان یک خانواده بمانیم و به فکر هموطنان و کشور عزیزمان ایران باشیم.
امیدواریم با حفظ آرامش، همبستگی و حمایت متقابل، به زودی شاهد پیشرفت شما و کشور عزیزمان و روزهای روشنتری برای جامعه خود باشیم. بیایید در شرایط مساوی همانند دیگر کشورهای جهان، در عرصه تولید بازیهای ویدئویی به فعالیت سالم بپردازیم.
با آرزوی پیروزی حق بر باطل
بازیسازان مستقل ایران
به نام خدا
بازیسازان محترم، درود!
در این روزهای دشوار که بسیاری از جوانان همنسل ما با چالشهای اقتصادی و فشارهای زندگی مواجه هستند، ما همواره با دلهای خود در کنار مردم ایران هستیم. به عنوان بازیسازان مستقل و علاقهمندان به حوزه بازیهای دیجیتال، بر اهمیت همبستگی و کار تیمی تأکید میکنیم. همانطور که در دشوارترین مراحل بازیها، اتحاد تنها راه پیروزی است.
از تمام اعضای محترم کانال، به ویژه جوانان خلاق و پرانرژی نسل Z، دعوت میکنیم تا با روحیه اتحاد و همدلی که در دنیای بازیها نشان میدهیم، در کنار یکدیگر به عنوان یک خانواده بمانیم و به فکر هموطنان و کشور عزیزمان ایران باشیم.
امیدواریم با حفظ آرامش، همبستگی و حمایت متقابل، به زودی شاهد پیشرفت شما و کشور عزیزمان و روزهای روشنتری برای جامعه خود باشیم. بیایید در شرایط مساوی همانند دیگر کشورهای جهان، در عرصه تولید بازیهای ویدئویی به فعالیت سالم بپردازیم.
با آرزوی پیروزی حق بر باطل
بازیسازان مستقل ایران