نمایش نتایج: از 1 به 2 از 2

موضوع: inventory system

  1. Top | #1

    عنوان کاربر
    تاریخ عضویت
    Jul 2017
    شماره عضویت
    8356
    نوشته ها
    4
    تشکر
    1
    تشکر شده 0 بار در 0 ارسال

    Solved inventory system

    با سلام خدمت دوستان میخوام برای بازیم یک سیستم Inventory مثل رزیدنت اویل کلاسیک بزارم از روی اموزش ها یک سری چیزها رو ساختم اما این که بعضی ایتم ها مثل خشاب بخوان روی هم جمع بشن رو بلد نیستم اموزشی که من از روی اون پیش رفتم اول میاد ScriptableObjects درست میکنه بعد اون ها رو داخل یه لیست ذخیره میکنه و با UI نشون میده

    مشکل اینجاست که برای ایتم های تکی مثل کلید و اسلحه و اینا خوبه اما برای مثلا خشاب (اگر داخل Inventory بود خشاب جدید که میشه یه ایتم جدید اضافه نکنه و فقط به تعداد همون خشاب موجود اضافه کنه )

    اما دقیقاً میاد و یک خشاب جدید اضافه میکنه من میخوام فقط چک کنه اگر خشاب داخل Inventory بود به تعداد خشاب مثلا 10 تا اضافه کنه اگر نبود یک خشاب جدید بسازه و کار به قبلی نداشته باشه

    من کد زیر رو زدم و هر بار با اینکه خشاب داخل Inventory هست بازم اضافه میکنه

    if (items.Count >= space)
    {
    Debug.Log("Not Enoughe Space In Your Inventory");
    return false;
    }


    items.Add((item));


    if (onItemChangedCallback != null)
    onItemChangedCallback.Invoke();


    currentSpace = items.Count;


    return true;
    }

    اومدم از دستور Contains استفاده کردم و کد زیر رو زدم

    if (items.Contains(item))
    {
    item.currentValue += item.addValue;


    if (onItemChangedCallback != null)
    onItemChangedCallback.Invoke();


    currentSpace = items.Count;
    return true;
    }
    else
    {
    if (items.Count >= space)
    {
    Debug.Log("Not Enoughe Space In Your Inventory");
    return false;
    }


    items.Add(Instantiate(item));


    if (onItemChangedCallback != null)
    onItemChangedCallback.Invoke();


    currentSpace = items.Count;


    return true;
    }
    اما چون اون قسمتی که گفتم ایتم رو اضافه کنه گفتم ایتم جدیدی ایجاد کنه ایتم قبلی رو با ID جدید میسازه پس نمیتونه تشخیص بده که یکی از همون ایتم هست و نسازه
    اگر بگم ایتم جدید نساز و ScriptObject قبلی رو تغییر بده میره اون که داخل پوشه اصلی همون اول ساختی رو تغییر میده مثلا تعدادش ۱۰ بوده میاد ۱۰ تا اضافه میکنه میشه ۲۰ تا دفعه بعدی که خشاب برداری ۲۰ تا دیگه بش اضافه میکنه میشه ۴۰ همینجوری دوبله دوبله میره بالا مشکل همینجا ختم نمیشه شاید شما این ایتم رو گذاشتی داخل یه صندوق و خواست یه خشاب جدید ۱۰ تایی بسازه وقتی میاد سر این کد خب میاد Scripobject رو دوباره میخونه و تعداد خشاب رو ۴۰ نشون میده و ایتم قبلی رو هم که از صندوق برداری ۴۰ تا دیگه هم داری چون رفرنس هر دو ایتم همون ScriptableObjectie که به عنوان مثال اول ساختی

    نمیدونم منظورم رو درست رسوندم یا نه

    لطفاْ اگر میتونید کمک کنید جواب بدید چون من این موضوع رو واقعاً متوجه نمیشم و سر این لیست و ارایه ها مشکل دارم
    اگر فکر میکنید با پروژه بهتر متوجه میشید بگید تا یک جا اپلودش کنم و کارمو راه بندازید

    واقعاً ممنونتون میشم
    ویرایش توسط General-Sherman : 10-20-2020 در ساعت 03:48 PM

  2. Top | #2

    عنوان کاربر
    تاریخ عضویت
    Jul 2017
    شماره عضویت
    8356
    نوشته ها
    4
    تشکر
    1
    تشکر شده 0 بار در 0 ارسال
    دمتون گرم و ممنون از این همه همکاری
    خودم حلش کردم

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

بازدید کنندگانی که با جست و جو این صفحه را مشاهده کرده اند:

Nobody landed on this page from a search engine, yet!

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •