instantiate prefab assigned in inspector c#

Hi,

I’m trying to instantiate a bullet from a c# script. I want to be able to specify the bullet in the inspector.

public Rigidbody m_Bullet;

Then I try to instantiate it as followed:

Rigidbody newBullet = (Rigidbody)Instantiate( m_Bullet, transform.position, transform.rotation );
newBullet.velocity = m_ShootingDirection * 25.0f;
Physics.IgnoreCollision( newBullet.collider, transform.root.collider );

This however doesn’t appear to be working properly, since it can’t cast to the Rigidbody. I did get it working using the following code:

GameObject bulletGameObj = Instantiate(Resources.Load("Towers/Default/p_BulletDefault"), transform.position + m_ShootingDirection*1.0f, Quaternion.identity) as GameObject;
Rigidbody newBullet = bulletGameObj.rigidbody;

But then I have to specify the path to the bullet, which I don’t want to hard-code… Is there any way I can add a prefab in the inspector ? (I could use a string assigned in the inspector, but I don’t really like that either, I want to be able to assign the prefab itself, is that possible?)

Thanks!

You probably want to instantiate a GameObject, and then grab its Rigidbody, as in your second example.

To set a prefab reference in the inspector, you can declare a public GameObject variable.