تبلیغات
تبلیغات
تبلیغات
تبلیغات

کد نویسی چیدن گیم آبجکت ها
(1 مشاهده) (1) مهمان
  • صفحه:
  • 1

موضوع: کد نویسی چیدن گیم آبجکت ها

کد نویسی چیدن گیم آبجکت ها 1 هفته, 6 روز پیش #140550

  • start777
  • آفلاین
  • کاربر تازه وارد
  • ارسال: 18
  • دریافت تشكر: 4
  • 
سلام
لطفا راهنمایی کنید کد نویسی ( سی شارپ ) برای بازی شبیه تصاویر زیر انجام بدم به گونه ای که وقتی بازیکن یک شکل را لمس کرد اون شکل بره بالا سمت راست صفحه و به اندازه کوچک قرار بگیره . و وقتی شکل دیگری رو لمس کرد بره در جایگاه دوم قرار بگیره و الی آخر . با تشکر





پاسخ: کد نویسی چیدن گیم آبجکت ها 1 هفته, 2 روز پیش #140579

  • Jinjer
  • آفلاین
  • کاربر تازه وارد
  • ارسال: 13
  • دریافت تشكر: 10
خدا خیرت بده این خودش یه پروژه کامله!
سعی می کنم کوتاه باشه جواب...

این اسکریپت ها با عکس Canvas کار می کنه. یعنی باید حتما عکس های شماره دار باشه نه Text روی عکس ها.
اول روی تک تک مربع های خالی این اسکریپت رو میندازی که متوجه بشیم آیا خالی هست یا نه.
using UnityEngine;
using UnityEngine.UI;

public class TileView : MonoBehaviour
{
    public Image tileImage;

    private bool isEmpty = true;

    private void Awake()
    {
        if (tileImage == null)
            tileImage = GetComponent<Image>();
    }

    public void SwitchImage(Sprite sprite)
    {
        isEmpty = false;
        tileImage.sprite = sprite;
    }

    public bool IsEmpty()
    {
        return isEmpty;
    }
}

مقدار tileImage رو باید بهش بدی. اگر ندادی حتما اسکریپت روی آبجکتی باشه که کامپوننت Image روش هست.

بعد روی تک تک اون عکس های شماره دار هم اسکریپت زیر رو میذاری:

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class PieceView : MonoBehaviour, IPointerClickHandler
{
    public TileController tileController;
    public Sprite sprite;

    private void Awake()
    {
        if (sprite == null)
            sprite = GetComponent<Image>().sprite;
    }

    public void OnPointerClick(PointerEventData eventData)
    {
        tileController.SetNextEmptyTile(sprite);
        gameObject.SetActive(false);
    }
}

بازم اینجا مقدار sprite رو قرار بده یا روی اون آبجکتی باشه که Image داره.
مقدار tileController هم آبجکتی هست که اسکریپت بعدی رو روش انداختی.

حالا یه GameObject خالی میسازی این اسکریپت رو روش میندازی:
using UnityEngine;

public class TileController : MonoBehaviour
{
    public TileView[] tileViews;

    public void SetNextEmptyTile(Sprite sprite)
    {
        for (int i = 0; i < tileViews.Length; i++)
        {
            if(tileViews[i].IsEmpty())
            {
                tileViews[i].SwitchImage(sprite);
                return;
            }
        }
    }
}


مقدار tileViews رو باید توی Inspector قرار بدی. همه اون خونه های خالی که روشون اسکریپت هست رو باید بندازی توی این آرایه. این یه آرایه ای از همون کلاس TileView هست که ساختی و روی خونه های خالی انداختی.

همه اینارو که قرار بدی کلیک یا تاچ کردن روی اون اعداد باعث میشه Image اون خونه های خالی تغییر پیدا کنه به Sprite اون اعداد و بعدش اون عدد خاموش میشه.

راه دیگه ای هم داره که Position اون اعداد رو مساوی Position خونه های خالی قرار بدی و حتما اندازه اون عکس اعداد هم باید بشه به اندازه خونه خالی. اگر بخوای انیمیشن هم داشته باشه شاید این راه بهتری باشه.
آخرین ویرایش: 1 هفته, 2 روز پیش ارسال توسط Jinjer.
كاربران زیر تشكر كردند: کورش
  • صفحه:
  • 1
زمان ایجاد صفحه: 0.12 ثانیه

جدیدترین آثار ارسالی در گالری

تبلیغات
تبلیغات

جدیدترین ارسالهای تالارگفتگو