- Home /
              This question was 
             closed Apr 27, 2019 at 03:09 PM by 
             Firox_ for the following reason: 
             
 
            The question is answered, right answer was accepted
 
               Question by 
               Firox_ · Apr 27, 2019 at 02:51 PM · 
                scripting problemeventeventsystemscript errorevent-listener  
              
 
              ArgumentException for UnityEvent
I try to add some listeners to an UnityEvent but there is these error at runtime: 
Here is the code in Room.cs (script where the UnityEvent is):
 private void Start()
 {
         if (closeDoors == null)
             closeDoors = new UnityEvent();
 
         if (openDoors == null)
             openDoors = new UnityEvent();
 }
 
 public GameObject RoomCreator(........)
 {
         GameObject roomPattern = Instantiate(room, new Vector3(anchor[0], anchor[1], 0),
                                    Quaternion.identity) as GameObject; //Instantiation
 
         roomPattern.transform.parent = parent; //Parent set
         if (type == Board.Type.Normal) //Name set
             roomPattern.name = "Room " + roomNumber;
         else if (type == Board.Type.Chest)
             roomPattern.name = "Chest";
         else if (type == Board.Type.Shop)
             roomPattern.name = "Shop";
         else
             roomPattern.name = "Boss";
 
         roomPattern.AddComponent<RoomManager>(); //Component set
 
         closeDoors.AddListener(gameObject.GetComponent<RoomManager>().CloseDoors); 
         
        openDoors.AddListener(gameObject.GetComponent<RoomManager>().OpenDoors);
 }
And here is the code in RoomManager.cs (where the method linked to the UnityEvent are):
 public void CloseDoors()
 {
         if (doors.Contains(Board.DoorPos.Up))
             gameObject.GetComponentInChildren<LayerFront>().SetTile(doorTiles.Tiles[(floor - 1) * 5]);
 
         foreach (LayerBehind script in gameObject.GetComponentsInChildren<LayerBehind>())
         {
             script.SetTiles(doors, doorTiles, floor);
         }
 }
 
 public void OpenDoors()
 {
         if (doors.Contains(Board.DoorPos.Up))
             gameObject.GetComponentInChildren<LayerFront>().ClearTile();
 
         foreach (LayerBehind script in gameObject.GetComponentsInChildren<LayerBehind>())
         {
             script.ClearTiles(doors);
         }
 }
I don't achieve to understand why I'm having this error. How can I fix it ?
Edit: I didn't notice that I don't search the component on the good GameObject. The error come from that.
 
                 
                capture.png 
                (11.0 kB) 
               
 
              
               Comment
              
 
               
               koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                