بررسی کامل قابلیت‌ها و تغییرات نسخه جدید Unity

Unity 6.5 چیست؟ بررسی کامل قابلیت‌ها و تغییرات نسخه جدید Unity

Unity 6.5؛ نگاهی کامل به قابلیت‌ها و تغییرات نسخه 6000.5

Unity 6.5 با مجموعه‌ای از قابلیت‌های جدید، بهبودهای عملکردی، تغییرات معماری و به‌روزرسانی‌های مهم در بخش‌هایی مانند گرافیک، برنامه‌نویسی، Android، UI، فیزیک، Entities و XR منتشر شده است. این نسخه علاوه بر اضافه‌کردن امکانات جدید، تعدادی API قدیمی را حذف یا منسوخ می‌کند؛ بنابراین هنگام ارتقای پروژه‌های Unity 6.4 باید تغییرات سازگاری را نیز در نظر گرفت.

دانلود یونیتی نسخه 6.5

مهم‌ترین تغییرات Unity 6.5

نسخه Unity 6.5 یا 6000.5 طیف گسترده‌ای از بخش‌های موتور را به‌روزرسانی می‌کند. در ادامه مهم‌ترین تغییرات مستندشده در نسخه جدید را به تفکیک بررسی می‌کنیم.

بهبودهای بخش 2D

نور و سایه‌های دوبعدی سفارشی

توسعه‌دهندگان اکنون می‌توانند با استفاده از APIهای Light2DProvider و ShadowShape2DProvider انواع سفارشی نور و سایه دوبعدی را ایجاد کنند. این قابلیت برای ساخت شکل‌های نوری و سایه‌های اختصاصی کاربرد دارد.

تحلیل Spriteها در Profiler

یک ماژول جدید 2D به Unity Profiler اضافه شده است که تعداد Spriteهای رندرشده و Sprite Atlasهای مورد استفاده در یک فریم را نمایش می‌دهد و تحلیل عملکرد پروژه‌های دوبعدی را ساده‌تر می‌کند.

BlendShape برای Sprite

APIهای جدید BlendShape زیرساخت لازم برای تغییر شکل Sprite با روش‌های مبتنی بر FFD را فراهم می‌کنند و امکان ساخت ابزارهای انیمیشن دوبعدی فراتر از روش‌های سنتی مبتنی بر Bone را به وجود می‌آورند.

Physics Core 2D

API قدیمی LowLevelPhysics2D به PhysicsCore2D تغییر نام داده و namespace آن نیز به Unity.U2D.Physics منتقل شده است. این سیستم اکنون امکان ایجاد جهان‌های فیزیکی دوبعدی در زوایای مختلف فضای سه‌بعدی، استفاده از صفحات Transform سفارشی، کنترل Contact Filter و Ignore Filter و مدیریت بهتر حافظه را فراهم می‌کند. تعداد جهان‌های فیزیکی مستقل نیز از 128 به 1024 افزایش یافته است.

انیمیشن

بازطراحی Animation Window

پنجره Animation طراحی جدیدی دریافت کرده است. منوی Animation Clip، کنترل‌های پخش و انتخاب حالت Dopesheet یا Curves اکنون در بالای نمای انیمیشن قرار دارند و ابزار Ripple نیز دسترسی مستقیم‌تری برای جابه‌جایی یا تغییر مقیاس گروهی Keyframeها فراهم می‌کند.

Require Receiver و AnimationEventInfo

گزینه Require Receiver در Inspector برای Animation Event اضافه شده است تا مشخص کند در صورت نبود متد مقصد، خطا گزارش شود یا نادیده گرفته شود. همچنین AnimationEventInfo به‌عنوان یک ساختار Stack-Allocated و بدون تخصیص حافظه معرفی شده است که سربار Garbage Collection مربوط به Animation Eventها را کاهش می‌دهد.

Asset و Media

  • تنظیم Read/Write برای Textureهایی که CPU به آن‌ها نیاز دارد باید پیش از Build فعال شود.
  • کانال‌های Texture در Texture Import Settings به‌صورت پیش‌فرض به شکل Grayscale نمایش داده می‌شوند.
  • TypeTree مربوط به AssetBundleها در Addressables می‌تواند در فایل جداگانه قرار بگیرد تا اندازه Build کاهش یابد.
  • رفتار Unity Accelerator از نظر Determinism و قابلیت اطمینان بهبود یافته است.
  • Audio Clipهای Import شده اکنون می‌توانند به‌عنوان Generator در Scriptable Audio Pipeline استفاده شوند.

Editor و Workflow

در Unity 6.5 فایل لاگ Editor به‌صورت پیش‌فرض در پوشه خود پروژه و در مسیر ProjectName/Logs/Editor.log ذخیره می‌شود. همچنین امکان ساخت پوشه از روی آیتم‌های انتخاب‌شده در Project Window، ساخت Build Profile با API، توسعه‌پذیری Hierarchy Window و پشتیبانی از Notarization رسمی Editor در macOS اضافه شده است.

برای Linux Desktop و Embedded Linux نیز گزینه IL2CPP LTO Mode با حالت‌های Full و Thin اضافه شده است؛ Full بهینه‌سازی لینک بیشتری انجام می‌دهد اما Build طولانی‌تری دارد، در حالی که Thin زمان Build کوتاه‌تری ارائه می‌کند.

Entities و ECS

Hierarchy Window جدید می‌تواند GameObjectها، Entity Worldها و Subsceneها را همزمان نمایش دهد. بخشی از اطلاعات ECS که قبلاً در Inspector دیده می‌شد به پنجره Systems منتقل شده است. همچنین پنجره‌های Components و Archetype حذف شده‌اند و اطلاعات Archetype در Memory Module مربوط به Entities Profiler قابل مشاهده است. Entities Journaling نیز در این نسخه Deprecated شده است.

گرافیک و Rendering

نکته مهم برای ارتقای پروژه: Built-In Render Pipeline و Dynamic Batching در Unity 6.5 منسوخ شده‌اند. Built-In همچنان تا چرخه کامل Unity 6.7 LTS پشتیبانی می‌شود، اما برای پروژه‌های جدید باید مسیر مهاجرت به Render Pipelineهای مدرن را جدی گرفت.

On-Tile Post-Processing

Post-Processing روی Tile برای همه پلتفرم‌ها اضافه شده است. افکت‌هایی مانند HDR، Tone Mapping، Color Grading و Vignette می‌توانند مستقیماً روی Tile پردازنده گرافیکی اجرا شوند و نیاز به Readbackهای پرهزینه به حافظه سیستم را کاهش دهند. نتیجه می‌تواند کاهش مصرف Bandwidth، مصرف باتری و Thermal Throttling باشد.

Tile-Only Mode

گزینه Tile-Only Mode در URP Renderer تنظیمات Camera، Renderer و URP Asset را بررسی می‌کند و مواردی را که باعث از بین رفتن مزایای Tile Rendering می‌شوند هشدار داده یا غیرفعال می‌کند.

Shader Graph

Shader Graph قابلیت‌های جدیدی مانند HLSL Function Reflection برای تولید Nodeهای سفارشی، Nodeهای Expression و Switch، ورودی‌های منعطف‌تر Subgraph، ابزارهای بهتر جست‌وجو و فیلتر Templateها، تنظیمات جدید Keyword و امکان HDR Decoding برای Texture Propertyها دریافت کرده است.

در Visual Effect Graph نیز ابزارهای جست‌وجو و فیلتر Templateها بهبود یافته و API جدید VisualEffectAsset.PrewarmComputeShaders برای آماده‌سازی Compute Shaderها معرفی شده است.

Input System و Navigation

Unity 6.5 پشتیبانی IME را برای Linux Desktop و Embedded Linux از طریق IBus و Fcitx5 اضافه کرده است. همچنین namespace جدید Unity.AI.Navigation.LowLevel امکان اجرای Navigation Queryها در Worker Threadها را فراهم می‌کند و برای C# Jobها طراحی شده است.

بهینه‌سازی و Performance

Adaptive Performance اکنون Provider جدیدی برای پلتفرم‌های Apple شامل iOS، tvOS و visionOS دارد و می‌تواند وضعیت حرارتی دستگاه را از APIهای native دریافت کند. Basic Provider نیز به Embedded Linux، QNX، Nintendo Switch و Nintendo Switch 2 گسترش یافته است.

Unity Profiler اکنون دکمه Ask Assistant را برای کمک به شناسایی فرصت‌های بهینه‌سازی در اختیار توسعه‌دهنده قرار می‌دهد. همچنین Project Auditor می‌تواند APIهایی را که در نسخه‌های آینده Obsolete می‌شوند شناسایی کند. Allocator جدید mimalloc نیز برای تخصیص و آزادسازی همزمان حافظه در چند Thread اضافه شده است.

Package Manager و Physics

Package Manager دارای نمای All Samples شده است تا نمونه‌های موجود در Packageهای نصب‌شده را یکجا نمایش دهد.

Unity Physics به یک Core Package تبدیل شده و Solver جدیدی با نام Direct Solver ارائه می‌دهد. این Solver برای سیستم‌هایی با نسبت جرم و سختی بالا، زنجیره‌ها، چرخ‌دنده‌ها، طناب‌ها، Puzzleهای فیزیکی، XR و سناریوهای صنعتی مناسب است. همچنین APIهای ScheduleParallel برای اجرای موازی Jobهای رویدادهای فیزیکی و Callback Jobها اضافه شده‌اند.

تغییرات مهم Android

  • حداقل Android API Level مورد پشتیبانی به 26، معادل Android 8.0 Oreo، افزایش یافته است.
  • پشتیبانی از معماری x86-64 در Android کاملاً حذف شده است.
  • Unity از Gradle 9.1.0 و Android Gradle Plugin 9.0.0 استفاده می‌کند.
  • نسخه پیشنهادی Android GameActivity به 4.4.0 رسیده است.
  • APIهای جدید برای دستگاه‌های Foldable ارائه شده‌اند.
  • گزینه Link Time Optimization برای Buildهای Android اضافه شده است.
  • پشتیبانی Edge-to-Edge و Window Insets با APIها و تنظیمات جدید بهبود یافته است.

پروژه‌هایی که Custom Gradle Template یا Pluginهای ثالث دارند باید هنگام ارتقا تغییرات Gradle و AGP را با دقت بررسی کنند؛ به‌خصوص Namespace پلاگین‌ها و تغییرات مربوط به فایل‌های ProGuard و تنظیمات Template.

Embedded Linux، QNX و iOS

Embedded Linux یک پارامتر خط فرمان جدید برای تعیین مسیر Shader Cache دریافت کرده است. Embedded Linux و QNX نیز از APIهای جدید Windowing برای ساخت و مدیریت چند پنجره پشتیبانی می‌کنند.

در iOS، پشتیبانی آزمایشی از پروژه‌های Xcode مبتنی بر Swift اضافه شده است. همچنین ReplayKit API حذف شده و قابلیتی برای کاهش خودکار Frame Rate بر اساس وضعیت حرارتی دستگاه iOS ارائه شده است.

Windows و Web

در Windows، AsyncReadManager از DirectStorage برای I/O بهینه‌تر پشتیبانی می‌کند و امکان Remote Deployment با Xbox PC Remote Tools نیز فراهم شده است.

در Web، Unity 6.5 از Emscripten نسخه 4.0.19-unity استفاده می‌کند. گزینه WebAssembly 2023 نیز به‌صورت پیش‌فرض فعال شده و بهینه‌سازی Metadata در IL2CPP به کاهش حجم Build و سریع‌تر شدن Load کمک می‌کند.

تغییرات مهم Programming و C#

Unity Mathematics به‌عنوان Core Module

پکیج Unity Mathematics اکنون بخشی از Core Editor و Engine است و APIهای آن در namespace Unity.Mathematics بدون نصب Package در دسترس هستند. تبدیل ضمنی میان انواع ریاضی UnityEngine و Unity.Mathematics نیز پشتیبانی می‌شود.

Code Lifecycle Callbacks

Unity 6.5 مجموعه جدیدی از Attributeهای C# را برای کنترل مراحل مختلف Code Reload و ورود و خروج از Edit Mode و Play Mode ارائه می‌کند. این APIها امکان Setup و Cleanup دقیق‌تر در چرخه عمر کد را فراهم می‌کنند.

Attributeهایی مانند OnCodeDeinitializing، OnCodeUnloading، OnCodeLoaded و OnCodeInitializing در چرخه Reload استفاده می‌شوند و Attributeهای ورود و خروج از Edit و Play Mode نیز APIهای جدید این بخش هستند.

EntityId جایگزین InstanceID

Unity اکنون برای شناسایی Objectها از ساختار 64 بیتی EntityId به جای InstanceID عددی 32 بیتی استفاده می‌کند. پروژه‌هایی که شناسه‌ها را ذخیره، Serialize یا به شکل سفارشی پردازش می‌کنند ممکن است به تغییرات بیشتری نیاز داشته باشند.

حذف APIهای قدیمی

برخی APIهای قدیمی GameObject و Component حذف شده‌اند و تعدادی Warning قدیمی نیز به Error تبدیل شده‌اند. برای نمونه باید از GetComponent<T> و AddComponent<T> به جای APIهای قدیمی استفاده شود.

Serialization Rules Analyzer

یک Analyzer مبتنی بر Roslyn اکنون قوانین Serialization یونیتی را در IDE و زمان Compile بررسی می‌کند و خطاهایی مانند نبودن [Serializable] یا استفاده نادرست از [SerializeReference] را پیش از ایجاد مشکل در Runtime گزارش می‌دهد.

Graph Toolkit

Graph Toolkit در Unity 6.5 قابلیت‌های متنوعی برای ساخت ابزارهای گرافیکی دریافت کرده است؛ از جمله Portهای عمودی، مرتب‌سازی متغیرهای Blackboard، تعریف Option برای Subgraph، ورودی و خروجی بدون Type، سفارشی‌سازی Nodeها، تولید Graph با Code و پشتیبانی بهتر از List و Array.

نمونه‌های Visual Novel Director و Dungeon Graph Generator نیز برای نمایش قابلیت‌های جدید Graph Toolkit به‌روزرسانی یا اضافه شده‌اند.

UI و UI Toolkit

uGUI

Component جدید Raycast Receiver یک ناحیه تعاملی بدون Geometry قابل مشاهده ایجاد می‌کند و می‌تواند Pointer Eventها را دریافت یا مسدود کند. همچنین Callbackهای جدید برای بارگذاری Font Material و Color Gradient در TMP_Text ارائه شده‌اند.

UI Toolkit

Component جدید Panel Renderer برای افزودن محتوای UI Toolkit به Scene معرفی شده و جایگزین مدرن‌تری برای UI Document محسوب می‌شود. این Component قابلیت‌های بیشتر، بهبود Performance و سازگاری بهتر با World-Space UI دارد.

مدیریت Mesh در UI Toolkit بهینه شده و عملکرد WebGL و WebGPU بهبود یافته است. همچنین Advanced Text Generator اکنون سیستم متن پیش‌فرض UI Toolkit است و طبق مستندات Unity، در برخی Benchmarkهای متنی CPU بهبود 10 تا 40 درصدی ارائه می‌کند. ابزار آزمایشی USS Stats Profiler نیز برای تحلیل Selectorهای USS اضافه شده است.

XR

Unity 6.5 از عینک‌های XREAL AURA به‌عنوان نخستین XR Glasses پشتیبانی‌شده در اکوسیستم Android XR پشتیبانی می‌کند و توسعه تجربه‌های AR و Immersive با OpenXR Plug-in و بسته Unity OpenXR: Android XR را ممکن می‌سازد.

برای Meta Quest نیز Shader Optimization جدیدی در نظر گرفته شده که می‌تواند GPU Frame Time، تعداد Shader Instructionها و مصرف Memory Bandwidth را کاهش دهد. برای Shaderهای سفارشی نیز Macro جدید UNITY_PLATFORM_META_QUEST قابل استفاده است.

جمع‌بندی

Unity 6.5 یک به‌روزرسانی صرفاً ظاهری نیست و در بخش‌های مهم موتور، از Rendering و Performance گرفته تا APIهای برنامه‌نویسی، Android، UI، Physics و XR تغییرات قابل توجهی ایجاد کرده است. در پروژه‌های جدید، قابلیت‌هایی مانند On-Tile Rendering، Shader Graph جدید، Profiler Assistant، Direct Solver، Panel Renderer و Code Lifecycle APIها اهمیت زیادی دارند.

برای پروژه‌های موجود، مهم‌ترین موضوع پیش از Upgrade بررسی تغییرات Breaking و Deprecated است؛ به‌خصوص تغییر InstanceID به EntityId، حذف APIهای قدیمی GameObject و Component، تغییرات Android Build Tools و منسوخ شدن Built-In Render Pipeline و Dynamic Batching.

منبع مقاله: این مقاله بر اساس مستندات «New in Unity 6.5» تهیه و به زبان فارسی بازنویسی شده است. برای جزئیات کامل هر قابلیت، Release Notes و Upgrade Guide رسمی Unity را بررسی کنید.
مهدی یدی

مهدی یدی

یک برنامه نویس ☕ ASP.Net Core - MAUI - WPF - Unity - ML.Net فعالیت می کنم.از تولید محتوا لذت میبرم. و دوست دارم محتوای پارسی را بروز نگهدارم 😎

ارسال دیدگاه

نظرات کاربران (0)

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

Captcha Active