atlasgames-repo / fortress-defense

The unity fortress defense project
8 stars 0 forks source link

Feat: Shop #171

Closed m-nt closed 1 week ago

m-nt commented 1 month ago

یسری مشکلات هست که حل نشده! اررور در سکانس Player atlas و Play atlas test:

MissingReferenceException: The object of type 'Image' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
UnityEngine.EventSystems.UIBehaviour.IsActive () (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/UIBehaviour.cs:28)
UnityEngine.UI.Graphic.SetLayoutDirty () (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Graphic.cs:269)
UnityEngine.UI.Graphic.SetAllDirty () (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Graphic.cs:246)
UnityEngine.UI.Image.set_sprite (UnityEngine.Sprite value) (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Image.cs:298)
CameraController.Move () (at Assets/_FD/Script/CameraController.cs:51)
CameraController+<Start>d__21.MoveNext () (at Assets/_FD/Script/CameraController.cs:38)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at <31d5d65b32ec483292e13e8ae4100b93>:0)
UnassignedReferenceException: The variable shieldBubbleMinHealth of TheFortrest has not been assigned.
You probably need to assign the shieldBubbleMinHealth variable of the TheFortrest script in the inspector.
TheFortrest.DeActivateShield () (at Assets/_FD/Script/TheFortrest.cs:104)
TheFortrest.Start () (at Assets/_FD/Script/TheFortrest.cs:85)

برخی آبجکت های اضافه شده به سکانس ها به صورت prefab نیستند. image image image

m-nt commented 1 month ago

من تا حد ممکن تمیز کردم برنچ رو. menu manager خراب بود درستش کردم ولی boost item اطلاعاتشو از دست داد نیاز داره تنظیم بشه. سکانس Play Atlas Testing و Play atlas این اررور هارو داره:

NullReferenceException: Object reference not set to an instance of an object
UI_UI.DeactivateShield () (at Assets/_FD/Script/GUI/UI_UI.cs:84)
MenuManager.DeactivateShield () (at Assets/_FD/Script/GUI/MenuManager.cs:78)
TheFortrest.DeActivateShield () (at Assets/_FD/Script/TheFortrest.cs:106)
TheFortrest.Start () (at Assets/_FD/Script/TheFortrest.cs:85)
NullReferenceException: Object reference not set to an instance of an object
BuyCharacterBtn.GetPetData (System.Int32 id) (at Assets/_FD/Script/BuyCharacterBtn.cs:172)
BuyCharacterBtn.Start () (at Assets/_FD/Script/BuyCharacterBtn.cs:58)
IndexOutOfRangeException: Index was outside the bounds of the array.
BoostItemUI.Start () (at Assets/_FD/Script/BoostItemUI.cs:100)
IndexOutOfRangeException: Index was outside the bounds of the array.
BoostItemUI.Update () (at Assets/_FD/Script/BoostItemUI.cs:192)
NullReferenceException: Object reference not set to an instance of an object
UI_UI.Update () (at Assets/_FD/Script/GUI/UI_UI.cs:47)
IndexOutOfRangeException: Index was outside the bounds of the array.
BoostItemUI.Update () (at Assets/_FD/Script/BoostItemUI.cs:192)
NullReferenceException: Object reference not set to an instance of an object
UI_UI.Update () (at Assets/_FD/Script/GUI/UI_UI.cs:47)
NullReferenceException: Object reference not set to an instance of an object
CameraController.Move () (at Assets/_FD/Script/CameraController.cs:51)
CameraController+<Start>d__21.MoveNext () (at Assets/_FD/Script/CameraController.cs:38)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at <31d5d65b32ec483292e13e8ae4100b93>:0)
amirsafaricg commented 1 month ago

@m-nt لطفا ریویو کنید

m-nt commented 1 month ago

اررور داریم: شرایط تست: همه Player prefs ها پاک شده و از سکانس Menu atlas Test یا Login شروع کرده به بازی. وارد shop شده و یک آیتم خریداری کرده. وقتی مجدد وارد شاپ میشویم این اررور ایجاد میشه. کامیت مورد نظر https://github.com/atlasgames-repo/fortress-defense/pull/171/commits/e8172620eaae42eb9e1b37af588699bb4bc9d001

ArgumentOutOfRangeException: The added or subtracted value results in an un-representable DateTime.
Parameter name: value
System.DateTime.AddTicks (System.Int64 value) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.DateTime.Add (System.Double value, System.Int32 scale) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.DateTime.AddSeconds (System.Double value) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
TimedItemManager.Update () (at Assets/Atlas games/Scripts/DoubleXPItem/TimedItemManager.cs:92)

پیشنهاد: این مشکل از جایی میاد که مقدار MainTimeDeference در Player prefs این هست: -6.386444E+10 این مقدار قابل قبول نیست برای این خط کد در TimedItemManager :

    void Update()
    {
        if (GlobalValue.GetItemState(itemName))
        {
            if (DateTime.Now.AddSeconds(GlobalValue.MainTimeDifference) >
                ConvertedStringToDate(GlobalValue.ItemOpened(itemName))
                    .AddHours(itemDuration()))
            {
                GlobalValue.SetItemState(false,itemName);
            }
        }
    }
m-nt commented 1 month ago

در کد ItemActivator.cs خط 22 کد TimedItemManager.CounterText صدا زده میشه که مقدار itemName یک رشته خالی هست. مقدار متغییر ها در عکس زیر هست. image

همونطور که تو عکس مشخصه متغییر newDifferenseSeconds هم همین مشکل رو داره که مقدار بسیار بزرگ منفی 60 میلیون رو میگیره و ساختن TimeSpan با این مقدار ممکن نیست و اررور داره:

ArgumentOutOfRangeException: The added or subtracted value results in an un-representable DateTime.
Parameter name: value
System.DateTime.AddTicks (System.Int64 value) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.DateTime.Add (System.Double value, System.Int32 scale) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.DateTime.AddSeconds (System.Double value) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
TimedItemManager.CounterText (System.String theItemName) (at Assets/Atlas games/Scripts/DoubleXPItem/TimedItemManager.cs:117)
ItemActivator.CheckValue () (at Assets/Atlas games/Scripts/DoubleXPItem/ItemActivator.cs:22)
ItemActivator.Update () (at Assets/Atlas games/Scripts/DoubleXPItem/ItemActivator.cs:14)
m-nt commented 1 month ago

در دو مورد بالا که اشاره شد مشکل اصلی به نظرم از کد GetCuuentDataAndTime میاد و باید چک کنی که فرمت اش درسته یا نه و زمانی که برمیگردونه مشکل نداشته باشه حتی اگه کابر آفلاین هست

m-nt commented 1 month ago

مشکل رو ردگیری کردم و از خط 52 تا 57 کد TimedItemManager میاد. و وقتی زمان رو از api دریافت میکنی به صورت دستی زمانی که میسازی "2024-10-1318:44:45" این هست که در متقییر finalDatetime ذخیره میشه. که این با فرمتی که گفته شده تفاوت داره. در کل این مشک از فرمت زمانی میاد. پیشنهاد من این تغییراته: image image image image image

m-nt commented 1 month ago

مشکل در انتخاب pet در سکانس Playing atlas. دکمه انتخاب pet بی تاثیر بوده و فقط فلش نمایش انتخاب pet رو اضافه میکنه به صفحه. در ابتدای بازی هم به صورت پیشفرض فلش های انتخاب pet مشخص هست که باید مخفی بشه یا در شروع بازی عمل مخفی سازی انجام بشه. کد مورد نظر برای چک کردن هم BuyCharacterBtn از خط 50 هست. این احتمالا بخواطر خراب شدن menu manager و restore کردنش از برنچ آپدیت بوده که تغییرات تو روی سکانس از دست رفته . لطفا تغییرات رو درست کن و حتما و حتما اونایی که رفرنس به سکانس ندارن رو روی پریفب ذخیره کن که اینطوری از دست نره image

amirsafaricg commented 1 month ago

@m-nt سلام بی زحمت بررسی کنید که بریم برای مرج مشکلاتی که گفتید رفع شدن بی زحمت به قسمت هایی که string رو به DateTime تبدیل میکنن دست نزنین که از کار نیوفتن تشکر. استفاده ای که کردم همراه با تست بوده.

برای اینکه پروژه کار کنه هم پریفب TimeChecker که توی پوشه زیر قرار داره توی اولین صحنه‌ای که بازی باز میشه میره توش قرار بدید.

\fortress-defense\Assets\Atlas games\Scripts\Shop\Prefab

amirsafaricg commented 1 month ago

@m-nt زحمتتون بی زحمت ریویو کنید مشکلاتی که فیلم فرستادید حل شد توی تلگرام هم دلیلشون توضیح داده شد تشکر، conflictهم سر بروز شدن پریفب هوم منو resolve شد

m-nt commented 1 month ago

اررور داریم: بعد از استفاده از حباب، و رفتن به مرحله بعد این اتفاق میوفته که health قلعه دیگه نمایش داده نمیشه و بوست آیتم های انتخابی حباب سم و چوب بود که توی تصویر میبینی ک بعد از استفاده و مصرف شدنش به طور کامل به یک گذینه پیشفرض رفته ولی این اررور رو داره.

IndexOutOfRangeException: Index was outside the bounds of the array.
BoostItemUI.UseItem (System.Int32 index) (at Assets/_FD/Script/BoostItemUI.cs:179)
UnityEngine.Events.InvokableCall`1[T1].Invoke (T1 args0) (at <31d5d65b32ec483292e13e8ae4100b93>:0)
UnityEngine.Events.CachedInvokableCall`1[T].Invoke (System.Object[] args) (at <31d5d65b32ec483292e13e8ae4100b93>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <31d5d65b32ec483292e13e8ae4100b93>:0)
UnityEngine.UI.Button.Press () (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:68)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:110)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:262)
UnityEngine.EventSystems.EventSystem:Update() (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/EventSystem.cs:385)

image

m-nt commented 1 month ago

مشکل بعدی: بعد از استفاده از چوب ابعاد دشمن بزرگ میشه: اررور:

IndexOutOfRangeException: Index was outside the bounds of the array.
BoostItemUI.UseItem (System.Int32 index) (at Assets/_FD/Script/BoostItemUI.cs:184)
UnityEngine.Events.InvokableCall`1[T1].Invoke (T1 args0) (at <31d5d65b32ec483292e13e8ae4100b93>:0)
UnityEngine.Events.CachedInvokableCall`1[T].Invoke (System.Object[] args) (at <31d5d65b32ec483292e13e8ae4100b93>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <31d5d65b32ec483292e13e8ae4100b93>:0)
UnityEngine.UI.Button.Press () (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:68)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:110)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:262)
UnityEngine.EventSystems.EventSystem:Update() (at C:/Program Files/Unity/Hub/Editor/2020.2.5f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/EventSystem.cs:385)

image

m-nt commented 1 month ago

کد TimeChecker مشکل داره، این اررور رو میده:

ArgumentNullException: String reference not set to an instance of a String.
Parameter name: s
System.DateTimeParse.Parse (System.String s, System.Globalization.DateTimeFormatInfo dtfi, System.Globalization.DateTimeStyles styles) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.DateTime.Parse (System.String s, System.IFormatProvider provider, System.Globalization.DateTimeStyles styles) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
TimeChecker+<Awake>d__15.MoveNext () (at Assets/Atlas games/Scripts/DoubleXPItem/TimeChecker.cs:44)
--- End of stack trace from previous location where exception was thrown ---
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__6_0 (System.Object state) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
UnityEngine.UnitySynchronizationContext+WorkRequest.Invoke () (at <31d5d65b32ec483292e13e8ae4100b93>:0)
UnityEngine.UnitySynchronizationContext:ExecuteTasks()
m-nt commented 1 month ago

راجع به بزرگ شدن اندازه دشمن ها وقتی در حاله ضربه زدن به قلعه هستن اتفاق میوفته

m-nt commented 1 month ago

بعد از استفاده از shield در مراحل بعدی دیگه جون عادی قلعه رو نشون نمیده: image

m-nt commented 1 month ago

در بوست آیتم cool down کار نمیکنه: و اعداد نمایش داده شده اشتباهه image image

amirsafaricg commented 1 month ago

@m-nt

m-nt commented 1 month ago
m-nt commented 1 month ago