Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • 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 /
avatar image
0
Question by newnibie · Mar 04, 2015 at 04:35 PM · javascripterrormissingkeydictionary

Generic dictionary emptying itself?

Anyone know why a custom dictionary, generated and populated in code, would work fine for a while and then spontaneously lose all its entries?

I'm making a card game, often need to move an object relating to a card suit, and rather than searching for the object by name (which worked fine) I thought a dictionary would be more elegant... and it works perfectly for a while, then seemingly after a few minutes of gameplay, starts throwing up KeyNotFoundException: The given key was not present in the dictionary.

Trimmed down code as follows: (JS/US)

 #pragma strict
 
 import System.Collections.Generic;
 
 var plates = new Dictionary.<String,Transform>();
 var pct:Transform;
 var pdt:Transform;
 var pht:Transform;
 var pst:Transform;
 //the transforms are allocated manually in the editor
 
 function Start () {
     plates.Add("club",pct);
     plates.Add("diam",pdt);
     plates.Add("hear",pht);
     plates.Add("spad",pst);
 }

Then later, I'll want to move the "pct" object using something like:

 function selectcard(){
 ...
 var suit="club";
 plates[suit].position=Vector3(0,1.6,-1);
 ...
 }

Apologies for not posting full code, it's over 1000 lines dealing with other objects and events.

As I said earlier, it all works fine for a while then starts throwing up errors. Outside of Start() the dictionary is only ever referenced to change the transform's position, nothing added to or deleted from it.

I'm certain the dictionary is being emptied as I've checked using

 print(plates["club"]); //and likewise for "diam", "hear", "spad"
 print(plates.Count);

...all of which return the expected results until the error appears.

Are there any methods not directly related to dictionaries, which might be doing this as a side effect? I'm at a loss, may have to go back to GameObject.Find every time I move these items :/

Comment
Add comment · Show 2
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
avatar image newnibie · Mar 08, 2015 at 12:26 AM 0
Share

After much further testing, this might be happening when I make and save changes in $$anonymous$$onoDevelop during preview play; so hopefully won't affect the final build, but it would be nice to get more certainty about what is going on

avatar image Cherno · Mar 08, 2015 at 12:45 AM 0
Share

Well, Dictionaries can't be serialized so you might have to convert it to a custom class or two lists, one containing keys and one containing values and save those ins$$anonymous$$d, and repopulate it with the two deserialized lists after loading (assu$$anonymous$$g you use serialization).

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Setting Scroll View Width GUILayout 1 Answer

I have been watching his tutorial but nothing happens 0 Answers

For statement errors? 1 Answer

BCE0049 error with network script 0 Answers

Type could not be resolved because of a cycle. 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges