Closed m-nt closed 1 week 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)
@m-nt لطفا ریویو کنید
اررور داریم:
شرایط تست: همه 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);
}
}
}
در کد ItemActivator.cs خط 22 کد TimedItemManager.CounterText صدا زده میشه که مقدار itemName یک رشته خالی هست. مقدار متغییر ها در عکس زیر هست.
همونطور که تو عکس مشخصه متغییر 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)
در دو مورد بالا که اشاره شد مشکل اصلی به نظرم از کد GetCuuentDataAndTime میاد و باید چک کنی که فرمت اش درسته یا نه و زمانی که برمیگردونه مشکل نداشته باشه حتی اگه کابر آفلاین هست
مشکل رو ردگیری کردم و از خط 52 تا 57 کد TimedItemManager میاد.
و وقتی زمان رو از api دریافت میکنی به صورت دستی زمانی که میسازی "2024-10-1318:44:45"
این هست که در متقییر finalDatetime ذخیره میشه. که این با فرمتی که گفته شده تفاوت داره. در کل این مشک از فرمت زمانی میاد.
پیشنهاد من این تغییراته:
مشکل در انتخاب pet در سکانس Playing atlas. دکمه انتخاب pet بی تاثیر بوده و فقط فلش نمایش انتخاب pet رو اضافه میکنه به صفحه. در ابتدای بازی هم به صورت پیشفرض فلش های انتخاب pet مشخص هست که باید مخفی بشه یا در شروع بازی عمل مخفی سازی انجام بشه. کد مورد نظر برای چک کردن هم BuyCharacterBtn از خط 50 هست. این احتمالا بخواطر خراب شدن menu manager و restore کردنش از برنچ آپدیت بوده که تغییرات تو روی سکانس از دست رفته . لطفا تغییرات رو درست کن و حتما و حتما اونایی که رفرنس به سکانس ندارن رو روی پریفب ذخیره کن که اینطوری از دست نره
@m-nt سلام بی زحمت بررسی کنید که بریم برای مرج مشکلاتی که گفتید رفع شدن بی زحمت به قسمت هایی که string رو به DateTime تبدیل میکنن دست نزنین که از کار نیوفتن تشکر. استفاده ای که کردم همراه با تست بوده.
برای اینکه پروژه کار کنه هم پریفب TimeChecker که توی پوشه زیر قرار داره توی اولین صحنهای که بازی باز میشه میره توش قرار بدید.
\fortress-defense\Assets\Atlas games\Scripts\Shop\Prefab
@m-nt زحمتتون بی زحمت ریویو کنید مشکلاتی که فیلم فرستادید حل شد توی تلگرام هم دلیلشون توضیح داده شد تشکر، conflictهم سر بروز شدن پریفب هوم منو resolve شد
اررور داریم: بعد از استفاده از حباب، و رفتن به مرحله بعد این اتفاق میوفته که 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)
مشکل بعدی: بعد از استفاده از چوب ابعاد دشمن بزرگ میشه: اررور:
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)
کد 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()
راجع به بزرگ شدن اندازه دشمن ها وقتی در حاله ضربه زدن به قلعه هستن اتفاق میوفته
بعد از استفاده از shield در مراحل بعدی دیگه جون عادی قلعه رو نشون نمیده:
در بوست آیتم cool down کار نمیکنه: و اعداد نمایش داده شده اشتباهه
@m-nt
یسری مشکلات هست که حل نشده! اررور در سکانس Player atlas و Play atlas test:
برخی آبجکت های اضافه شده به سکانس ها به صورت prefab نیستند.