🔴 #خبر
☠ فیلمی در شبکه های اجتماعی مبنی بر خودکشی افرادی ایرانی که بازی چالش نهنگ آبی را بازی کردند و به مراحل پایانی رسیده اند، منتشر شده است که البته هنوز توسط پلیس و وزارت ارتباطات تأیید نشده است. اما مسئله تأیید شدن یا نشدن فیلم نیست بلکه مسئله اصلی درخواست مطلع کردن جامعه برای تهدیدی است که این بازی برای جوانان ایجاد میکند. لطفا با انتشار مطالب مربوط به بیانِ مضرات این بازی از خطرات آن جلوگیری کنید.
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 👇
⭕بررسی اتصال به اینترنت (ادامه مطالب مربوط به اتصال بازی به #اینترنت)
👈 همانطور که بیان شد، متغیرهای تعریف شده از #کلاس WWW یک پارامتر بسیار کاربردی برای بررسی خطاها دارد. نام این پارامتر error اســـت و برای بررسی نوع خطا، در آن قرار می گیرد.
🔸 قبلا بیان کردیم باید دستورات مربوط به دانلود را زمانی نوشت که متغیر isDown برابر true شده است. اما ممکن است در هنگام دانلود خطایی رخ دهد مثل اینکه به سیستم (یا گوشی) به نت متصل نباشد، در این صورت باید محتویات پارامتر error را بررسی کرد. در صورتی که این کار را انجام ندهیم و در هنگام داتلود خطایی رخ داده باشد و ما برای انجام کار خود پارامتر error را بررسی نکرده باشیم با خطای کامپایلری مواجه خواهیم شد. این خطا بدترین حالت ایجاد خطا در بازی هایی است که به طور کامل ساخته شده اند و باعث بسته شدن بازی خواهد شد. بنابراین همیشه قبل از استفاده از متغیر www (کـــه از کلاس WWW تعریـــف شده است) این پارامتر چک شود. در این پارامتر انواع خطاها قرار می گیرد که در پست های بعدی به زودی مورد بررسی قرار خواهند گرفت. راحت ترین کار برای عدم مواجهه با این خطا ها به راحتی تست error به شکل زیر است/👇
if(www.error==null)
🔹 این حالت بررسی می کند آیا دانلود با خطا مواجه شده است یا خیر؟ (بررسی پارامتر error با مقدار null یعنی هیچ خطایی رخ نداده باشد) - بنابراین اگر می خواهید اسکریپت های قبل را تکمیل کنید، خط مشخص شده را به اسکریپت خود اضافه کنید. (این اسکریپت قرار دادن تکسچر دانلود شده برای آبجکت جاری است- که حتما متوجه شدید 👈 وقتی به اینترنت متصل نیستید، این اسکریپت خطا می دهد، بـــرای رفع این مشکل خط مشخص شده را در بین دو دستور قرار دهید)
while(!www.isDone);
🔹 if(www.error==null) 🔹
renderer.material.mainTexture = www.texture;
(فرض کنید متغیر www از نوع کلاس WWW است)
#بررسی_اتصال_به_اینترنت #دانلود #برنامه #یونیتی #اسکریپت_نویسی
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
👈 همانطور که بیان شد، متغیرهای تعریف شده از #کلاس WWW یک پارامتر بسیار کاربردی برای بررسی خطاها دارد. نام این پارامتر error اســـت و برای بررسی نوع خطا، در آن قرار می گیرد.
🔸 قبلا بیان کردیم باید دستورات مربوط به دانلود را زمانی نوشت که متغیر isDown برابر true شده است. اما ممکن است در هنگام دانلود خطایی رخ دهد مثل اینکه به سیستم (یا گوشی) به نت متصل نباشد، در این صورت باید محتویات پارامتر error را بررسی کرد. در صورتی که این کار را انجام ندهیم و در هنگام داتلود خطایی رخ داده باشد و ما برای انجام کار خود پارامتر error را بررسی نکرده باشیم با خطای کامپایلری مواجه خواهیم شد. این خطا بدترین حالت ایجاد خطا در بازی هایی است که به طور کامل ساخته شده اند و باعث بسته شدن بازی خواهد شد. بنابراین همیشه قبل از استفاده از متغیر www (کـــه از کلاس WWW تعریـــف شده است) این پارامتر چک شود. در این پارامتر انواع خطاها قرار می گیرد که در پست های بعدی به زودی مورد بررسی قرار خواهند گرفت. راحت ترین کار برای عدم مواجهه با این خطا ها به راحتی تست error به شکل زیر است/👇
if(www.error==null)
🔹 این حالت بررسی می کند آیا دانلود با خطا مواجه شده است یا خیر؟ (بررسی پارامتر error با مقدار null یعنی هیچ خطایی رخ نداده باشد) - بنابراین اگر می خواهید اسکریپت های قبل را تکمیل کنید، خط مشخص شده را به اسکریپت خود اضافه کنید. (این اسکریپت قرار دادن تکسچر دانلود شده برای آبجکت جاری است- که حتما متوجه شدید 👈 وقتی به اینترنت متصل نیستید، این اسکریپت خطا می دهد، بـــرای رفع این مشکل خط مشخص شده را در بین دو دستور قرار دهید)
while(!www.isDone);
🔹 if(www.error==null) 🔹
renderer.material.mainTexture = www.texture;
(فرض کنید متغیر www از نوع کلاس WWW است)
#بررسی_اتصال_به_اینترنت #دانلود #برنامه #یونیتی #اسکریپت_نویسی
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕️ بررسی میزان حجم دانلود شده توسط کلاس WWW
📈 در صورتی بخواهیم بررسی کنیم دستور دانلود در کلاس WWW چه میزان حجمی را دانلود کرده است از پارامتر bytesDownloaded استفاده میکنیم. /👇
net.bytesDownloaded
🔹بنابراین اگر درخواست دانلود سایتی مثل گوگل را داشته باشیم و بخواهیم بررسی کنیم تا کنون چه حجمی از این سایت دانلود شده است مثل زیر عمل خواهیم کرد /👇
WWW net = new WWW("https://google.com");
if ( net.bytesDownloaded .....
👈این پارامتر یک متغیر عددی integer است که میزان حجم دانلود شده از url مورد نظر را بر حسب بایت در خود ذخیره میکند.
❗️ #نکته قابل ذکر: در زمان عدم اتصال رایانه (یا هر دستگاه دیگر که بازی روی آن اجرا می شود) ، به اینترنت این پارامتر برابر صفر ( 0 ) خواهد بود. بنابراین از سایر روش های بررسی اتصال به اینترنت چک کردن «صفر نبودن» این پارامتر است /👇
while (net.isDone);
if (net.bytesDownloaded == 0)
{
Debug.Log("No Internet Connection");
return;
}
#بررسی_اتصال_به_اینترنت #دانلود #اینترنت #اسکریپت_نویسی #سی_شارپ
〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
📈 در صورتی بخواهیم بررسی کنیم دستور دانلود در کلاس WWW چه میزان حجمی را دانلود کرده است از پارامتر bytesDownloaded استفاده میکنیم. /👇
net.bytesDownloaded
🔹بنابراین اگر درخواست دانلود سایتی مثل گوگل را داشته باشیم و بخواهیم بررسی کنیم تا کنون چه حجمی از این سایت دانلود شده است مثل زیر عمل خواهیم کرد /👇
WWW net = new WWW("https://google.com");
if ( net.bytesDownloaded .....
👈این پارامتر یک متغیر عددی integer است که میزان حجم دانلود شده از url مورد نظر را بر حسب بایت در خود ذخیره میکند.
❗️ #نکته قابل ذکر: در زمان عدم اتصال رایانه (یا هر دستگاه دیگر که بازی روی آن اجرا می شود) ، به اینترنت این پارامتر برابر صفر ( 0 ) خواهد بود. بنابراین از سایر روش های بررسی اتصال به اینترنت چک کردن «صفر نبودن» این پارامتر است /👇
while (net.isDone);
if (net.bytesDownloaded == 0)
{
Debug.Log("No Internet Connection");
return;
}
#بررسی_اتصال_به_اینترنت #دانلود #اینترنت #اسکریپت_نویسی #سی_شارپ
〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
Textures_TilesBroken0024_1_seamless_S.jpg
1.1 MB
⭕️ #تکسچر کاشی مربعی، مناسب برای دیوارها و کف
🔹اندازه تکسچر نیز به صورت مربعی (1024*1024) است.
🔸برای دریافت بهترین نتیجه تکسچر را تکرار کنید. (یعنی برای یک دیوار چند تکسچر را کنار هم قرار دهید)
🔹اندازه تکسچر نیز به صورت مربعی (1024*1024) است.
🔸برای دریافت بهترین نتیجه تکسچر را تکرار کنید. (یعنی برای یک دیوار چند تکسچر را کنار هم قرار دهید)
⭕️ ارسال اطلاعات به سرور
🔹تاکنون در مورد دریافت اطلاعات از #اینترنت مطالبی را قرار دادیم، اکنون لازم است مطالب مربوط به ارسال فرم اطلاعاتی به سرور را بیان کنیم.
▪️برای ارسال اطلاعات به سرور از کلاس WWWForm استفاده میشود، این کلاس با توابع خاصی که دارد اطلاعاتی که باید به سرور ارسال شود را دریافت میکند و سپس به کمک کلاس WWW این اطلاعات به سرور ارسال خواهد است.
WWWForm form = new WWWForm();
▫️توابعی که برای ارسال اطلاعات به این متغیر استفاده میشود به شرح زیر است. (این توابع در پست های بعدی مفصلا توضیح داده خواهند شد)
form.AddField
form.AddBinaryData
👈با دستور زیر که متغیری از #کلاس WWW تعریف میکند، آنچه در متغیر form است به سرور که آدرس آن در پارامتر اول داده شده است ارسال میشود/👇
WWW w = new WWW(ServerURL, form);
(بنابراین دقت نمایید اگر دستور فوق 👆 با یک پارامتر آدرس سایت نوشته شود، اطلاعات را از آن سایت دریافت میکند و اگر به نحو بالا با دو پارامتر نوشته شود اطلاعات موجود در پارامتر دوم از نوع WWWForm را به سرور با آدرس پارامتر اول ارسال میکند)
🔸بنابراین همانطور که مشاهده میکنید، ساخت بازی های آنلاین نیاز به خرید سرور و داشتن آدرس اینترنتی شخصی برای بازی است و ارسال پارامتر به آن باید بر اساس آن انجام گردد.
🔹اسکریپت های آماده ای برای آموزش کلی ارسال اطلاعات به اینترنت در پست های بعدی قرار خواهد گرفت. توضیح توابع ذکر شده را در آینده بیان خواهیم کرد.
#سی_شارپ #اسکریپت_نویسی #یونیتی
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🔹تاکنون در مورد دریافت اطلاعات از #اینترنت مطالبی را قرار دادیم، اکنون لازم است مطالب مربوط به ارسال فرم اطلاعاتی به سرور را بیان کنیم.
▪️برای ارسال اطلاعات به سرور از کلاس WWWForm استفاده میشود، این کلاس با توابع خاصی که دارد اطلاعاتی که باید به سرور ارسال شود را دریافت میکند و سپس به کمک کلاس WWW این اطلاعات به سرور ارسال خواهد است.
WWWForm form = new WWWForm();
▫️توابعی که برای ارسال اطلاعات به این متغیر استفاده میشود به شرح زیر است. (این توابع در پست های بعدی مفصلا توضیح داده خواهند شد)
form.AddField
form.AddBinaryData
👈با دستور زیر که متغیری از #کلاس WWW تعریف میکند، آنچه در متغیر form است به سرور که آدرس آن در پارامتر اول داده شده است ارسال میشود/👇
WWW w = new WWW(ServerURL, form);
(بنابراین دقت نمایید اگر دستور فوق 👆 با یک پارامتر آدرس سایت نوشته شود، اطلاعات را از آن سایت دریافت میکند و اگر به نحو بالا با دو پارامتر نوشته شود اطلاعات موجود در پارامتر دوم از نوع WWWForm را به سرور با آدرس پارامتر اول ارسال میکند)
🔸بنابراین همانطور که مشاهده میکنید، ساخت بازی های آنلاین نیاز به خرید سرور و داشتن آدرس اینترنتی شخصی برای بازی است و ارسال پارامتر به آن باید بر اساس آن انجام گردد.
🔹اسکریپت های آماده ای برای آموزش کلی ارسال اطلاعات به اینترنت در پست های بعدی قرار خواهد گرفت. توضیح توابع ذکر شده را در آینده بیان خواهیم کرد.
#سی_شارپ #اسکریپت_نویسی #یونیتی
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
SendScreenShotToServer.js
1.2 KB
اسکریپت آماده ارسال یک اسکرین شات از صفحه بازی به سروری که در ابتدا وارد می شود. (url باید آدرس فایلی باشد که آپلود می شود و یا اینکه فرمی باشد که اطلاعات به آن ارسال می گردد)
به زبان #جاوا اسکریپت
به زبان #جاوا اسکریپت