<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های hossein asadi</title>
        <link>https://virgool.io/feed/@mul83rry</link>
        <description>برنامه نویس یونیتی و سوکت سرور</description>
        <language>fa</language>
        <pubDate>2026-06-16 15:31:59</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/64005/avatar/YZS2vF.png?height=120&amp;width=120</url>
            <title>hossein asadi</title>
            <link>https://virgool.io/@mul83rry</link>
        </image>

                    <item>
                <title>مدیریت ساده موزیک‌ها و افکت‌های صوتی بازی در یونیتی</title>
                <link>https://virgool.io/@mul83rry/%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%B3%D8%A7%D8%AF%D9%87-%D9%85%D9%88%D8%B2%DB%8C%DA%A9-%D9%87%D8%A7-%D9%88-%D8%A7%D9%81%DA%A9%D8%AA-%D9%87%D8%A7%DB%8C-%D8%B5%D9%88%D8%AA%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-xujhnpvxhxr7</link>
                <description>اگر بخوایم بازی رو به چند بخش اصلی بزرگ که کاربر باهاش رابطه مستقیم داره و توی حس و حال بازی تاثیر زیادی میذاره تقسیم کنیم، قطعا موزیک و افکت‌های بازی جزو یکی از این بخش‌ها قرار میگیرن.مدیریت ساده صداها و موزیک‌های بازی خیلی توی روند توسعه بازی تاثیر میذاره.اینجا میخوام پکیجی رو بهتون معرفی کنم که توی این‌کار خیلی میتونه کمکتون کنه.روال کار به این صورته :یک آبجکت خالی میسازیم و اسکریپت رو میدیم بهش (لینک فایل رو ضمیمه میکنم)بعد از اتچ کردن اسکریپت به آبجکتمون میبینیم که کامپوننت AudioSource رو به آبجکتمون اضافه کرده.اینجا چند تا ورودی میگیره اسکریپتموناولیش SfxClips که همون sfxها یا افکت‌های صوتی بازیمون هستن که آرایه ای از نوع SfxAudio هستن.مشخص میکنیم که چه تعداد افکت داریم و اینتر رو میزنیم.هر SfxAudio دو تا ورودی میگیره، یکی تگ موزیک(همون چیزی که بعدا برای صدا زدن افکت ازش استفاده میکنیم) و بعدی یک آرایه از نوع AudioClip که همون فایلای صوتیمون هستن.گزینه‌ی بعد MusicClips که موزیک‌های داخل بازیمون هستن و آرایه ای از نوع Audio تشریف دارن.موزیک‌ها هم مثل افکت‌هامون دو تا ورودی میگیرن، با این تفاوت که ورودی AudioClip از نوع آرایه نیست و فقط یک مقدار میگیره.Loop مشخص میکنه که موزیکی که پخش میکنیم بعد از تموم شدنش دوباره پخش شه یا خیر.AutoPlayBackgroundClipهمونطور که از اسمش مشخص اگه فعال باشه، با اجرای بازی موزیک بازی خودکار پخش میشه.ورودی‌های بعدی دو تا آبجکت هستن(SfxToggle, MusicToggle) از نوع Toggle که برای مشخص بودن فعال و یا غیرفعال بودن موزیک و افکت‌های بازی مورد استفاده قرار میگیرن.یعنی بعد از ران شدن گیم، تابع مربوطه چک میکنه که اگر موزیک بازی فعاله تیک Toggle رو فعال میکنه و اگر فعال نیست غیر فعال، همه‌ی اینا درباره‌ی افکت ها هم صادقه.خب میریم سراغ نحوه استافده از این پکیج.اول از همه میریم سراغ قطع و وصل کردن صدای موزیک و افکت هاSoundManager.instance.MuteMusic = true | falseو برای قطع و وصل کردن صدای موزیکSoundManager.instance.MuteSfx = true | falseبرای صدای افکت هاست.برای پخش صدای صدای افکت از این دستور استفاده میکنیم (&quot;Click&quot; اسم تگ افکتی هست که زمان وارد کردن تگ‌های موزیک وارد کردیم).SoundManager.instance.PlaySfx(&quot;Click&quot;);و یا اگر به تگمون بیشتر از یک افکت دادیم میتونیم به این شکل استفاده کنیم.SoundManager.instance.PlaySfx(&quot;Click&quot;, 2);که مشخص میکنه افکت مربوط به کدوم اندیس آرایه رو پخش کنهنکته : اگر به یک تگ بیشتر از یک افکت داده باشیم و اندیس رو مشخص نکرده باشیم (حالت اول صدا زدن تابع) تابع به صورت خودکار یکی از اکت‌ها رو رندوم انتخاب و پخش میکنه.SoundManager.instance.PlayMusic();یک موزیک رو به صورت رندوم انتخاب و پخش میکنه.SoundManager.instance.PlayMusic(2);اندیس مشخص شده و انتخاب و پخش میکنهSoundManager.instance.PlayMusic(&quot;background music tag&quot;);و یا میتونیم با تگ موزیک اون رو پخش کنیم.تابع MuteUnmuteSfx که میتونی به یک باتن بدیمش توی سین، صدا افکت بازی رو اگر قطع باشه وصل و وصل باشه قطع میکنه و همزمان روی آبجکت SfxToggle هم اثر میذاره و فعال یا غیرفعالش میکنه (و البته یک ورودی هم میگیره و صدای افکتی که بهش میدیم رو پخش میکنه)تابع MuteUnmuteMusic هم دقیقا همون کارای MuteUnmuteSfx رو انجام میده با این تفاوت که روی آبجکت MusicToggle اثر میذاره و صدای موزیک بازی رو قطع و وصل میکنه. لینک پکیج و چندتا عکس از محیط inspector اگر توجهتون رو جلب کرد.https://github.com/mul83rry/SoundManager/نوشته شده توسط حسین اسدی.</description>
                <category>hossein asadi</category>
                <author>hossein asadi</author>
                <pubDate>Thu, 11 Mar 2021 18:58:28 +0330</pubDate>
            </item>
                    <item>
                <title>کار کردن با گیم‌پد در یونیتی</title>
                <link>https://virgool.io/@mul83rry/%DA%A9%D8%A7%D8%B1-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%D8%A7-%DA%AF%DB%8C%D9%85%D9%BE%D8%AF-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-kk28a5frcd6r</link>
                <description>ما وقتی میخوایم یه بازی رو تجربه کنیم مجبور هستیم به نحوی اون رو کنترل کنیم، گاهی با شتاب سنج، گاهی با لمس و بعضی اوقات هم با گیم‌پد، لذت بخش ترین راهی که برای کنترل یک بازی پی سی وجود داره استفاده از گیم‌پدِ، اما خب استفاده از گیم‌پد به این آسونی ها نیست ولی من سعی کردم یک راه سریع و آسون رو براتون به شکل کامل توضیح بدم.اگر تجربه ساخت بازی پی‌سی در کارنامه خودتون دارید و یا در آینده به این سمت حرکت می کنید، احتمالا گذرتون به استفاده از گیم‌پد (کنترلر) توی یونیتی افتاده و یا یک روزی می افته.چند وقت پیش این اتفاق برام افتاد و من  یک پکیج ساختم برای اینکه بتونم از گیم‌پد توی بازی که برای یک گیم جم ساخته بودم استفاده کنم، این پکیج امکانات مختلفی داره و به خوبی با انواع گیم‌پد ها هماهنگ میشه وکارمیکنه.نحوه کار با گیم‌پد خیلی ساده هست و اینجا یک پروژه نمونه رو هم براتون قرار دادم (لینک‌ها رو ضمیمه میکنم)توی پروژه نمونه کد شخصی سازی باتن های گیم‌پد هم وجود داره، این کدها ممکنه به دردتون بخوره و با استفاده از اون بتونید راحت تر ساز و کار رو درک کنید.آموزش کار با گیم‌پد در یونیتیبرای اینکه بتونید از این پکیج استفاده کنید باید مراحلی رو طی کنید، اگر مراحل زیر رو با دقت و حوصله انجام بدین، مشکلی براتون پیش نمیاد و به راحتی میتونید از گیم‌پد استفاده کنید.اول از همه پکیج رو ایمپورت میکنیم، و بعد تنظیمات اینپوت رو انجام میدیم.از منوی setting گزینه‌ی project setting رو انتخاب میکنیمبعد میریم به قسمت input managerتوی این صفحه قسمت بالا سمت چپ یک آیکن داریم کنار آیکن تنظیمات(نمیدونم شکلشو چجوری توضیح بدم)، اونو که انتخاب کنین ازتون یک ورودی میگیره که مربوط به تنظیمات گیم‌پد هست(داخل پکیج موجوده).بعد از انتخاب میتونین تغییرات رو ببینین، تا اینجا ما تنظیمات چهار تا گیم‌پد رو وارد کردیم.اسکریپت های مورد نیاز برای کار با گیم‌پد (دو اسکریپت مورد نیاز)اسکریپت اول:یکی از اسکریپت‌ها GamePad Manager هست که فقط به یدونه از اون توی سین(scene) نیاز داریم، اسکریپت رو به یک گیم‌آبجکت(Game object) میدیم.اسکریپت دوم:اسکریپت دوم که  برای کار کردن با گیم‌پد هست(GamePad Input) رو باید به تعداد گیم‌پدهایی که توی بازی نیاز داریم داشته باشیم (این پکیج از چهار تا گیم‌پد پشتیبانی میکنه، البته اگر بیشتر از چهار تا هم نیاز داشته باشین با یک خورده تغییرات و شخصی سازی کارتون رو میتونه به راحتی انجام بده).اسکریپت GamePad Input رو به یک یا چند تا آبجکت میدیم(بستگی به این داره که به چند تا گیم‌پد توی بازی خودتون نیاز داشته باشین)، بعد از دادن اسکریپت و توی پنجره اینسپکتور یک ورودی میبینین به اسم Selected Gamepad که گیم‌پدی هست که اسکریپت به ایونت‌هاش گوش میکنه.حالا یک اسکریپت میسازیم برای گوش دادن به ایونت‌های گیم‌پد و این اسکریپت رو به عنوان ورودی بهش معرفی میکنیم (اینجا ما اسم متغیر رو joy میذاریم)حالا توی تابع Start ایونت‌هایی که نیاز داریم رو معرفی میکنیم بهش.joy.Button0Down += Button0Down;و بعد تابع مربوط بهش رو میسازیمprivate void Button0Down()
{
    Debug.Log(&amp;quotButton0 Down&amp;quot);
}تابع Button0Down مربوط به باتن مثلث توی گیم‌پد هست و همونجوری که مشخصه زمانی که فشرده شه اجرا میشه.باتن ها به این صورت هستن که از Button0Down تا Button3Down به ترتیب مربوط به مثلث، دایره، ضربدر و مربع هستن و باتن‌های Button4Down تا Button7Down مربوط به باتن‌های L و R هستن، توجه کنید که هر کدوم از این دکمه هارو درست استفاده کنیم.تابع مربوط به جوی‌استیک‌ها هم چنین چیزی هست که در ادامه اون رو بررسی میکنیم:جوی‌استیک سمت چپ Axis Movementو جوی‌استیک سمت راست Axis3rdMoveMentکه یک پارامتر از نوع vector2 بهمون میدن.توی این آموزش سعی کردیم تمامی مطالب رو به زبان ساده بیان کنیم و از پیچیدگی های استفاده از گیم‌پد کم کنیم، به نظر شما استفاده از گیم‌پد چه قدر میتونه توی ساخت یک بازی اثر گذار باشه؟ آیا لازمه که اون رو یاد بگیریم؟شما میتونید اسکرین شات هایی که از اینسپکتور گرفته شده و لینک گیت هاب پکیج رو در انتهای مطلب ببینید و از اون استفاده کنید، اگر این مطلب براتون مفید بود از دکمه قلب استفاده کنید و اگر هم سوالی داشتید میتونید از من بپرسید، خوشحال میشم به بازی سازهای ایرانی کمک کنم.https://github.com/mul83rry/GamePad/این آموزش توسط حسین اسدی نوشته شده است.</description>
                <category>hossein asadi</category>
                <author>hossein asadi</author>
                <pubDate>Wed, 11 Nov 2020 00:39:24 +0330</pubDate>
            </item>
            </channel>
</rss>