برو به محتوای اصلی
سوال
۳ سال پیش پرسیده شده

سلام دوستان، من به یک مشکل برخوردم و واقعا نمیدونم چجوری میشه حلش کرد!!! بازی من در یونیتی هست با URP هم رندر گرفته میشه، وقتی بازی اجرا میشه فریم در حدود 90 هست و بعد از چند دقیقه به یکباره میشه 20 تا 30، و بعد از چند ثانیه باز همون 90 میشه و باز 25 تا 30 و این داستان ادامه دارد ... فریم ریت رو روی 60 هم فیکس میکنم باز مشکل حل نمیشه، این مشکل هم در ادیتور هست و هم در موبایل، کلافم کرده، حتی در یونیتی پروژه URP از صفر ایجاد میکنم هم همین مشکل وجود داره، اگر راهکاری به ذهنتون میرسه ممنون میشم راهنماییم کنید

من کجام؟ اینجا کجاست؟

در جامعه بازی‌سازان ایران می‌تونید در مورد هر موضوعی سوال کنید، به سوالای بقیه جواب بدید و تجربه‌تون رو به اشتراک بگذارید!

اگه توی پروژهٔ خالی هم همچین مشکلی پیش میاد، ممکنه مشکل از نسخهٔ‌ یونیتی و نسخهٔ‌ URP باشه. پیشنهاد میکنم یه بار آپدیت کنین به آخرین نسخهٔ‌ ادیتور به همراه آخرین نسخهٔ URP‌ توی PackageManager.

اگه مشکل برطرف نشد توی ادیتور از profiler‌ استفاده کنین و ببینین کجا داره مصرف زیادی توی منابع رخ میده.

صادق برومند
برنامه نویس در Ubisoft Blue Byte

ممکنه مشکلتون اصلا ربطی به URP نداشته باشه
از Profiler استفاده کنید و ببینید که اون موقعی frame rate کم میشه چه سیستم‌هایی بیشترین زمان CPU یا GPU رو دارن.
یکی از احتمال‌هایی که من میدم اینه که مشکل (GC)Garbage Collector هستش.
اگر دیدید که GC مشکل اصلی بود، باید برید ببینید کدوم سیستم‌هاتون Garbage تولید می‌کنن و سعی کنید که آبجکت‌هایی که توی اون سیستم‌ها هستن رو Cache کنید.
این مقاله می‌تونه بهتون کمک کنه:
https://learn.unity.com/tutorial/fixing-performance-problems#5c7f8528edbc2a002053b595۷۸

 

مهدی رحمتی
هم‌بنیان‌گذار فضای اشتراکی همبود

سلام. اگر دوربین ثابت هم باشه همین مشکل پس از چند ثانیه پیش میاد؟

احتمالات تقریبا مختلفی هست. مثلا ممکنه به خاطر افکت depth of field باشه که وقتی دوربین رو می‌چرخونید realtime داره پردازش میشه. این احتمالش بنظرم هست یا افکت‌های دیگه که پردازش اونها ممکنه برای سیستم سنگین باشه.

از طرفی شما قبل از ورود به Scene از لودینگ استفاده کنین و تست کنین.

یا مورد دیگه اسکریپت‌ها هستن. مثل Update یا FixedUpdate.

یا مثلا پلاگین‌های استفاده شده.

و...

یک Debugger داشته باشید و بازی رو باهاش کنترل کنین و Log بگیرین.

سوالات مشابه