- Home /
This post has been wikified, any user with enough reputation can edit it.
Question by
D3ltaVyyb · Aug 19, 2014 at 01:42 AM ·
c#dictionaryvalueskeys
Assigning a value to a Dictionary key changes other key values
Hi, Im, trying to work with a System.Collections.Generic.Dictionary
as Dictionary
. DataClass is my empty custom class which I extend from for different types of data,then add it to the main dictionary. It has worked up to a point, then I found when trying to assign a value to a key, then trying another after that, the last one assigns to all previous keys. Heres my code:
public class MyProblem : Monobehaviour
{
public class Container : DataClass //exrention of DataClass
{
public object[] dataValues;
}
public string roomKey = "Data1"; //This is switched depending on the current scene
Container roomCont = new Container();
void Start()
{
roomCont.dataValues = new object[1];
roomCont.dataValues[0] = Utils.Vector3ToFloat(transform.position);
}
IEnumerator runOnThisInstanceOnly()
{
roomCont.dataValues[0] = Utils.Vector3ToFloat(transform.position);
yield return new WaitforSeconds(.2f);
}
void Update()
{
//Manager.dataBase is the Dictionary<string,DataClass> in another script. Adding
the roomKey index with the container value
if (!Manager.dataBase.ContainsKey(roomKey))
Manager.dataBase.Add(roomKey, roomCont);
else
{
Manager.dataBase[roomKey] = roomCont;
print("key = "+roomKey+" "+Utils.FloatToVector3(roomCont.dataValues[0]));
//Printing the value I just added.
if (Manager.dataBase.ContainsKey("Data2"))
{
ItemDataCont da = (Container)Manager.dataBase["Data2"];
print("key = "+"Data2"+ " "+ Utils.FloatToVector3(da.dataValues[0]));
}
//printing another value from another active script with a different keyname
if (Manager.dataBase.ContainsKey("Data3"))
{
ItemDataCont da = (Container)Manager.dataBase["Data3"];
print("key = " + "Data3" + " " + Utils.FloatToVector3(da.dataValues[0]));
}
}
}
//printing yet a third value from another script.`
The problem is, all three prints return the same value,even though I'm only setting the key and leaving the others untouched.
Comment
Never$$anonymous$$d I fixed the problem temprorily...I was trying to get the position to store from a static source(Not like in the above code)...that see$$anonymous$$gly caused a problem in the Dictionary