آموزش موتور ساخت بازی یونیتی Unity – بخش دوم
در بخش اول آموزش، نرم افزار یونیتی و اضافه کردن اشیاء به آن را بررسی کردیم. در این قسمت، چندین کاراکتر به دنیای بازی اضافه خواهیم کرد و با چگونگی استفاده از اشیاء بازی (GameObject) و Prefabها آشنا خواهید شد.
ساخت بازی با موتور بازی Unity
اشیاء بازی (GameObjects) تقریباً تمام عناصر موجود در موتور بازی Unity از جمله بازیکن شما، دشمنان، گلولههای روی صفحه نمایش، نمایش هندسی سطح و هر چیز دیگر در بازی را نمایش میدهند. درست مانند پنجره Project Browser که شامل تمام عناصر بازی است، نمای Hierarchy نیز حاوی لیستی از اشیاء بازی (GameObject) در صحنه شما میباشد. اگر پروژه شما باز نیست، اکنون آن را در موتور بازی Unity باز کنید.
روش باز کردن پروژه در برنامه Unity کمی عجیب است. شما میتوانید سیستم فایل خود را پیمایش کرده و فایل Scene را پیدا کنید. بر روی فایل Scene دابل کلیک کنید، سپس پروژه شما با صحنه انتخاب شده فعلی در برنامه Unity باز می شود.
اگر پروژه شما فهرست نشده باشد، با کلیک بر روی دکمه open، یک کادر محاورهای باز میشود. به جای جستجوی یک فایل خاص، سعی کنید، به بالاترین سطح فایلهای پروژه Unity رفته و بر روی select folder کلیک کنید. موتور بازی، پروژه Unity درون پوشه را شناسایی کرده و آن را باز میکند، یا اگر برنامه Unity را باز کنید و از مسیر File/Open بر روی گزینه Open کلیک کنید، فهرستی از پروژهها را مشاهده خواهید کرد. پروژه مورد نظر را از فهرست انتخاب کنید.
هنگامی که پروژه باز باشد، نمای hierarchy را بررسی کرده و تعداد اشیای بازی را بشمارید.
ممکن است اولین حدس شما دربارهی تعداد اشیاء بازی، سه GameObject باشد زیرا در قسمت اول آموزش سه شیء، arena (صحنه بازی)، space marine body (بدن قهرمان بازی) و space marine head (سر قهرمان بازی) را به بازی اضافه کردید. با این حال، دو GameObject دیگر نیز وجود دارد: دوربین اصلی (main camera) و نور جهت نما، با وجود اینکه این دو عنصر بهطور پیشفرض توسط موتور بازی Unity ایجاد میشوند ولی این عناصر نیز GameObject محسوب میشوند.
حتی اشیاء بازی بیشتری نیز وجود دارد. اگر دقت کنید سمت چپ شیء بازی که import کردهاید، یک مثلث وجود دارد. دکمه Alt در Pc یا دکمه option در Mac را پایین نگه داشته و بر روی مثلث مذکور کلیک کنید.
همانطور که مشاهده میکنید ، تعداد بسیار زیادی GameObject دارید.
سه مسئله مهم دربارهی GameObject ها وجود دارد:
- GameObject میتواند حاوی GameObject دیگری باشد. این قابلیت مفید در سطح پایه باعث سازماندهی و ارتباط اشیاء بازی (GameObject) مرتبط به یکدیگر میشود. مهمتر اینکه تغییر GameObject والد ممکن است بر روی GameObject فرزند تاثیر بگذارد.
- مدل (model) به GameObject تبدیل میشوند. موتور بازی Unity اشیاء بازی را برای قطعات مختلفی از مدل شما تولید میکند بهطوری که میتوانید مانند هر GameObject دیگر تغییر دهید.
- هر عنصر موجود در نمای hierarchy، یک GameObject است. حتی عناصری مانند دوربینها و چراغها نیز GameObject هستند.
انتقال اشیاء بازی (GameObject)
قبل از شروع، بر روی مثلث کلیک کنید تا درخت اشیاء بازی جمع شوند. در نمای hierarchy بر روی شیء بازی BobbleArena کلیک کنید، چند لحظه صبر کنید تا پنجره Inspector را مشاهده کنید، در این پنجره اطلاعاتی دربارهی GameObject انتخابی وجود دارد. اشیاء بازی (GameObject) شامل تعداد اجزای تشکیل دهنده است که این اجزا را میتوانید به عنوان واحدهای کوچک عملکردی در نظر بگیرید. یکی از مولفههایی که در همهی GameObject ها وجود دارد، مولفه Transform است.
مولفه Transform حاوی موقعیت (position) میزان چرخش (rotation) و اندازه (scale) شیء بازی است. با استفاده از نمای Inspector میتوانید میزان عددی مقیاس Transform را مشاهده کنید. هنگامی که موس را بر روی نام محورها قرار دهید، فلشها در کنار اشارهگر ظاهر میشوند. برای تنظیم مقدار مقیاسهای مذکور از جمله موقعیت و اندازه، دکمه چپ موس را پایین نگه داشته و اشارهگر موس را به طرف چپ یا راست بکشید. این ترفند، یک روش ساده برای اعمال تغییرات کوچک در مقادیر این مقیاسها است.
شیء بازی Bobble Arena را انتخاب کنید و موقعیت آن را به (X:-6.624 , Y: 13.622 , Z: 6.35) تنظیم کنید. ما هنگامی این بازی را توسعه دادیم، صحنه بازی در این موقعیت قرار گرفت. شما همچنین میتوانید، عنصر Arena ( صحنه بازی) را به (X: 2.0 , Y: 2.0 Z: 2.0) تنظیم کنید . این اندازه، فضای بیشتری برای حرکت در اختیار بازیکن قرار میدهد.
برای حرکت دادن space marine میتوانید ابتدا سر وی را انتقال داده و سپس بدن او را حرکت دهید، اما بهتر است که بخش های بدن وی را درون یک GameObject قرار دهید. در نمای hierarchy، بر روی دکمه Create کلیک کرده و گزینه Create Empty را انتخاب کنید.
شیء بازی empty، یک GameObject است که تنها شامل مولفه ضروری GameObject یعنی مولفه Transform است. شما همچنین میتوانید یک شیء بازی Empty را با کلیک کردن بر روی GameObject/Create Empty ایجاد کنید. برای ساخت دیگر مولفه ها نیز میتوانید از این روش استفاده کنید. از هر کدام از این روشها که برای پروژه شما مناسب است، استفاده کنید.
والد مولفههای Space Marine
در نمای hierarchy، یک شیء بازی جدید به نام GameObject مشاهده خواهید کرد. بر روی شیء بازی GameObject کلیک کنید و نام آن را به SpaceMarine تغییر دهید. شما می توانید در نام شیء بازی، از فاصله استفاده کنید، مانند Space Marine. فایل های BobbleMarine-Body و BobbleMarine-Head را به درون شیء بازی SpaceMarine بکشید. به دلیل وابستگی GameObjectهای فرزند به GameObject والد، گاهی مسائلی پیش خواهد آمد. برای مثال، حتی اگر GameObject والد حرکت نکند، مقادیر موقعیت فرزندان تغییر میکنند.
شیء بازی Space Marine را در نمایhierarchy انتخاب کنید به نمای Scene بروید و برای تمرکز بر روی این شیء بازی، کلید F را فشار دهید. احتمالاً، صحنه بازی (arena) دید شما را مسدود میکند. خوشبختانه شما میتوانید صحنه بازی (arena) را پنهان کنید. برای انجام این کار، در نمای hierarchy بر روی Bobble Arena کلیک کنید، سپس در نمای Inspector تیک کادر سمت چپ نام GameObject را بردارید. این کار باعث پنهان شدن صحنه بازی (arena) می شود.
حال شما باید فقط قهرمان بازی را ببینید. شیء بازی Space Marine را انتخاب کنید. در نمای Inspector ، موس را بر روی برچسب موقعیت X حرکت دهید تا فلشهای جهت دار نمایان شوند. کلید سمت چپ موس را نگه دارید و موس را به طرف چپ و راست بکشد. توجه کنید که چگونه تمام اشیای بازی، نسبت به شیء بازی والد خود حرکت میکنند. همانطور که مشاهده میکنید، داشتن شیء بازی والد دارای مزیتهای خاصی است.
هنگامی که یک GameObject به عنوان والد GameObject دیگری تعیین شود، موقعیت GameObject فرزند تغییر نخواهد کرد. تنها تغییری که رخ میدهد این است که موقعیت GameObject فرزند به GameObject والد وابسته میشود. یعنی اگر موقعیت شیء بازی فرزند به (0, 0, 0) تنظیم شود، این شیء بازی به جای قرار گرفتن در مرکز دنیای بازی، در مرکز شیء بازی والد قرار میگیرد.
حال، شما برای سرهم بندی قهرمان بازی خود باید این کار را انجام دهید. BobbleMarine-Body را انتخاب کنید، سپس موقعیت آن در نمای Inspector را به (X:0, Y:0, Z:0) تنظیم کنید. BobbleMarine-Head را انتخاب کنید، و موقعیت آن در نمای Inspector را به (X: -1.38, Y: 6.16, Z: 1.05) تنظیم کنید. با اعمال این تنظیمات، سر و بدن قهرمان بازی شما سرهم بندی میشوند.
تعیین موقعیت قهرمان بازی
اکنون زمان آن رسیده است که Space Marine را در موقعیت مناسب خود قرار دهید . شیء بازی BobbleArena را انتخاب کنید، و برای فعال سازی مجدد آن، در نمای Inspector تیک کنار نام آن را انتخاب کنید. شیء بازی Space Marine را انتخاب کنید، و موقعیت آن را به (X: 4.9, Y: 12.54, Z:5.87) تنظیم کنید. همچنین، میزان چرخش این شیء بازی را به (X:0, Y:0, Z:0) تنظیم کنید. قهرمان بازی شما باید در مرکز صحنه بازی قرار گیرد. هنگامی که موقعیت قهرمان بازی را تنظیم کردید، در نمای Scene کلید F را فشار دهید تا قهرمان بازی را که با افتخار در میان میدان بازی ایستاده است را مشاهده کنید.
ایجاد Prefab
این بازی دارای موجودات دیگری است که آنها نیز همانند قهرمان بازی از قطعات بسیاری تشکیل شده اند و باید سرهم بندی شوند. در نمای hierarchy بر روی دکمه Create کلیک کنید و از منوی کشویی گزینه Create Empty را انتخاب کنید. بر روی شیء بازی ایجاد شده کلیک کنید و نام آن را Alien قرار دهید. شیء بازی Alien را در نمای Hierarchy انتخاب کنید و موقعیت آن را در نمای Inspector به مقادیر (X:2.9, Y: 13.6, Z: 8.41) تنظیم کنید. در پنجره Project Browser، شیء بازی BobbleEnemy-Body را از پوشه Models به درون شیء بازی Alien بکشید.
موقعیت شیء بازی Bobble Enemy-Body را به (X:0, Y: 0, Z: 0) تنظیم کنید . اکنون Alien و قهرمان بازی باید بر روی صحنه بازی در کنار یکدیگر باشند.
حال باید سر دشمن (Alien) به بدن وی اضافه شود. برای انجام این کار، شیء بازی BobbleEnemy-Head را از پنجره Project Browser به درون شیء بازی Alien بکشید. موقعیت شیء بازی سر دشمن را به (X: 0.26, Y: 1.74, Z: 0.31)، میزان چرخش آن را (X: -89.96, Y: 0, Z: 0) و اندازه آن را به (X: 100, Y: 100, Z: 100) تنظیم کنید.
این کار یک اشکال کوچک دارد. از آنجایی که تعداد اشیا بازی دشمن زیاد هستند، ممکن است قهرمان بازی قادر به تشخیص آنها نباشد.
در این مرحله، شما یک شیء بازی والد برای قهرمان بازی و یک شیء بازی دیگر برای دشمن (Alien) دارید. وجود یک شیء بازی والد برای قهرمان بازی کافی است زیرا تنها یک قهرمان بازی وجود دارد. اما برای دشمن (alien) نیاز به تعداد زیادی شیء بازی والد دارید.
شما میتوانید برای ساخت دشمنان مشابه، شیء بازی alien را کپی و باز نشانی (paste) کنید اما همه آنها، عناصر جداگانهای هستند. اگر نیاز به تغییر در رفتار یک alien دارید، باید هر نمونه را جداگانه تغییر دهید در این موقعیت بهتر است از یک prefab استفاده کنید؛ prefab برای ایجاد تعداد زیادی کپی جداگانه مورد استفاده قرار میگیرد. هنگامی که یک prefab را تغییر میدهید، میتوانید آن تغییرات را به بقیه نمونهها نیز اعمال کنید.
ساختن یک prefab بسیار ساده است. شیء بازی Alien را انتخاب کنید و به درون پوشه prefabs در پنجره Project Browser بکشید.
با انجام این کار،چند تغییر مشاهده میکنید: یک موجودیت جدید با یک آیکون کنار آن در پوسته prefabs شما وجود دارد. همچنین مشاهده خواهید کرد که نام شیء بازی در نمای Hierarchy آبی رنگ است.
برای ساخت یک prefab نیازی نیست مدل خود را دروی پوشه prefabs بکشید، تنها کافی است یک شیء بازی را درون هر پوشه در پنجره Project Browser بکشید. البته داشتن یک پوشه prefabs، ایده خوبی است. رنگ آبی شیء بازی نشان میدهد که آن شیء بازی از یک prefab یا یک مدل مانند BobbleArena گرفته شده است. سپس نمای Inspector را بررسی کنید، چندین دکمه اضافی مشاهده خواهید کرد.
در زیر، تعدادی از این دکمه ها توضیح داده شده است:
- گزینه Select برای انتخاب یک prefab درون پنجره Project Browser استفاده میشود. زمانی که تعداد زیادی فایل وجود دارد و میخواهید برای اعمال تغییرات به راحتی به یک prefab دسترسی داشته باشید، این گزینه مفید خواهد بود.
- گزینه Revert برای بازگرداندن تغییرات اعمال شده به یک نمونه استفاده میشود. برای مثال، ممکن است اندازه و رنگ یک نمونه را تغییر دهید ولی نتیجه نهایی ناخوشایند باشد. برای بازگشتن به حالت قبل از اعمال این تغییرات بر روی دکمه Revert کلیک کنید.
- گزینه Apply برای اعمال تغییرات انجام شده بر روی یک نمونه به prefab آن مورد استفاده قرار میگیرد. این تغییرات به تمام نمونههای آن prefab نیز اعمال خواهند شد.
ساختن یک نمونه prefab نیز بسیار ساده است. prefab دشمن (Alien) را در پنجره Project Browser انتخاب کنید و آن را در کنار دشمن (Alien) دیگر در نمای Scene بکشید.
شما همچنین میتوانید نمونه را به نمای Hierarchy بکشید. همانطور که مشاهده میکنید، ساختن دشمنهای (Alien) بیشتر به سادگی کشیدن prefab دشمن از پنجره Project Browser است. اما شما هنوز به گروهی از دشمنان (Alien) نیاز ندارید، پس تمام alienها از نمای Hierarchy حذف کنید. برای حذف یک شیء بازی، آن شیء بازی را در نمای Hierarchy انتخاب کنید و دکمه delete (یا دکمه های command-Delete در مک) صفحه کلید را بفشارید، یا بر روی آن راست کلیک کرده و گزینه delete را انتخاب کنید.
اصلاح مدلها
کار بعدی که باید انجام دهید، اصلاح برخی از مدلها است. در این مورد، موتور بازی Unity، مدلهای شما را وارد (import) کرده است اما ارجاع به بافتها (texture) را از دست داده است. یک BobbleArena- Column از پوشه Models در پنجره Project Browser را به نمای Scene بکشید. یک عنصر سفید رنگ را مشاهده خواهید کرد.
اگر نام یک ماده یا بافت در بستهی (package) منبع تغییر کند، اتصال به آن ماده در Unity حذف میشود. موتور بازی Unity با ایجاد یک عنصر جدید که هیچ بافتی به آن متصل نیست، سعی می کند این مشکل را حل کند. برای رفع این مسئله، باید یک بافت جدید را به ماده (material) اختصاص دهید زیر پوشه Models را در پنجره Project Browser انتخاب کنید، سپس برای مشاهده تمام اشیای فرزند عنصرBobbleArena- Column را باز کنید.
سپس ، شیء بازی Cube-001 را در پنجره Project Browser انتخاب کنید، و در نمای Inspector بر روی مثلث کنار Main_Material shader کلیک کنید.
مشاهده خواهید کرد که گزینههای بسیار زیادی وجود دارد. این گزینه ها نحوه عملکرد این گزینه را تنظیم میکند.
برای مثال، گزینه metallic بیانگر جنس فلزی مواد است. تنظیم مقدار گزینه metallic با بیشترین مقدار بدین معنی است که بافت انتخابی بیشترین شباهت را به مواد فلزی دارد. در سمت چپ اکثر خصوصیات، یک کادر خاکستری رنگ مشاهده خواهید کرد. این کادرها برای بافتها استفاده میشوند. در این مورد، به یک تصویر از مدل خود نیاز دارید. پوشه Texture در نمای Project Browser را انتخاب کنید. بر روی بافت Bobble Wars Marine texture کلیک کرده و آن را به کادر خصوصیت Albedo در بخش خصوصیات shader بکشید.
خصوصیت Albedo برای بافتها است اما میتوانید رنگها را نیز تغییر دهید. هنگامی که خصوصیت Albedo را انتخاب کنید ، یک texture به ستونهای شما اختصاص داده میشود.
جهت تنظیم بافت سطح کف صحنه بازی، در نمای Hierarchy شیء بازی BobbleArena را باز کنید، سپس بخش Floor را گسترش دهید. فایل Floor Piece را انتخاب کنید اگر نمای Inspector را بررسی کنید،
متوجه خواهید شد که دو عنصر به Floor Piece متصل شده است به عنصر BobbleArena-Main_Texture، هیچ بافتی اختصاص داده نشده است. شاید فکر کنید دلیل این امر پیش نمایش سفید تمام عناصر است.
فرآیندی که برای ستونها انجام دادید را بار دیگر برای کف صحنه بازی نیز انجام دهید. پوسته Texture در نمای Project Browser را انتخاب کنید. بافت Bobble Wars Marine texture را به کادر خصوصیت Albedo در خصوصیات shader بکشید. حال، کف صحنه (floor) به خطوط مرزی (broder) نیاز دارد.
تمام بخشهای کف صحنه به خطوط مرزی نیاز دارند زیرا تمام آنها از عنصر مشابهی استفاده میکنند.
افزودن موانع
حال که مدل خود را اصلاح کردید، وقت آن است که تعدادی ستون به کف صحنه بازی اضافه کنید. شما جمعاً هفت ستون ایجاد خواهید کرد و برای انجام این کار از prefab ها استفاده خواهید کرد. هرگاه به تکرار یک شیء بازی نیاز داشتید، به جای این کار از prefab استفاده کنید. برخی از توسعه دهندگانUnity برای هر موردی حتی ساخت اشیاء یکتا نیز از prefab استفاده می کنند. نظر این افراد این است که ساخت یک prefab و تکرار آن بسیار سادهتر از تبدیل گروهی از اشیاء بازی موجود به یک prefab نمونه است.
روش اول نیاز به کار بسیار کمی دارد. در حالیکه در روش دوم باید در عین نگه داشتن ویژگیهای خاص هر نمونه، ویژگیهای مشترک نمونهها برای یک prefab استخراج شوند.برای تبدیل BobbleArena-Column به یک prefab، فایل BobbleArena-Column را به درون پوشه prefabs بکشید. نمونه BobbleArena-Column را در نمای Hierarchy انتخاب کنید و موقعیت آن را در نمای Inspector به مقدار (X: 1.66, Y: 12.83, Z: -54.48) تنظیم کنید. اندازه این نمونه را به (X:3.5, Y: 3.5, Z: 3.5) تنظیم کنید. برای هم اندازه کردن تمام prefabها بر روی دکمه Apply کلیک کنید.
اکنون وقت ساختن بقیه ستونها است. کشیدن یک ستون از پروژه به نمای Scene ممکن است خسته کننده باشد، به ویژه هنگامی که چندین نمونه وجود دارد. یک ستون (column) را در نمای Hierarchy انتخاب کنید و دکمههای Ctrl-D در pc یا Command-D در مک را فشار دهید.
شش کپی از ستون ایجاد کنید و خصوصیت Position آنها را طبق مقادیر زیر تنظیم کنید:
- (X:-44.69, Y:12.83, Z:-28.25)
- (X:42.10, Y:12.83, Z:30.14)
- (X:-8.29, Y:12.83, Z:63.04)
- (X:80.40, Y:12.83, Z:-13.65)
- (X:-91.79, Y:12.83, Z:-13.65)
- (X:-48.69, Y:12.83, Z:33.74)
حال باید هفت ستون در صحنه بازی داشته باشید.
صحنه بازی به نظر مناسب است اما نمای Hierarchy کمی نامنظم است. بر روی دکمه Create گزینه Create Empty را انتخاب کنید. نام شیء بازی ساخته را columns بذارید و تمام ستون را به درون این پوشه بکشید.
اگر دقت کنید، متوجه میشوید که تمام ستونها دارای نام مشابهی هستند اما هر کدام دارای یک شماره منحصر به فرد است . از آنجایی که همه آنها اساساً به عنوان یک موجودیت عمل میکنند، داشتن نام مشابه برای آنها ایرادی ندارد. دکمه shift را نگه دارید و تمام ستونهای موجود در نمای Hierarchy را انتخاب کنید. در نمای Inspector، نام آنها را به column تغییر دهید.
همانطور که میبینید، میتوان نام گروهی از اشیاء بازی را به طور همزمان تغییر داد.
ایجاد Spawn Point
در این بخش، شما نقاط تکثیر (Spawn Point) برای تولید تعداد زیادی دشمن در مقابل قهرمان بازی را تنظیم خواهید کرد. تاکنون، شما تعدادی شیء بازی که میخواستید توسط قهرمان بازی دیده شوند را ساختهاید. اما در مورد Spwan point شرایط متفاوت است و کسی نباید آنها را ببیند. در عینحال، شما باید بدانید که این نقاط در کجا قرار دارند.
برای نمایش یک Spawn point میتوانید یک مکعب سه بعدی طراحی کنید و آن را در نمای Scene قرار دهید، سپس در هنگام شروع بازی آن را حذف کنید. اما این روش پیچیده است. خوشبختانه، موتور بازی Unity یک مکانیزم سادهتر به نام Label را ارائه میدهد. Label، یک شیء بازی است که در نمای Scene قابل مشاهده است اما در طول بازی پنهان میشود.
برای دیدن عملکرد Label، گروهی از Spawn point را با روشی مشابه روش ساخت ستونها ایجاد خواهید کرد. در نمای Hierarchy بر روی دکمه create کلیک کنید و گزینه create Empty را انتخاب کنید. نام این شیء بازی را Spawn گذاشته و موقعیت آن را به (x: -5.44, y: 13.69, z: 90.30) تنظیم کنید. در نمای Inspector ، بر روی مکعب رنگی، کلیک کنید. یک کارد با سبک مختلف label ظاهر میشود. بر روی کپسول آبی کلیک کنید.
اگر به نمای Scene نگاه کنید، متوجه میشوید که با Spawn point حاشیه نویسی شده است.
شما باید ده Spawn Point دیگر ایجاد کنید. با انجام موارد زیر، جایگذاری این عناصر آسانتر میشود:
- در نمای Scene بر روی مکعب وسط ابزار gizmo کلیک کنید تا صحنه بازی در حالت هم سطح (Isometric) قرار گیرد.
- بر روی فلش محور y سبز رنگ کلیک کنید تا صحنه بازی از نمای بالا نمایش داده شود.
اکنون با توجه به تصویر زیر، ده Spawn point دیگر را ساخته و در موقعیت مناسب قرار دهید:
پس از اتمام کار، در نمای Hierarchy بر روی دکمه create کلیک کنید، سپس گزینه Create Empty را انتخاب کنید. و نام آن را Spawn Points بگذارید. تمام Spawn Point را به درون آن بکشید. سپس نام آنها را به صورت گروهی همانند نام ستونها به Spawn تغییر دهید.
تبریک میگویم! تنظیمات مورد نیاز بازی شما به خوبی انجام شده است. فراموش نکنید که بازی را ذخیره کنید. فایل کامل پروژه انجام شده در آموزش موتور بازی Unity را میتوانید از اینجا دانلود کنید.
امیدواریم این مقاله برای شما مفید واقع شده باشد. اگر به مطالعه در این زمینه علاقهمند هستید، مطالب زیر را به شما پیشنهاد میکنیم:
- مجموعه آموزش های ساخت بازی (کامپیوتری و موبایل)
- آموزش تصویری و پروژه محور یونیتی (Unity) – ساخت بازی نابودگر فضایی
- آموزش یونیتی (Unity) – ساخت منو با تنظیمات حرفهای
#