Can one add events to an instantiated object?

Hello community,

Just starting on unity and I was wondering if it was possible to add event listeners to objects that were instanciated:

var bullet : GameObject;

function Update () {
	if(Input.GetButtonUp('Jump')){
		bullet = GameObject.Instantiate(bullet, this.transform.position, this.transform.rotation);
		bullet.rigidbody.AddRelativeForce(Vector3(2000,0,0));
		
		// this is what I would like to do:
		bullet.on('collisionEnter', function(coll: Collider){
			Debug.Log('ok');
		});
	}
}
}

Or is the only way to create a script for the bullet behaviour itself?

My main interest would be to apply different listeners according to a given parameter.

Thanks

Step 1. Use c# so you can define events (JS can only subscribe to event IIRC).

Step 2. Create an event in your bullet class.

public class MuhBullet : MonoBehaviour 
{
	public string BulletId;
	
	public event Action BulletCollided; //event using the default Action delegate
	
	public Delegate void CollisionWithDataDelegate(Collision collision, string name)
	public event CollisionWithDataDelegate BulletDataCollision; //example with custom delegate
	
	void OnCollisionEnter(Collision collision) 
	{	
		if (BulletCollided!=null) BulletCollided(); //Raise event, if subscribers
		
		if (BulletDataCollision != null) BulletDataCollision(collision, BulletId); //Raise a different one that has data, if subscribers
	}
}

Step 3. Subscribe to event.

bullet = GameObject.Instantiate(bullet, this.transform.position, this.transform.rotation);
bullet.BulletId = "Bill";

bullet.BulletCollided += DoSomethingOnBulletCollision;
bullet.BulletDataCollision += DoSomethingWithData;

bullet.rigidbody.AddRelativeForce(Vector3(2000,0,0));

//somewhere else
public void DoSomethingOnBulletCollision()
{
    Debug.Log("Bullet collided!");
}

public void DoSomethingWithData(Collision collision, string name)
{
    Debug.Log("A bullet of the following name collided: " + name);
}

Step 4. Do cool things and be happy.