public void BelieverDelete(int slotNumber) //게임오브젝트 삭제용
{
FarmBeliever farmBeliever; //클래스 변수
for (int i = believers.Count-1; i >= 0; --i)
{
farmBeliever = believers[i].GetComponent<FarmBeliever>(); //클래스 받아서
if (farmBeliever.slotNumber == slotNumber) //slotnumber가 같으면
{
Destroy(believers[i]); //파괴
believers.RemoveAt(i); //리스트에서 뺴기
break;
}
}
}
사라졌다고 에러 뜨는데 왜 그런지 아는 사람 제발 알려줘
Inspector창에서도 List에서 remove되는거 확인되는데 오류뜨니까 찝찝함
ObjectDisposedException: SerializedProperty believers.Array.data[3] has disappeared!
UnityEditor.SerializedProperty.get_objectReferenceInstanceIDValue () (at <78fe3e0b66cf40fc8dbec96aa3584483>:0)
UnityEditor.EditorGUIUtility.ObjectContent (UnityEngine.Object obj, System.Type type, UnityEditor.SerializedProperty property, UnityEditor.EditorGUI+ObjectFieldValidator validator) (at <78fe3e0b66cf40fc8dbec96aa3584483>:0)
UnityEditor.UIElements.ObjectField+ObjectFieldDisplay.Update () (at <78fe3e0b66cf40fc8dbec96aa3584483>:0)
UnityEditor.UIElements.ObjectField.UpdateDisplay () (at <78fe3e0b66cf40fc8dbec96aa3584483>:0)
UnityEngine.UIElements.VisualElement+SimpleScheduledItem.PerformTimerUpdate (UnityEngine.UIElements.TimerState state) (at <f6650f702d1247c2a5311a89b759ba03>:0)
UnityEngine.UIElements.TimerEventScheduler.UpdateScheduledEvents () (at <f6650f702d1247c2a5311a89b759ba03>:0)
UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.UpdateSchedulers () (at <f6650f702d1247c2a5311a89b759ba03>:0)
UnityEngine.UIElements.UIEventRegistration.UpdateSchedulers () (at <f6650f702d1247c2a5311a89b759ba03>:0)
UnityEditor.RetainedMode.UpdateSchedulers () (at <c13adcaa393d4fc0a9ba4ffdab6afde1>:0)
FarmBeliever가 Monobehaivour면 Destroy(believers[i].gameobject); 이렇게 해봐
아 그리고 그 전에 believers.RemoveAt(i);이랑 순서를 바꿔야겠네
해도 똑같이 뜬다
if (farmBeliever.slotNumber == slotNumber) { believers.RemoveAt(i); Destroy(believers[i].gameobjcet); break; } 이게 맞을듯?
이걸로 하니까
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index 이 오류 뜬다
정적배열로 해버릴까.. 해봤자 40개 받는데 많이 안좋나?
아 미안 if (farmBeliever.slotNumber == slotNumber) { believers.RemoveAt(i); Destroy(farmBeliever.gameobjcet); break; } 이렇게 하면 아마 오류 안 날거임
핸드폰으로 쓰는데 유니티 버전 22 3.16f1인데 리스트 public에서 private로 바꾸니까 해결됐다
어디서 실시간으로 Believers 리스트를 참조해서 표시하고있는거 아녀? - dc App
유니티 버전 22 3.16f1 인데 public으로 선언한 리스트를 private로 바꾸니까 해결됨..