⭕ سِیو کردن بازی ( Game Saving)
🔸 یکی از مهمــترین شرایطی که بازی ها می توانند داشته باشد، قابلیت ذخیره (سِیو) در آنهاست. سیو در بازی می تواند در حالـــت های متفاوتی اتفاق بیافتد. مثـــلاً سیو مراحل بازی یا سیو تمام بخش های بازی در زمان زدن گزینه Save توسط کاربر.
ℹ ابتدا ساده ترین روش سیو یعنی سیو مراحل بازی را، آن هم با ساده ترین روش بیان می کنیم. با این کار می خواهیم بازیکن در هر سیستمی به هر مرحله ای رفت، آن مرحله سیو شود و اگـــر مجدداً بازی را باز کــرد، بازی از همان مرحله برایش باز شود.
🔹 ذخیره مرحله بازی را روی #فایل انجام می دهیم. (فایل متنی) بنابراین اگـــر در مورد ذخیره فایل متنی مطالب را نمی دانید پست مربوطه را مطالعه کنید. /👇
https://telegram.me/UnityLearning/458
⬅ بنابراین کافی است زمانی که کاربر به مرحله جدید می رود (حال در تابع Start آن مرحله یا توابع دیگر) شماره مرحله یا نام آن را در یک فایل که برای این کار (سیو بازی) ساخته می شود، فـــرار دهیم و همیشه در ابتدای بازی یک اسکریپت داشته باشیم که دستور
Application.LoadLevel
را با آن (نام یا شماره مرحله) صدا بزند، به همین راحتی می توان کاری کرد که بازی از ابتدا از آخرین مرحله ای که کاربر رفته است باز شود. (اسکریپت های آماده این کار در پست های بعدی قرار خواهند گرفت.)
▫ در صورتی که به یاد داشته باشید در آموزش مربوط به فایل، اسکریپت بسیار کاربردی برای ذخیره فایل متنی در مسیر داده شده و همچنین خواندن از آن و قرار دادن متن در متغیر رشته ای را قرار دادیم به کمک این توابع به راحتی عمل نوشتن نام و یا شماره مرحله در فایل امکان پذیر است، مثلا به کمک دستورات زیر فایلی را می سازیم که شامل شماره مرحله بازی است/👇 (دقت کنید فرض بر این است که توابع WriteFile و ReadFile که خودمان نوشتیم را به اسکریپت داده ایم.)
WriteFile(Application.dataPath+"\\Save.txt",Application.loadedLevel.ToString());
🔹 این دستور شماره مرحله جاری را در یک فایل به نام Save.txt در مسیر جاری بازی (متفاوت برای پلتفرم های مختلف) ذخیره می کند.
👈 با دستور زیر هم می توانید این شماره را در یک String قرار دهید و بر اساس آن تصمیم بگیرید که چه مرحله load شود/👇
var Level=ReadFile(Application.dataPath+"\\Save.txt");
🔸 متغیر Level از نوع رشته ای و شامل نام فایل مورد نظر می باشد. البته باید دقت کرد که این فایل باید وجود داشــته باشد (در صورتی که وجود نداشته باشد این دستور با خطا مواجه می گردد بنابراین باید دقت کرد که دستور در چه محلی صدا زده می شود.)
🔹 اسکریپت آماده تمام مطالبی که بیان شد، در کانال و در پست های بـــعدی قرار خواهد گرفت. این اسکریپت ها شامل 1- اسکریپت برای ذخیره شماره مرحله بازی در یک فایل در محل لود شدن مرحله بعد است (یعنی زمانی که کاربر به مرحله بعد می رود شماره آن در فایل ذخیره شود) 2- اسکریپت بار گزاری بازی از روی فایل ذخیره شده (تابع Start) و اجرای مرحله مورد نظر است.
#اسکرپیت_نویسی #کد_نویسی #جاوا #سیو_کردن_بازی
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
🔸 یکی از مهمــترین شرایطی که بازی ها می توانند داشته باشد، قابلیت ذخیره (سِیو) در آنهاست. سیو در بازی می تواند در حالـــت های متفاوتی اتفاق بیافتد. مثـــلاً سیو مراحل بازی یا سیو تمام بخش های بازی در زمان زدن گزینه Save توسط کاربر.
ℹ ابتدا ساده ترین روش سیو یعنی سیو مراحل بازی را، آن هم با ساده ترین روش بیان می کنیم. با این کار می خواهیم بازیکن در هر سیستمی به هر مرحله ای رفت، آن مرحله سیو شود و اگـــر مجدداً بازی را باز کــرد، بازی از همان مرحله برایش باز شود.
🔹 ذخیره مرحله بازی را روی #فایل انجام می دهیم. (فایل متنی) بنابراین اگـــر در مورد ذخیره فایل متنی مطالب را نمی دانید پست مربوطه را مطالعه کنید. /👇
https://telegram.me/UnityLearning/458
⬅ بنابراین کافی است زمانی که کاربر به مرحله جدید می رود (حال در تابع Start آن مرحله یا توابع دیگر) شماره مرحله یا نام آن را در یک فایل که برای این کار (سیو بازی) ساخته می شود، فـــرار دهیم و همیشه در ابتدای بازی یک اسکریپت داشته باشیم که دستور
Application.LoadLevel
را با آن (نام یا شماره مرحله) صدا بزند، به همین راحتی می توان کاری کرد که بازی از ابتدا از آخرین مرحله ای که کاربر رفته است باز شود. (اسکریپت های آماده این کار در پست های بعدی قرار خواهند گرفت.)
▫ در صورتی که به یاد داشته باشید در آموزش مربوط به فایل، اسکریپت بسیار کاربردی برای ذخیره فایل متنی در مسیر داده شده و همچنین خواندن از آن و قرار دادن متن در متغیر رشته ای را قرار دادیم به کمک این توابع به راحتی عمل نوشتن نام و یا شماره مرحله در فایل امکان پذیر است، مثلا به کمک دستورات زیر فایلی را می سازیم که شامل شماره مرحله بازی است/👇 (دقت کنید فرض بر این است که توابع WriteFile و ReadFile که خودمان نوشتیم را به اسکریپت داده ایم.)
WriteFile(Application.dataPath+"\\Save.txt",Application.loadedLevel.ToString());
🔹 این دستور شماره مرحله جاری را در یک فایل به نام Save.txt در مسیر جاری بازی (متفاوت برای پلتفرم های مختلف) ذخیره می کند.
👈 با دستور زیر هم می توانید این شماره را در یک String قرار دهید و بر اساس آن تصمیم بگیرید که چه مرحله load شود/👇
var Level=ReadFile(Application.dataPath+"\\Save.txt");
🔸 متغیر Level از نوع رشته ای و شامل نام فایل مورد نظر می باشد. البته باید دقت کرد که این فایل باید وجود داشــته باشد (در صورتی که وجود نداشته باشد این دستور با خطا مواجه می گردد بنابراین باید دقت کرد که دستور در چه محلی صدا زده می شود.)
🔹 اسکریپت آماده تمام مطالبی که بیان شد، در کانال و در پست های بـــعدی قرار خواهد گرفت. این اسکریپت ها شامل 1- اسکریپت برای ذخیره شماره مرحله بازی در یک فایل در محل لود شدن مرحله بعد است (یعنی زمانی که کاربر به مرحله بعد می رود شماره آن در فایل ذخیره شود) 2- اسکریپت بار گزاری بازی از روی فایل ذخیره شده (تابع Start) و اجرای مرحله مورد نظر است.
#اسکرپیت_نویسی #کد_نویسی #جاوا #سیو_کردن_بازی
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
LoadLevel_Save.js
889 B
⭕️اسکریپت سیو کردن مرحله (در هنگام لود مرحله بعد) در مسیر جاری بازی و در فایل Save.txt
🔹ما این کار را با یک Button انجام داده ایم، شما هر وقت لازم بود مرحله بعدی لود شود، تابع را صدا بزنید.
🔹ما این کار را با یک Button انجام داده ایم، شما هر وقت لازم بود مرحله بعدی لود شود، تابع را صدا بزنید.
LoadLevel_FromFile.js
664 B
⭕️اسکریپت لود کردن مرحله بازی از روی فایل Save.txt
که البته برای شروع اولیه باید ابتدا مقدار 0 در آن باشد. (فایل را دستی بسازید)
🔹این اسکریپت را میتوانید به یک GameObject خالی در مرحله اول بدهید.
که البته برای شروع اولیه باید ابتدا مقدار 0 در آن باشد. (فایل را دستی بسازید)
🔹این اسکریپت را میتوانید به یک GameObject خالی در مرحله اول بدهید.
🔴 #خبر
☠ فیلمی در شبکه های اجتماعی مبنی بر خودکشی افرادی ایرانی که بازی چالش نهنگ آبی را بازی کردند و به مراحل پایانی رسیده اند، منتشر شده است که البته هنوز توسط پلیس و وزارت ارتباطات تأیید نشده است. اما مسئله تأیید شدن یا نشدن فیلم نیست بلکه مسئله اصلی درخواست مطلع کردن جامعه برای تهدیدی است که این بازی برای جوانان ایجاد میکند. لطفا با انتشار مطالب مربوط به بیانِ مضرات این بازی از خطرات آن جلوگیری کنید.
https://t.me/UnityLearning/1106
@UnityLearning
☠ فیلمی در شبکه های اجتماعی مبنی بر خودکشی افرادی ایرانی که بازی چالش نهنگ آبی را بازی کردند و به مراحل پایانی رسیده اند، منتشر شده است که البته هنوز توسط پلیس و وزارت ارتباطات تأیید نشده است. اما مسئله تأیید شدن یا نشدن فیلم نیست بلکه مسئله اصلی درخواست مطلع کردن جامعه برای تهدیدی است که این بازی برای جوانان ایجاد میکند. لطفا با انتشار مطالب مربوط به بیانِ مضرات این بازی از خطرات آن جلوگیری کنید.
https://t.me/UnityLearning/1106
@UnityLearning
🌹میلاد با سعادت حضرت امام کاظم، باب الحوائج را تبریک میگوییم.
🌷السلام علیک یا اباالحسن یا موسی بن جعفر
🌺برایتان بهترین لحظه ها را آرزومندیم.
🌸 @UnityLearning
🌷السلام علیک یا اباالحسن یا موسی بن جعفر
🌺برایتان بهترین لحظه ها را آرزومندیم.
🌸 @UnityLearning
🔹 نکاتی در رابطه با ساخت بازی
⭕ معرفی چند نکته برای برنامه نویسی بهتـــر و کاراتـــر در #یونیتی
🔹 همیشه سعی کنید، کدهایی که عملکرد اجرایی برای آبجکت خاصی ندارند را به Empty GameObject هایی با نام صحیح بدهید، منظور از این اسکریپت ها، اسکریپت هایی هستند که کاری روی آّبجکت خاصی انجام نمی دهند (مثل اسکریپت ساخت منو)- زیاد شدن این اسکریپت ها و عدم رعایت این موضوع باعث سردرگمی بازی ساز برای پیدا کردن آنها می شود.
🔸 اگــــر تکسچرهایی که در اختیار دارید، کیفیت بالایی ندارند و یا اینکه برای سایز کوچک طراحی شده اند، از کنار هم گذاشتن آبجکت ها برای ساخت یک آبجکت بزرگ استفاده کنید تا تکسچر آبجکت کیفیت خود را حفظ کند و بازی زیباتر به نظر برسد.
🔹 در اکثر مواقع سعی کنید، آبجکت های خود را دسته بندی کنید، برای دسته بندی یک سری آبجکت بعد از انتخاب آنها در #پنجره Hierarchy آنها را روی یک GameObject خالی درگ کنید، با این کار همه آبجکت ها به عنوان زیر مجموعه آبجکت مذکور خواهند شد و عملیاتی مثل جابجایی، چرخش و بزرگ کردن آن روی همه آبجکت های زیر مجموعه (فرزند-Child) اعمال می شود. حسن اصلی این کار شلوغ نشدن Hierarchy و دسترسی آسان به آبجکت هاست.
🔸 به برخی Warning هایی که در پنجره Debug نوشته می شود، توجه کنید. همه این هشدار ها قابل چشم پوشی نیستند و عمل کردن به آنها می تواند سرعت زیادی به انجام بازی بدهد.
🔹 همانطور که قبلا هم توضیح داده ایم ، سعی کنید در برنامه نویسی از توابعی که همیشه در حال اجرا هستند کمتر استفاده کنید (البته در برخی شرایط استفاده از آنها اجتناب ناپذیر است، اما سعی کنید تا جایی که می شود از آنها استفاده نگردد)
🔸 سعی کنید کدهایی که می نویسید، به صورت بهینه شده باشد. کد بهینه شده از نظر اشغال کردن منابع (مثل CPU پردازشی- Ram حافظه و...) کمترین میزان را برای بهترین نتیجه انتخاب می کنند. یعنی مثلا در آنها از انجام حلقه های بی مورد جلوگیری شده است که سرعت پردازش کد را بالا می برد یا میزان متغیرهای لازم برای اسکریپت را به حداقل رسانده که این حافظه رم مصرفی بازی را کاهش می دهد.
❗ عدم رعایت این موارد باعث می شود، بازی ساخته شده بدون دلیل با بهترین قابلیت(مد نظر) کار نکند و نتیجه مناسب از ساخت بازی توسط شما حاصل نمی شود.
#اسکریپت_نویسی #نکته #برنامه #یونیتی
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕ معرفی چند نکته برای برنامه نویسی بهتـــر و کاراتـــر در #یونیتی
🔹 همیشه سعی کنید، کدهایی که عملکرد اجرایی برای آبجکت خاصی ندارند را به Empty GameObject هایی با نام صحیح بدهید، منظور از این اسکریپت ها، اسکریپت هایی هستند که کاری روی آّبجکت خاصی انجام نمی دهند (مثل اسکریپت ساخت منو)- زیاد شدن این اسکریپت ها و عدم رعایت این موضوع باعث سردرگمی بازی ساز برای پیدا کردن آنها می شود.
🔸 اگــــر تکسچرهایی که در اختیار دارید، کیفیت بالایی ندارند و یا اینکه برای سایز کوچک طراحی شده اند، از کنار هم گذاشتن آبجکت ها برای ساخت یک آبجکت بزرگ استفاده کنید تا تکسچر آبجکت کیفیت خود را حفظ کند و بازی زیباتر به نظر برسد.
🔹 در اکثر مواقع سعی کنید، آبجکت های خود را دسته بندی کنید، برای دسته بندی یک سری آبجکت بعد از انتخاب آنها در #پنجره Hierarchy آنها را روی یک GameObject خالی درگ کنید، با این کار همه آبجکت ها به عنوان زیر مجموعه آبجکت مذکور خواهند شد و عملیاتی مثل جابجایی، چرخش و بزرگ کردن آن روی همه آبجکت های زیر مجموعه (فرزند-Child) اعمال می شود. حسن اصلی این کار شلوغ نشدن Hierarchy و دسترسی آسان به آبجکت هاست.
🔸 به برخی Warning هایی که در پنجره Debug نوشته می شود، توجه کنید. همه این هشدار ها قابل چشم پوشی نیستند و عمل کردن به آنها می تواند سرعت زیادی به انجام بازی بدهد.
🔹 همانطور که قبلا هم توضیح داده ایم ، سعی کنید در برنامه نویسی از توابعی که همیشه در حال اجرا هستند کمتر استفاده کنید (البته در برخی شرایط استفاده از آنها اجتناب ناپذیر است، اما سعی کنید تا جایی که می شود از آنها استفاده نگردد)
🔸 سعی کنید کدهایی که می نویسید، به صورت بهینه شده باشد. کد بهینه شده از نظر اشغال کردن منابع (مثل CPU پردازشی- Ram حافظه و...) کمترین میزان را برای بهترین نتیجه انتخاب می کنند. یعنی مثلا در آنها از انجام حلقه های بی مورد جلوگیری شده است که سرعت پردازش کد را بالا می برد یا میزان متغیرهای لازم برای اسکریپت را به حداقل رسانده که این حافظه رم مصرفی بازی را کاهش می دهد.
❗ عدم رعایت این موارد باعث می شود، بازی ساخته شده بدون دلیل با بهترین قابلیت(مد نظر) کار نکند و نتیجه مناسب از ساخت بازی توسط شما حاصل نمی شود.
#اسکریپت_نویسی #نکته #برنامه #یونیتی
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕ اسکریپت آماده حرکت یک آبجکت به سمت محل لمس شده
#درخواست
🔹 دستورات مربوط به بررسی Touch در #کلاس Input را قبلاً مورد بررسی قرار دادیم، اکنون قصد داریم اسکریپت آماده ای برای آن قرار دهیم. البته این اسکریپت درخواست برخی کاربران نیز بوده است.
🔸 اسکریپتی که در پست بعدی برای #دانلود قرار می گیرید، برای حرکت یک آبجکت در محیط «دو بعدی» به سمت محل لمس شده در بازی است، این اسکریپت همچنین سرعت حرکت آبجکت را نیز از ورودی دریافت می کند. برای بدست آوردن موقعیت لمس در این اسکریپت از پارامــــتر deltaPosition مربوط به Input.GetTouch استفاده شده است. حرکت آبجکت به سمت نقطه XY است که کاربر روی آن کلیک کرده (لمس کرده) است. (دقت کنید حرکت سه بعد داشته و موقعیت محل لمس در صفحه گوشی دو بعد- بنابراین برای این تبدیل به این صورت عمل شده است)
👈 اسکریپت آماده در پست بعدی قابل دانلود است.
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
#درخواست
🔹 دستورات مربوط به بررسی Touch در #کلاس Input را قبلاً مورد بررسی قرار دادیم، اکنون قصد داریم اسکریپت آماده ای برای آن قرار دهیم. البته این اسکریپت درخواست برخی کاربران نیز بوده است.
🔸 اسکریپتی که در پست بعدی برای #دانلود قرار می گیرید، برای حرکت یک آبجکت در محیط «دو بعدی» به سمت محل لمس شده در بازی است، این اسکریپت همچنین سرعت حرکت آبجکت را نیز از ورودی دریافت می کند. برای بدست آوردن موقعیت لمس در این اسکریپت از پارامــــتر deltaPosition مربوط به Input.GetTouch استفاده شده است. حرکت آبجکت به سمت نقطه XY است که کاربر روی آن کلیک کرده (لمس کرده) است. (دقت کنید حرکت سه بعد داشته و موقعیت محل لمس در صفحه گوشی دو بعد- بنابراین برای این تبدیل به این صورت عمل شده است)
👈 اسکریپت آماده در پست بعدی قابل دانلود است.
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
GetTouchPos.js
539 B
⭕ اسکریپت آماده برای بررسی محل لمس در گوشی ها
حرکت ساده در محور های XY نسبت به موقعیت لمس شده در صفحه گوشی
@UnityLearning
حرکت ساده در محور های XY نسبت به موقعیت لمس شده در صفحه گوشی
@UnityLearning
⭕ #بردار عمود بر دو بردار
🔹 در ریاضیات تعریف خاصی برای بردار عمود بر دو بردار (قوانین فیزیک در محاسبه جهت میدان مغناطیسی) وجود دارد. این بردار کاربردهای خاصی نیز در طراحی بازی دارد. طبق تعریف در ریاضیات، تنها یک بردار جهت دارد عمود بر دو بردار دیگر می تواند وجود داشته باشد.
🔸 در یونیتی با استفاده از #کلاس Vector3 می توان این بردار را محاسبه کرد. خروجی تابع Cross از این تابع یک بردار دیگر است که بر هر دو بردار ورودی عمود خواهد بود.
👈 #سی_شارپ
Vector3 perp = Vector3.Cross(s1, s2);
👈 #جاوا
var perp:Vector3 = Vector3.Cross(s1, s2);
▫ در اینجا متغیر perp بردار عمود بر دو بردار S1 و S2 خواهد بود.
#اسکریپت_نویسی
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
🔹 در ریاضیات تعریف خاصی برای بردار عمود بر دو بردار (قوانین فیزیک در محاسبه جهت میدان مغناطیسی) وجود دارد. این بردار کاربردهای خاصی نیز در طراحی بازی دارد. طبق تعریف در ریاضیات، تنها یک بردار جهت دارد عمود بر دو بردار دیگر می تواند وجود داشته باشد.
🔸 در یونیتی با استفاده از #کلاس Vector3 می توان این بردار را محاسبه کرد. خروجی تابع Cross از این تابع یک بردار دیگر است که بر هر دو بردار ورودی عمود خواهد بود.
👈 #سی_شارپ
Vector3 perp = Vector3.Cross(s1, s2);
👈 #جاوا
var perp:Vector3 = Vector3.Cross(s1, s2);
▫ در اینجا متغیر perp بردار عمود بر دو بردار S1 و S2 خواهد بود.
#اسکریپت_نویسی
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕️جهت بردار عمود بر دو بردار دیگر (بردار Result عمود بر دو بردار a و b)
🔸برای محاسبه این بردار از دستور Vector3.Cross استفاده می شود.
@UnityLearning
🔸برای محاسبه این بردار از دستور Vector3.Cross استفاده می شود.
@UnityLearning
This media is not supported in your browser
VIEW IN TELEGRAM
❓آیا میدانید بازی معروف Tetris که در سال 1984 ارائه شد، همچنان پر فروش ترین بازی تاریخ صنعت بازی سازی است.
این بازی تا کنون 170 میلیون دلار فروش داشته است که هیچ بازی تا کنون به این رقم نرسیده است❗️
این بازی تا کنون 170 میلیون دلار فروش داشته است که هیچ بازی تا کنون به این رقم نرسیده است❗️
⭕ بررسی حالات مختلف لمس (وضعیت های خاص در Touch) صفحه گوشی
🔸 همانطور که می دانید در #کلاس Input بـــرای بررسی حالت لمس صفحه از پارامتر Touch استفاده می شود. در این پست می خواهیم وضعیت های خاص مربوط به این پارامتر را بررسی کنیم.
🔹 منظور از وضعیت، حالت های مختلفی است که ممکن است برای لمس اتفاق بیافتد ( ابتدای لمس - جابجایی انگشت روی صفحه - برداشتن انگشت و...) کلیه این وضعیت ها در پارامتری به نام phase از Input.Toach قرار می گیرد.
▫ این حالت ها را در زیر بررسی می کنیم/👇
🔹 حالت Began: زمانی رخ می دهد که یک انگشت صفحه را لمس کند.
🔹 حالت Moved: زمانی رخ می دهد که انگشت همچنان با حفظ حالت لمس صفحه روی آن حرکت کند.
🔹 حالت End: زمانی اتفاق خواهد افتاد که انگشت از روی صفحه برداشته شود.
🔹 حالت خاص Canceled: این حالت زمانی رخ می دهد که برنامه به هر دلیل نتواند بررسی ها را انجام دهد، مثلا اینکه 5 انگشت با هم صفحه را لمس کنند و یا اینکه گوشی به صورت و یا قسمتی از بدن برخورد کند که فقط یک نقطه از گوشی لمس نمی شود.
🔰 مثال اگر در تابع Update یک اسکریپت عبارت شرطی زیر نوشته شود/👇
if (touch.phase == TouchPhase.Began)
به معنای آن خواهد بود که یک نقطه از صفحه لمس شده است. این دستور زمانی لازم است که فقط بخواهیم عمل مورد نظر ما فقط یک بار در هر بار لمس صفحه رخ دهد. زیرا اگر دستور فوق را نمی نوشتیم از زمان لمس صفحه را انتهایی که انگشت از روی صفحه بردشته می شد، عمل مورد نظر ما اجرا می شد.
👈 ضمنا همانطور که می دانید، دستور بالا باید در یک حلقه for قرار گرفته باشد تا هر لمس صفحه را بررسی کند (به علت اینکه برخی گوشی ها حالت پشتیبانی از چند لمسی را دارند و ممکن است در یک هم زمان چند انگشت صفحه را لمس کند که باید برای تک تک آنها بررسی انجام شود)
for (var touch : Touch in Input.touches)
♻ این حلقه تمامی لمس هایی که از صفحه صورت گرفته است را در متغیری به نام touch (شمارنده حلقه) قرار می دهد و می توانیم روی آن در بدنه حلقه بررسی های مورد نظر را انجام دهیم.
#اسکریپت_نویسی #کد_نویسی #جاوا
👈 اسکریپت آماده برای آموزش این قسمت در پست بعدی قرار خواهد گرفت. این اسکریپت یک آبجکت در هر بار لمس صفحه در محل آبجکتی که کد به آن متصل شده است، خواهد ساخت.
〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
🔸 همانطور که می دانید در #کلاس Input بـــرای بررسی حالت لمس صفحه از پارامتر Touch استفاده می شود. در این پست می خواهیم وضعیت های خاص مربوط به این پارامتر را بررسی کنیم.
🔹 منظور از وضعیت، حالت های مختلفی است که ممکن است برای لمس اتفاق بیافتد ( ابتدای لمس - جابجایی انگشت روی صفحه - برداشتن انگشت و...) کلیه این وضعیت ها در پارامتری به نام phase از Input.Toach قرار می گیرد.
▫ این حالت ها را در زیر بررسی می کنیم/👇
🔹 حالت Began: زمانی رخ می دهد که یک انگشت صفحه را لمس کند.
🔹 حالت Moved: زمانی رخ می دهد که انگشت همچنان با حفظ حالت لمس صفحه روی آن حرکت کند.
🔹 حالت End: زمانی اتفاق خواهد افتاد که انگشت از روی صفحه برداشته شود.
🔹 حالت خاص Canceled: این حالت زمانی رخ می دهد که برنامه به هر دلیل نتواند بررسی ها را انجام دهد، مثلا اینکه 5 انگشت با هم صفحه را لمس کنند و یا اینکه گوشی به صورت و یا قسمتی از بدن برخورد کند که فقط یک نقطه از گوشی لمس نمی شود.
🔰 مثال اگر در تابع Update یک اسکریپت عبارت شرطی زیر نوشته شود/👇
if (touch.phase == TouchPhase.Began)
به معنای آن خواهد بود که یک نقطه از صفحه لمس شده است. این دستور زمانی لازم است که فقط بخواهیم عمل مورد نظر ما فقط یک بار در هر بار لمس صفحه رخ دهد. زیرا اگر دستور فوق را نمی نوشتیم از زمان لمس صفحه را انتهایی که انگشت از روی صفحه بردشته می شد، عمل مورد نظر ما اجرا می شد.
👈 ضمنا همانطور که می دانید، دستور بالا باید در یک حلقه for قرار گرفته باشد تا هر لمس صفحه را بررسی کند (به علت اینکه برخی گوشی ها حالت پشتیبانی از چند لمسی را دارند و ممکن است در یک هم زمان چند انگشت صفحه را لمس کند که باید برای تک تک آنها بررسی انجام شود)
for (var touch : Touch in Input.touches)
♻ این حلقه تمامی لمس هایی که از صفحه صورت گرفته است را در متغیری به نام touch (شمارنده حلقه) قرار می دهد و می توانیم روی آن در بدنه حلقه بررسی های مورد نظر را انجام دهیم.
#اسکریپت_نویسی #کد_نویسی #جاوا
👈 اسکریپت آماده برای آموزش این قسمت در پست بعدی قرار خواهد گرفت. این اسکریپت یک آبجکت در هر بار لمس صفحه در محل آبجکتی که کد به آن متصل شده است، خواهد ساخت.
〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
Touch_Screen.js
492 B
⭕ اسکریپت آماده ساخت یک آبجکت در محل آبجکت دیگری که کد را به آن متصل کرده ایم، در زمــــان هر بار لمس صفحـــه
@UnityLearning
@UnityLearning
⭕️ منوی Mobile Input برای تست دستورات ورودی در موبایل
🔹 فعال و غیر فعال کردن حالت اجرای کد های Input.Touch در PC
@UnityLearning
🔹 فعال و غیر فعال کردن حالت اجرای کد های Input.Touch در PC
@UnityLearning
⭕️ آموزش استفاده از اپلیکیشن Unity Remote برای تست مستقیم بازی روی گوشی
🔹یونیتی یک اپلیکیشن بسیار کاربردی برای اجرای بازی ساخته شده به طور مستقیم در گوشی تلفن همراه، ارائه کرده است.
▫️منظور از تست مستقیم این است که زمانی که در یونیتی دکمه ▶️ (اجرای بازی) زده میشود بدون مشکل بازی روی گوشی (همزمان با کامپیوتر) اجرا شود و تست بازی در بهترین حالت انجام شود. اکثر نرم افزارهای قدرتمند که پلتفرم های مربوط به گوشی را پشتیبانی میکنند، از این قابلیت نیز پشتیبانی میکنند تا برنامه نویس بهترین نتیجه را بگیرد و مدام مجبور نباشد برنامه اش را Build کرده، به گوشی کپی کرده و در نهایت نصب کند تا تازه بتواند ایرادات آن را حل کند.
▪️برای استفاده از این قابلیت در یونیتی ابتدا حالت Debug Mode را در گوشی خود فعال کنید، بسته به نوع گوشی لازم است برنامه متناظر آن را نصب کنید. (مثلا نرم افزار HiSuite برای گوشی های هواوی یا Samsung PC Studio برای گوشی های سامسونگ)
🔸این برنامه معمولا در هنگام اولین اتصال گوشی به کامپیوتر برای نصب پیشنهاد داده میشود و میتوان آن را به راحتی نصب کرد.
👈حال برنامه Unity Remote را در گوشی اجرا و گوشی خود را با کابل به کامپیوتر متصل کنید و منتظر بمانید تا گوشی به طور کامل به کامپیوتر متصل گردد.
(کلیه پیغام های صبر کنید...، در حال اتصال و... باید از روی گوشی برداشته شود)
▪️◾️◼️در نهایت نوبت به انجام تنظیمات در #برنامه یونیتی است. برای انتخاب دستگاهی که باید بازی روی آن اجرا شود به پنجره Editor Settings بروید /👇
Edit > Project Settings > Editor
🔹در قسمت Unity Remote دستگاه مورد نظر(گوشی) خود را انتخاب کنید. همه چیز تمام است با انتخاب گزینه ▶️ (Play) بازی همزمان روی گوشی نیز اجرا خواهد شد.
#تست_مستقیم_روی_گوشی #یونیتی
❓سوال: آیا در هربار اجرا، بازی روی گوشی ما نصب میشود؟
✅پاسخ: خیر، برنامه Unity Remote تنها ظاهری از بازی را در گوشی به شما نمایش می دهد و اطلاعات که در گوشی وارد میشود (مثل لمس صفحه گوشی) را به اسکریپت های بازی ارسال میکند، در واقع یک شبیه سازی صورت میگیرد.
〰〰〰〰〰〰〰
⭕️ کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🔹یونیتی یک اپلیکیشن بسیار کاربردی برای اجرای بازی ساخته شده به طور مستقیم در گوشی تلفن همراه، ارائه کرده است.
▫️منظور از تست مستقیم این است که زمانی که در یونیتی دکمه ▶️ (اجرای بازی) زده میشود بدون مشکل بازی روی گوشی (همزمان با کامپیوتر) اجرا شود و تست بازی در بهترین حالت انجام شود. اکثر نرم افزارهای قدرتمند که پلتفرم های مربوط به گوشی را پشتیبانی میکنند، از این قابلیت نیز پشتیبانی میکنند تا برنامه نویس بهترین نتیجه را بگیرد و مدام مجبور نباشد برنامه اش را Build کرده، به گوشی کپی کرده و در نهایت نصب کند تا تازه بتواند ایرادات آن را حل کند.
▪️برای استفاده از این قابلیت در یونیتی ابتدا حالت Debug Mode را در گوشی خود فعال کنید، بسته به نوع گوشی لازم است برنامه متناظر آن را نصب کنید. (مثلا نرم افزار HiSuite برای گوشی های هواوی یا Samsung PC Studio برای گوشی های سامسونگ)
🔸این برنامه معمولا در هنگام اولین اتصال گوشی به کامپیوتر برای نصب پیشنهاد داده میشود و میتوان آن را به راحتی نصب کرد.
👈حال برنامه Unity Remote را در گوشی اجرا و گوشی خود را با کابل به کامپیوتر متصل کنید و منتظر بمانید تا گوشی به طور کامل به کامپیوتر متصل گردد.
(کلیه پیغام های صبر کنید...، در حال اتصال و... باید از روی گوشی برداشته شود)
▪️◾️◼️در نهایت نوبت به انجام تنظیمات در #برنامه یونیتی است. برای انتخاب دستگاهی که باید بازی روی آن اجرا شود به پنجره Editor Settings بروید /👇
Edit > Project Settings > Editor
🔹در قسمت Unity Remote دستگاه مورد نظر(گوشی) خود را انتخاب کنید. همه چیز تمام است با انتخاب گزینه ▶️ (Play) بازی همزمان روی گوشی نیز اجرا خواهد شد.
#تست_مستقیم_روی_گوشی #یونیتی
❓سوال: آیا در هربار اجرا، بازی روی گوشی ما نصب میشود؟
✅پاسخ: خیر، برنامه Unity Remote تنها ظاهری از بازی را در گوشی به شما نمایش می دهد و اطلاعات که در گوشی وارد میشود (مثل لمس صفحه گوشی) را به اسکریپت های بازی ارسال میکند، در واقع یک شبیه سازی صورت میگیرد.
〰〰〰〰〰〰〰
⭕️ کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ #پنجره Editor Setting بخش Unity Remote برای انتخاب دستگاه تلفن موبایل(متصل شده به کامپیوتر) در حالت Debug Mode باز بودن اپلیکیشن Unity Remote در آن
@UnityLearning
@UnityLearning
⭕️ اطلاعاتی که از گوشی در زمان اجرای بازی با Unity Remote به اسکریپت های بازی ارسال میشود، بدین شرح است /👇
🔹Touch and stylus input
🔹Accelerometer
🔹Gyroscope
🔹Device camera streams
🔹Compass
🔹GPS
🔹Joystick names and input
(این اطلاعات شامل کلیه موارد مربوط به لمس صفحه در گوشی، قطب نما، جی پی اس، دسته های بازی متصل به گوشی و... خواهد بود که به اسکریپت های بازی در یونیتی ارسال میشود و بر اساس آنها اسکریپت ها عمل خواهند کرد)
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🔹Touch and stylus input
🔹Accelerometer
🔹Gyroscope
🔹Device camera streams
🔹Compass
🔹GPS
🔹Joystick names and input
(این اطلاعات شامل کلیه موارد مربوط به لمس صفحه در گوشی، قطب نما، جی پی اس، دسته های بازی متصل به گوشی و... خواهد بود که به اسکریپت های بازی در یونیتی ارسال میشود و بر اساس آنها اسکریپت ها عمل خواهند کرد)
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
com.unity3d.genericremote.apk
19.4 MB
👆دانلود👆
آخرین نسخه اندروید ارائه شده از Unity Remote در گوگل پلی
🔸برای اجرای مستقیم حالت Play در برنامه روی گوشی
👇دانلود نسخه iOS 👇
آخرین نسخه اندروید ارائه شده از Unity Remote در گوگل پلی
🔸برای اجرای مستقیم حالت Play در برنامه روی گوشی
👇دانلود نسخه iOS 👇