• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
This question was closed May 26, 2016 at 07:27 PM by ninja_gear for the following reason:

i solved it

avatar image
0
Question by ninja_gear · May 26, 2016 at 07:52 PM · coroutineienumeratorcoroutinescoroutine errorscollections

Collection Change During Iteration

So I am making an RPG. In order to determine whether enemies/items will be present on the map I have decided to check an XML file after the scene has loaded and destroy any objects that are not supposed to be there. It almost works fantastic. A New or Saved game has a Mapfile of all the locations in the world map that you are currently on. When you load a game the Mapfile is broken up into LocationFile's, and when you load a scene of a location, that LocationFile is broken up into SceneObjectFiles for each of the scenes associated with that location. When the scene is fully loaded, the game checks the SceneObjectFiles to strip the not supposed to be present GameObjects from the scene.

And here is the crash... When the SceneObjects OnEnable() or OnDisable(), they fire an event to tell their manager they have enabled/disabled, and they are added/removed from a list. I am attempting to use that list to find the GameObjects to Destroy, but I get this error (even tho I have tried WaitForSeconds()):

"InvalidOperationException: Collection was modified; enumeration operation may not execute."

     IEnumerator setObjects(SceneObjectsFile data)
     {
         foreach (var sobj in data.sceneObjects)
         {
             foreach (var mobj in ActionDirector.MapEnts)
             {
                 if (mobj.name == sobj.name && sobj.state != "Alive")
                 {
                     GameObject.Destroy(mobj.gameObject);
                 }
             }
         }
         yield return null;
     }
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

  • Sort: 

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Coroutines not passing yield 1 Answer

Had difficulties implementing intro to Coroutines from unitypatterns.com. Help? 1 Answer

Use Coroutine when object rotates 2 Answers

Coroutine not working - what I did wrong? 2 Answers

Does UnityEngine.CustomeYieldInstruction works in a seperate thread? 2 Answers

  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges