- Home /
Question by
WhiteKnight · Jan 01, 2012 at 04:33 PM ·
c#instantiateitweenpathexception
How do I "instantiate" a path with iTween?
I'm building a towerdefence where I instantiate lots of npc that follow a same path, but then I get the following error when I instantiate the second npc:
ArgumentException: An element with the same key already exists in the dictionary.
System.Collections.Generic.Dictionary`2[System.String,iTweenPath].Add (System.String key, .iTweenPath value)
iTweenPath.OnEnable () (at Assets/Pixelplacement/iTweenPath/iTweenPath.cs:39)
UnityEngine.Object:Instantiate(Object)
script_01_BeachTutorial:AddEnemy(GameObject, Vector3, String, Single) (at Assets/Scripts/Controls/Levels/script_01_BeachTutorial.cs:70)
script_01_BeachTutorial:Update() (at Assets/Scripts/Controls/Levels/script_01_BeachTutorial.cs:36)
And this is what I'm using to instantiate a new enemy:
void AddEnemy(GameObject EnemyType, Vector3 EnemyPosition, string PathToFollow, float PathTime)
{
GameObject Enemy = (GameObject)Instantiate(EnemyType);
script_EnemyWaypointer Script = Enemy.GetComponent<script_EnemyWaypointer>();
Enemy.transform.position = EnemyPosition;
Script.PathToFollow = PathToFollow;
Script.PathTime = PathTime;
Script.UseTimeAndIgnoreSpeed = true;
Script.WayPointTween();
}
ps: Sorry about the bold, it's just highlight text from code :)
Thanks in advance ^^
Comment
Answer by WhiteKnight · Jan 03, 2012 at 12:16 AM
SOLVED
It is caused by a bug in the iTweenPath.cs code (Thanks to NCarter)
LOCATION:
line 37: CORRECT VERSION
void OnEnable()
{
string lowerPathName = pathName.ToLower();
if (!paths.ContainsKey(lowerPathName))
{
paths.Add(lowerPathName, this);
}
}
But do be careful. If you have two or more paths with the same name active the OnComplete will only be called once.
Your answer

Follow this Question
Related Questions
Distribute terrain in zones 3 Answers
iTween Path swap 2 Answers
Instantiate prefab at specific path 1 Answer
Multiple Cars not working 1 Answer