در این نوشته میخوام با چند کد ساده در یونیتی چیزی شبیه به رابط کاربری درست کنیم که در اون کاربر بتونه از بین دو دوربین یکی رو روی اسلحهی وسط صحنه سوار کنه یا فقط یه دسته روش بزاره. برای راحتی کار صحنه رو آماده کردم که میتونید از این لینک از گیت هاب دانلود کنید یا با نرمافزار گیت هاب دسکتاپ بازش کنید که بهتره چون آپدیتهای بعدی رو هم میتونید راحت بگیرید. اسم فایل هم RifleScopes ﻪ که در پوشهی Scenes قرار داره.
صحنه آماده شده از چهار دکمه ساده تشکیل شده که برای هر دکمه یه تصویر ایجاد کردم که نمونه اون رو در تصویر زیر میبینید. در فایل سکریپت هم برای هر دکمه یه مِتد نوشتم که با کلیک کردن روی دکمه مربوط به خودش اجرا میشه که نحوهی نسبت دادن یه متد رو به یه دکمه در نوشتههای قبلی توضیح دادم.
تمامی کدهای نوشته شده برای این مثال رو هم در زیر میتونید ببینید. همون طور که در نوشتهی مربوط به آرایه هم توضیح دادم اینجا هم برای دسترسی به مدلها داخل صحنه از یه متغیر آرایهای استفاده کردم که بتونم مدلهای داخل یونیتی رو بهش وصل کنم. تا اینجا مطلب جدیدی نیست که در نوشتههای قبلی نباشه.
using UnityEngine;
public class rifleScopes : MonoBehaviour
{
public GameObject rifle;
public GameObject[] scopesHandle;
public void rifleOnOff()
{
if (rifle.activeSelf)
{
rifle.SetActive(false);
}
else
{
rifle.SetActive(true);
}
}
public void handle()
{
for (int i = 0; i < scopesHandle.Length; i++)
{
scopesHandle[i].SetActive(false);
}
scopesHandle[0].SetActive(true);
}
public void scopeA()
{
for (int i = 0; i < scopesHandle.Length; i++)
{
scopesHandle[i].SetActive(false);
}
scopesHandle[1].SetActive(true);
}
public void scopeB()
{
for (int i = 0; i < scopesHandle.Length; i++)
{
scopesHandle[i].SetActive(false);
}
scopesHandle[2].SetActive(true);
}
}
در خط هشتم یه متد تعریف کردم تا کل مدل اسلحه رو بشه در صحنه فعال یا غیر فعال کرد به این معنی که مدل رو روشن و خاموش کنه. نکتهی جدیدی که اینجا هست یکی کدیه که داخل پرانتزهای شرط در خط ۱۰ ﻪ که مانند یه سویچ عمل میکنه. کاری که میکنه اینه که چک میکنه ببینه گیم آبجکت مورد نظر در یونیتی فعاله یا نه یعنی اون تیک بالای پنجرهی اینسپکتِر روشنه یا نه. حالا اگه روشن بود با دستور داخل بدنه شرط غیر فعالش میکنه و برعکس.
برای اینکه راحت بشه با فعال کردن یه مدل مثل دوربین قرمز بقیه اونها مثل دوربین آبی و دسته رو غیر فعال کرد یه روش ساده انتخاب کردم که در سه متد بعدی در خطهای ۲۰، ۲۹ و ۳۸ استفاده کردم. ابتدا با یه لوپ فُر تمام مدلها رو غیر فعال و بعد مدلی که لازمه رو در خط بعدی فعال میکنم. این روش رو در تمام انتخابهای تکی بین یه تعداد موضوع میتونید استفاده کنید. ویدئوی زیر یه پروژهی شخصیه که در یونیتی دارم توسعه میدم که در اون از همین روش استفاده کردم.
مدلهای این پروژهی رو از وبسایت سکچفَب دانلود کردم که از لینکهای زیر میتونید چک کنید: